diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 55ba359c6c84..02004e79246f 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -1092,8 +1092,20 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh if (!myHolder.hasErrorResults()) visitExpression(expression); - if (!myHolder.hasErrorResults()) - myHolder.add(HighlightUtil.checkPreviewFeatureElement(expression, expression.resolveMethod(), myLanguageLevel)); + if (!myHolder.hasErrorResults()) { + final PsiModifierListOwner owner = getTargetOfNewExpression(expression); + myHolder.add(HighlightUtil.checkPreviewFeatureElement(expression, owner, myLanguageLevel)); + } + } + + @Nullable + private static PsiModifierListOwner getTargetOfNewExpression(@NotNull final PsiNewExpression expression) { + final PsiMethod method = expression.resolveMethod(); + if (method != null) return method; + + final PsiJavaCodeReferenceElement reference = expression.getClassOrAnonymousClassReference(); + if (reference == null) return null; + return ObjectUtils.tryCast(reference.resolve(), PsiModifierListOwner.class); } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/CallConstructorWithPreviewFeature.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/CallConstructorWithPreviewFeature.java index 7ba06c254231..b6d0c16ab3b5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/CallConstructorWithPreviewFeature.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/CallConstructorWithPreviewFeature.java @@ -15,6 +15,9 @@ class Main { new Main(42l); new Main("42"); new Main(42); + new org.myorg.preview.FromPreview() { + public void g(){} + }; } }