From 57b2f30acdf9ae143be00a3a52431bcfc747c375 Mon Sep 17 00:00:00 2001 From: Bart van Helvert Date: Wed, 9 Nov 2022 16:55:49 +0100 Subject: [PATCH] [jvm] Fix double highlighting for qualified expressions in dependency inspection GitOrigin-RevId: f04115b9aff3f3fc1cf2fa7dcf6270461d1b306a --- .../JavaDependencyVisitorFactory.java | 7 +++---- .../tests/java/JavaDependencyInspectionTest.kt | 12 ++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/packageDependencies/JavaDependencyVisitorFactory.java b/java/java-impl/src/com/intellij/packageDependencies/JavaDependencyVisitorFactory.java index d7753e9cff6b..8f5de47adaba 100644 --- a/java/java-impl/src/com/intellij/packageDependencies/JavaDependencyVisitorFactory.java +++ b/java/java-impl/src/com/intellij/packageDependencies/JavaDependencyVisitorFactory.java @@ -38,21 +38,20 @@ public class JavaDependencyVisitorFactory extends DependencyVisitorFactory { @Override public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) { + if (expression.getParent() instanceof PsiReferenceExpression expr && expr.isQualified()) return; visitReferenceElement(expression); } @Override public void visitElement(@NotNull PsiElement element) { - super.visitElement(element); processElement(element); + super.visitElement(element); } private void processElement(@NotNull PsiElement element) { for (PsiReference ref : element.getReferences()) { PsiElement resolved = ref.resolve(); - if (resolved != null) { - myProcessor.process(ref.getElement(), resolved); - } + if (resolved != null) myProcessor.process(ref.getElement(), resolved); } } diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/JavaDependencyInspectionTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/JavaDependencyInspectionTest.kt index fe26392998ee..41a9476978fb 100644 --- a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/JavaDependencyInspectionTest.kt +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/JavaDependencyInspectionTest.kt @@ -39,6 +39,18 @@ class JavaDependencyInspectionTest : DependencyInspectionTestBase() { } """.trimIndent(), skipImports = true) + fun `test illegal imported dependency qualified expression`() = dependencyViolationTest(javaFooFile, "ImportClientJava.java", """ + package pkg.client; + + import pkg.api.JavaFoo; + + class Client { + public static void main(String[] args) { + JavaFoo.foo(); + } + } + """.trimIndent(), skipImports = true) + fun `test illegal fully qualified dependency Java API`() = dependencyViolationTest(javaFooFile, "FqClientJava.java", """ package pkg.client;