diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java
index 82e007855865..a12b62a69671 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java
@@ -164,6 +164,15 @@ class RefCountHolder {
if (resolveScope instanceof PsiImportStatementBase) {
registerImportStatement(ref, (PsiImportStatementBase)resolveScope);
}
+ else if (refElement == null && ref instanceof PsiJavaReference) {
+ for (JavaResolveResult result : ((PsiJavaReference)ref).multiResolve(true)) {
+ resolveScope = result.getCurrentFileResolveScope();
+ if (resolveScope instanceof PsiImportStatementBase) {
+ registerImportStatement(ref, (PsiImportStatementBase)resolveScope);
+ break;
+ }
+ }
+ }
}
private void registerImportStatement(@NotNull PsiReference ref, @NotNull PsiImportStatementBase importStatement) {
diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedImport/ImportsAreUsedVisitor.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedImport/ImportsAreUsedVisitor.java
index 5264dc1eb5fa..bf0a56b20056 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedImport/ImportsAreUsedVisitor.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedImport/ImportsAreUsedVisitor.java
@@ -71,7 +71,13 @@ class ImportsAreUsedVisitor extends JavaRecursiveElementWalkingVisitor {
}
// during typing there can be incomplete code
final JavaResolveResult resolveResult = reference.advancedResolve(true);
- final PsiElement element = resolveResult.getElement();
+ PsiElement element = resolveResult.getElement();
+ if (element == null) {
+ JavaResolveResult[] results = reference.multiResolve(false);
+ if (results.length > 0) {
+ element = results[0].getElement();
+ }
+ }
if (!(element instanceof PsiMember)) {
return;
}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/unusedImports/UnresolvedReferencesInsideAmbiguousCallToImportedMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/unusedImports/UnresolvedReferencesInsideAmbiguousCallToImportedMethod.java
new file mode 100644
index 000000000000..644d9ea770b2
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/unusedImports/UnresolvedReferencesInsideAmbiguousCallToImportedMethod.java
@@ -0,0 +1,6 @@
+import static a.A.foo;
+class Test {
+ {
+ foo(unresolvedMethodCall());
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/UnusedImportsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/UnusedImportsTest.java
index a1e963a7f002..745249e364c1 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/UnusedImportsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/UnusedImportsTest.java
@@ -92,6 +92,14 @@ public class UnusedImportsTest extends LightCodeInsightFixtureTestCase {
myFixture.checkHighlighting(true,false, false);
}
+ public void testUnresolvedReferencesInsideAmbiguousCallToImportedMethod() {
+ myFixture.addClass("package a; public class A {\n" +
+ " public static void foo(Object o) {}\n" +
+ " public static void foo(String s) {}\n" +
+ "}");
+ doTest();
+ }
+
private void doTest() {
myFixture.configureByFile(getTestName(false) + ".java");
myFixture.checkHighlighting(true, false, false);
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/imports/globalInspection/UnresolvedReferencesInsideAmbiguousCallToImportedMethod/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/imports/globalInspection/UnresolvedReferencesInsideAmbiguousCallToImportedMethod/expected.xml
new file mode 100644
index 000000000000..216a575c3ed4
--- /dev/null
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/imports/globalInspection/UnresolvedReferencesInsideAmbiguousCallToImportedMethod/expected.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/imports/UnusedImportGlobalInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/imports/UnusedImportGlobalInspectionTest.java
index 665551c335c9..4dc0a6610f45 100644
--- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/imports/UnusedImportGlobalInspectionTest.java
+++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/imports/UnusedImportGlobalInspectionTest.java
@@ -83,6 +83,21 @@ public class UnusedImportGlobalInspectionTest extends LightCodeInsightFixtureTes
"}}");
}
+
+ public void testUnresolvedReferencesInsideAmbiguousCallToImportedMethod() {
+ myFixture.addClass("package a; public class A {\n" +
+ " public static void foo(Object o) {}\n" +
+ " public static void foo(String s) {}\n" +
+ "}");
+ doTest("import static a.A.foo;\n" +
+ "class Test {\n" +
+ " {\n" +
+ " foo(unresolvedMethodCall());\n" +
+ " }\n" +
+ "}");
+ }
+
+
public void testNoHighlightingInInvalidCode() {
myFixture.configureByText("a.java",
"import\n" +