Skip to content

Commit ef3d8dd

Browse files
datho7561Rob Stryker
authored andcommitted
Fix some test cases for this completion
Signed-off-by: David Thompson <[email protected]>
1 parent ad2c511 commit ef3d8dd

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
import org.eclipse.jdt.core.dom.IfStatement;
9090
import org.eclipse.jdt.core.dom.ImportDeclaration;
9191
import org.eclipse.jdt.core.dom.InfixExpression;
92+
import org.eclipse.jdt.core.dom.Initializer;
9293
import org.eclipse.jdt.core.dom.Javadoc;
9394
import org.eclipse.jdt.core.dom.LambdaExpression;
9495
import org.eclipse.jdt.core.dom.MarkerAnnotation;
@@ -98,6 +99,7 @@
9899
import org.eclipse.jdt.core.dom.MethodInvocation;
99100
import org.eclipse.jdt.core.dom.MethodRef;
100101
import org.eclipse.jdt.core.dom.Modifier;
102+
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
101103
import org.eclipse.jdt.core.dom.ModuleDeclaration;
102104
import org.eclipse.jdt.core.dom.Name;
103105
import org.eclipse.jdt.core.dom.NormalAnnotation;
@@ -131,7 +133,6 @@
131133
import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
132134
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
133135
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
134-
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
135136
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
136137
import org.eclipse.jdt.core.search.IJavaSearchConstants;
137138
import org.eclipse.jdt.core.search.IJavaSearchScope;
@@ -168,6 +169,7 @@ public class DOMCompletionEngine implements ICompletionEngine {
168169
PrimitiveType.DOUBLE.toString().toCharArray(),
169170
PrimitiveType.FLOAT.toString().toCharArray(),
170171
PrimitiveType.CHAR.toString().toCharArray());
172+
private static final String STATIC = "static";
171173

172174
private final CompletionRequestor requestor;
173175
private final SearchableEnvironment nameEnvironment;
@@ -941,11 +943,14 @@ public void complete(org.eclipse.jdt.internal.compiler.env.ICompilationUnit sour
941943
}
942944
if (!(this.toComplete instanceof Type)) {
943945
AbstractTypeDeclaration parentTypeDeclaration = DOMCompletionUtil.findParentTypeDeclaration(context);
944-
if (parentTypeDeclaration != null) {
946+
MethodDeclaration methodDecl = (MethodDeclaration)DOMCompletionUtil.findParent(this.toComplete, new int[] { ASTNode.METHOD_DECLARATION });
947+
if (parentTypeDeclaration != null && methodDecl != null && (methodDecl.getModifiers() & Flags.AccStatic) == 0) {
945948
ITypeBinding currentTypeBinding = parentTypeDeclaration.resolveBinding();
946949
if (currentTypeBinding.isSubTypeCompatible(qualifierTypeBinding)) {
947950
if (!isFailedMatch(this.prefix.toCharArray(), Keywords.THIS)) {
948-
this.requestor.accept(createKeywordProposal(Keywords.THIS, startPos, endPos));
951+
CompletionProposal res = createKeywordProposal(Keywords.THIS, startPos, endPos);
952+
res.setRelevance(res.getRelevance() + RelevanceConstants.R_NON_INHERITED);
953+
this.requestor.accept(res);
949954
}
950955
if (!isFailedMatch(this.prefix.toCharArray(), Keywords.SUPER)) {
951956
this.requestor.accept(createKeywordProposal(Keywords.SUPER, startPos, endPos));
@@ -2028,6 +2033,12 @@ private void statementLikeKeywords() {
20282033
}
20292034
}
20302035
}
2036+
MethodDeclaration methodDecl = (MethodDeclaration) DOMCompletionUtil.findParent(this.toComplete, new int[] { ASTNode.METHOD_DECLARATION });
2037+
Initializer initializer = (Initializer) DOMCompletionUtil.findParent(this.toComplete, new int[] { ASTNode.INITIALIZER });
2038+
if (methodDecl != null && (methodDecl.getModifiers() & Flags.AccStatic) == 0
2039+
|| initializer != null && !STATIC.equals(this.textContent.substring(initializer.getStartPosition(), initializer.getStartPosition() + STATIC.length()))) {
2040+
keywords.add(Keywords.THIS);
2041+
}
20312042
for (char[] keyword : keywords) {
20322043
if (!isFailedMatch(this.toComplete.toString().toCharArray(), keyword)) {
20332044
this.requestor.accept(createKeywordProposal(keyword, this.toComplete.getStartPosition(), this.offset));

0 commit comments

Comments
 (0)