diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/preview/PreviewFeatureInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/preview/PreviewFeatureInspection.java
index 6499651e05e8..e41a498f4eba 100644
--- a/java/java-impl-inspections/src/com/intellij/codeInspection/preview/PreviewFeatureInspection.java
+++ b/java/java-impl-inspections/src/com/intellij/codeInspection/preview/PreviewFeatureInspection.java
@@ -5,10 +5,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.PreviewFeatureVisitorBase;
import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.pom.java.JavaFeature;
-import com.intellij.psi.PsiAnnotation;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiElementVisitor;
-import com.intellij.psi.PsiImportStatementBase;
+import com.intellij.psi.*;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
@@ -42,6 +39,12 @@ public final class PreviewFeatureInspection extends LocalInspectionTool {
protected void registerProblem(PsiElement element, String description, JavaFeature feature, PsiAnnotation annotation) {
// Do not report warnings in imports, because they cannot be suppressed and javac doesn't report them
if (element.getParent() instanceof PsiImportStatementBase) return;
+ if (element instanceof PsiReferenceExpression ref) {
+ PsiElement nameElement = ref.getReferenceNameElement();
+ if (nameElement != null) {
+ element = nameElement;
+ }
+ }
myHolder.registerProblem(element, description);
}
}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/java.base/jdk.internal/PreviewFeatureMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/java.base/jdk.internal/PreviewFeatureMethod.java
new file mode 100644
index 000000000000..31ac1bd2c919
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/java.base/jdk.internal/PreviewFeatureMethod.java
@@ -0,0 +1,6 @@
+package com.mycom;
+
+public interface PreviewFeatureMethod {
+ @jdk.internal.PreviewFeature(feature = jdk.internal.PreviewFeature.Feature.SEALED_CLASSES)
+ void f();
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessInnerClassInsidePreviewFeatureClass.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessInnerClassInsidePreviewFeatureClass.java
index 17b80bc23f14..e3ddde53f84a 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessInnerClassInsidePreviewFeatureClass.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessInnerClassInsidePreviewFeatureClass.java
@@ -5,10 +5,10 @@ class Main {
public Main(String s) { }
{
var a = new FirstPreviewFeature.Outer.Inner();
- a.z();
- Runnable r = a::z;
- new Main(FirstPreviewFeature.KEY);
- new Main(FirstPreviewFeature.KEY + "");
- new Main("" + FirstPreviewFeature.KEY);
+ a.z();
+ Runnable r = a::z;
+ new Main(FirstPreviewFeature.KEY);
+ new Main(FirstPreviewFeature.KEY + "");
+ new Main("" + FirstPreviewFeature.KEY);
}
}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessStaticMethodInPreviewFeatureClass.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessStaticMethodInPreviewFeatureClass.java
index dbd145d36a1f..03d99e67c649 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessStaticMethodInPreviewFeatureClass.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/AccessStaticMethodInPreviewFeatureClass.java
@@ -3,7 +3,7 @@ import com.mycom.FirstPreviewFeature;
class Main {
{
- FirstPreviewFeature.g();
- Runnable r = FirstPreviewFeature::g;
+ FirstPreviewFeature.g();
+ Runnable r = FirstPreviewFeature::g;
}
}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/CallPreviewMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/CallPreviewMethod.java
new file mode 100644
index 000000000000..ab42a9bc8fb9
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/warnings/CallPreviewMethod.java
@@ -0,0 +1,8 @@
+
+import com.mycom.PreviewFeatureMethod;
+
+class Main {
+ void test(PreviewFeatureMethod m){
+ m.f();
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/previewfeature/PreviewFeatureWarningsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/previewfeature/PreviewFeatureWarningsTest.java
index bfb52d061ff9..4722e70b33ff 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/previewfeature/PreviewFeatureWarningsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/previewfeature/PreviewFeatureWarningsTest.java
@@ -18,13 +18,15 @@ public final class PreviewFeatureWarningsTest extends LightJavaCodeInsightFixtur
myFixture.enableInspections(PreviewFeatureInspection.class);
myFixture.configureByFiles(
BASE_PATH + "/../java.base/jdk.internal/PreviewFeature.java",
- BASE_PATH + "/../java.base/jdk.internal/FirstPreviewFeature.java"
+ BASE_PATH + "/../java.base/jdk.internal/FirstPreviewFeature.java",
+ BASE_PATH + "/../java.base/jdk.internal/PreviewFeatureMethod.java"
);
}
public void testImplementsPreviewFeature() { doTest(); }
public void testAccessInnerClassInsidePreviewFeatureClass() { doTest(); }
public void testAccessStaticMethodInPreviewFeatureClass() { doTest(); }
+ public void testCallPreviewMethod() { doTest(); }
public void testSuppressPreviewFeatureWarning() { doTest(); }
@Override