diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 9163c6b774a2..0334022f88d4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -809,12 +809,15 @@ public class JavaCompletionUtil { PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getDocument()); final CommonCodeStyleSettings styleSettings = context.getCodeStyleSettings(); - ParenthesesInsertHandler.getInstance(hasParams, - styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES, - styleSettings.SPACE_WITHIN_METHOD_CALL_PARENTHESES && hasParams, - needRightParenth, - styleSettings.METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE - ).handleInsert(context, item); + final PsiElement elementAt = file.findElementAt(context.getStartOffset()); + if (elementAt == null || !(elementAt.getParent() instanceof PsiMethodReferenceExpression)) { + ParenthesesInsertHandler.getInstance(hasParams, + styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES, + styleSettings.SPACE_WITHIN_METHOD_CALL_PARENTHESES && hasParams, + needRightParenth, + styleSettings.METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE + ).handleInsert(context, item); + } if (hasParams) { // Invoke parameters popup diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java index 65273dcb8897..8a0d87ff567a 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java @@ -22,10 +22,13 @@ import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.source.resolve.ResolveCache; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.infos.CandidateInfo; +import com.intellij.psi.scope.ElementClassFilter; import com.intellij.psi.scope.PsiConflictResolver; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.scope.conflictResolvers.DuplicateConflictResolver; +import com.intellij.psi.scope.processor.FilterScopeProcessor; import com.intellij.psi.scope.processor.MethodCandidatesProcessor; +import com.intellij.psi.scope.util.PsiScopesUtil; import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.PsiUtil; import com.intellij.util.SmartList; @@ -70,7 +73,8 @@ public class PsiMethodReferenceExpressionImpl extends PsiReferenceExpressionBase @Override public void processVariants(final PsiScopeProcessor processor) { - // todo[r.sh]: implement + final FilterScopeProcessor proc = new FilterScopeProcessor(ElementClassFilter.METHOD, processor); + PsiScopesUtil.resolveAndWalk(proc, this, null, true); } @NotNull