diff options
author | Till Brychcy | 2017-08-23 22:49:51 +0000 |
---|---|---|
committer | Till Brychcy | 2018-01-12 14:39:23 +0000 |
commit | 90dbec1ca3a0198af184c40ae0d2a321b7d5ec3c (patch) | |
tree | 27710444c5add55a267fe160f813c71677db97fe | |
parent | ee8312f2124c13f010fdd93befc1e41e3130be35 (diff) | |
download | eclipse.jdt.ui-90dbec1ca3a0198af184c40ae0d2a321b7d5ec3c.tar.gz eclipse.jdt.ui-90dbec1ca3a0198af184c40ae0d2a321b7d5ec3c.tar.xz eclipse.jdt.ui-90dbec1ca3a0198af184c40ae0d2a321b7d5ec3c.zip |
Bug 521331 - [testsources][assist] Handle test source visibility in
completion proposals
Change-Id: I924dd481103e57954665b764240aba095d7a0017
Signed-off-by: Till Brychcy <register.eclipse@brychcy.de>
-rwxr-xr-x | org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java index ebeeff8a5d..2fe7199c38 100755 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java @@ -19,6 +19,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -30,6 +31,7 @@ import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jdt.core.CompletionContext; import org.eclipse.jdt.core.CompletionProposal; import org.eclipse.jdt.core.CompletionRequestor; +import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; @@ -127,6 +129,8 @@ public class CompletionProposalCollector extends CompletionRequestor { */ private JavaContentAssistInvocationContext fInvocationContext; + private boolean fIsTestCodeExcluded; + /** * Creates a new instance ready to collect proposals. If the passed * <code>ICompilationUnit</code> is not contained in an @@ -164,12 +168,41 @@ public class CompletionProposalCollector extends CompletionRequestor { super(ignoreAll); fJavaProject= project; fCompilationUnit= cu; + + fIsTestCodeExcluded = !isTestSource(project, cu); fUserReplacementLength= -1; if (!ignoreAll) { setRequireExtendedContext(true); } } + + private boolean isTestSource(IJavaProject project, ICompilationUnit cu) { + try { + IClasspathEntry[] resolvedClasspath= project.getResolvedClasspath(true); + final IPath resourcePath= cu.getResource().getFullPath(); + for (IClasspathEntry e : resolvedClasspath) { + if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) { + if (e.isTest()) { + if (e.getPath().isPrefixOf(resourcePath)) { + return true; + } + } + } + } + } catch (JavaModelException e) { + return false; + } + return false; + } + + /** + * @since 3.14 + */ + @Override + public boolean isTestCodeExcluded() { + return fIsTestCodeExcluded; + } /** * Creates a new instance ready to collect proposals. If the passed |