From 67d6396df2db4c8647d8bbbddad29a8743639f77 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 27 Sep 2012 15:49:45 +0200 Subject: [PATCH] method refs: mark method as registered in RefCountHolder --- .../daemon/impl/analysis/HighlightVisitorImpl.java | 10 ++++++++++ .../UsedMethodsByMethodReferences.java | 12 ++++++++++++ .../daemon/LightAdvHighlightingJdk7Test.java | 1 + 3 files changed, 23 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/UsedMethodsByMethodReferences.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 8efd04e45da3..51c47095e176 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -967,6 +967,16 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh @Override public void visitMethodReferenceExpression(PsiMethodReferenceExpression expression) { myHolder.add(HighlightUtil.checkMethodReferencesFeature(expression)); + JavaResolveResult result; + try { + result = expression.advancedResolve(true); + } + catch (IndexNotReadyException e) { + return; + } + if (myRefCountHolder != null) { + myRefCountHolder.registerReference(expression, result); + } } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/UsedMethodsByMethodReferences.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/UsedMethodsByMethodReferences.java new file mode 100644 index 000000000000..c5d09000aa15 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/UsedMethodsByMethodReferences.java @@ -0,0 +1,12 @@ +class C { + interface Simplest { + void m(); + } + private static void simplest1() { } + private static void simplest() { } + + public static void main(String[] args) { + Simplest o = C::simplest1; + System.out.println(o); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java index 86db9c6b7121..ae05e2cb85f5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java @@ -160,5 +160,6 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { public void testClassLiteral() throws Exception { doTest(false, false); } public void testExtensionMethods() throws Exception { doTest(false, false); } public void testMethodReferences() throws Exception { doTest(false, true, false); } + public void testUsedMethodsByMethodReferences() throws Exception { doTest(true, true, false); } public void testLambdaExpressions() throws Exception { doTest(false, true, false); } }