diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java index 7de1e1d30211..b93bf2a60638 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java @@ -25,10 +25,8 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleSettingsFacade; -import com.intellij.psi.filters.AndFilter; -import com.intellij.psi.filters.ConstructorFilter; -import com.intellij.psi.filters.NotFilter; -import com.intellij.psi.filters.OrFilter; +import com.intellij.psi.filters.*; +import com.intellij.psi.filters.element.ModifierFilter; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.impl.PsiManagerEx; @@ -450,7 +448,17 @@ public class PsiReferenceExpressionImpl extends PsiReferenceExpressionBase imple if (isQualified()) { filter.addFilter(ElementClassFilter.PACKAGE_FILTER); } - filter.addFilter(new AndFilter(ElementClassFilter.METHOD, new NotFilter(new ConstructorFilter()))); + filter.addFilter(new AndFilter(ElementClassFilter.METHOD, new NotFilter(new ConstructorFilter()), new ElementFilter() { + @Override + public boolean isAcceptable(Object element, @Nullable PsiElement context) { + return LambdaUtil.isValidQualifier4InterfaceStaticMethodCall((PsiMethod)element, PsiReferenceExpressionImpl.this); + } + + @Override + public boolean isClassAcceptable(Class hintClass) { + return true; + } + })); filter.addFilter(ElementClassFilter.VARIABLE); FilterScopeProcessor filterProcessor = new FilterScopeProcessor(filter, processor) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/completion/normal/SelfStaticsOnly.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/completion/normal/SelfStaticsOnly.java new file mode 100644 index 000000000000..b9f90eb26b39 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/completion/normal/SelfStaticsOnly.java @@ -0,0 +1,14 @@ +interface Function { + public R apply(T t); + + static Function baz() { + return k -> k; + } +} + +interface IFunction extends Function { + static void bar() {} + static void ba() { + ba + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.java new file mode 100644 index 000000000000..bb5f0a2ee253 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.daemon.lambda; + +import com.intellij.JavaTestUtil; +import com.intellij.codeInsight.completion.LightFixtureCompletionTestCase; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; + +/** + * User: anna + */ +public class Normal8CompletionTest extends LightFixtureCompletionTestCase { + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return JAVA_LATEST; + } + + @Override + protected String getBasePath() { + return JavaTestUtil.getRelativeJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/lambda/completion/normal/"; + } + + public void testSelfStaticsOnly() throws Exception { + configureByFile("SelfStaticsOnly.java"); + assertStringItems("ba", "bar"); + } +}