Skip to content

Commit e6c9b17

Browse files
committed
Complete on method name without expression
1 parent edeaf83 commit e6c9b17

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@
9898
import org.eclipse.jdt.core.dom.IfStatement;
9999
import org.eclipse.jdt.core.dom.ImportDeclaration;
100100
import org.eclipse.jdt.core.dom.InfixExpression;
101-
import org.eclipse.jdt.core.dom.InfixExpression.Operator;
102101
import org.eclipse.jdt.core.dom.Initializer;
103102
import org.eclipse.jdt.core.dom.InstanceofExpression;
104103
import org.eclipse.jdt.core.dom.Javadoc;
@@ -110,7 +109,6 @@
110109
import org.eclipse.jdt.core.dom.MethodInvocation;
111110
import org.eclipse.jdt.core.dom.MethodRef;
112111
import org.eclipse.jdt.core.dom.Modifier;
113-
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
114112
import org.eclipse.jdt.core.dom.ModuleDeclaration;
115113
import org.eclipse.jdt.core.dom.Name;
116114
import org.eclipse.jdt.core.dom.NodeFinder;
@@ -151,6 +149,8 @@
151149
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
152150
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
153151
import org.eclipse.jdt.core.dom.WhileStatement;
152+
import org.eclipse.jdt.core.dom.InfixExpression.Operator;
153+
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
154154
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
155155
import org.eclipse.jdt.core.search.IJavaSearchConstants;
156156
import org.eclipse.jdt.core.search.IJavaSearchScope;
@@ -735,21 +735,16 @@ public void complete(org.eclipse.jdt.internal.compiler.env.ICompilationUnit sour
735735
suggestDefaultCompletions = false;
736736
}
737737
if (context instanceof MethodInvocation invocation) {
738-
if (this.offset <= invocation.getName().getStartPosition() + invocation.getName().getLength()) {
738+
if (this.offset >= invocation.getName().getStartPosition() && this.offset <= invocation.getName().getStartPosition() + invocation.getName().getLength()) {
739739
Expression expression = invocation.getExpression();
740-
if (expression == null) {
741-
return;
742-
}
743-
// complete name
744-
ITypeBinding type = expression.resolveTypeBinding();
745-
if (type != null) {
746-
processMembers(expression, type, specificCompletionBindings, false);
747-
specificCompletionBindings.all()
748-
.filter(binding -> this.pattern.matchesName(this.prefix.toCharArray(), binding.getName().toCharArray()))
749-
.filter(IMethodBinding.class::isInstance)
750-
.map(binding -> toProposal(binding))
751-
.forEach(this.requestor::accept);
752-
}
740+
ITypeBinding type = expression == null
741+
? DOMCompletionUtil.findParentTypeDeclaration(context).resolveBinding()
742+
: expression.resolveTypeBinding();
743+
processMembers(invocation, type, specificCompletionBindings, false);
744+
specificCompletionBindings.all()
745+
.filter(binding -> this.pattern.matchesName(this.prefix.toCharArray(), binding.getName().toCharArray()))
746+
.map(binding -> toProposal(binding))
747+
.forEach(this.requestor::accept);
753748
suggestDefaultCompletions = false;
754749
} else if (invocation.getStartPosition() + invocation.getLength() <= this.offset && this.prefix.isEmpty()) {
755750
// handle `myMethod().|`

0 commit comments

Comments
 (0)