diff --git a/plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties b/plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties index 93773c949b82..151be56fd24a 100644 --- a/plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties +++ b/plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties @@ -187,7 +187,7 @@ inspections.plugin.xml.invalid.order.attribute=Invalid 'order' attribute value invalid.order.attribute.part=Invalid ''order'' attribute value part: ''{0}'', must be ''first'', ''last'', ''before '' or ''after '' inspections.unstable.api.usage.annotations.list=Unstable API annotations -inspections.unstable.api.usage.description=''{0}'' is unstable +inspections.unstable.api.usage.description=''{0}'' is marked unstable ant.build.jar.comment=Build archive for plugin ''{0}'' ant.build.jar.description=Build plugin archive for module ''{0}'' diff --git a/plugins/devkit/devkit-core/src/inspections/UnstableApiUsageInspection.java b/plugins/devkit/devkit-core/src/inspections/UnstableApiUsageInspection.java index ee7d04417669..c828423e3e43 100644 --- a/plugins/devkit/devkit-core/src/inspections/UnstableApiUsageInspection.java +++ b/plugins/devkit/devkit-core/src/inspections/UnstableApiUsageInspection.java @@ -6,10 +6,12 @@ import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.siyeh.ig.ui.ExternalizableStringSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,6 +50,10 @@ public class UnstableApiUsageInspection extends LocalInspectionTool { @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!isApplicable(holder.getProject())) { + return PsiElementVisitor.EMPTY_VISITOR; + } + return new PsiElementVisitor() { @Override public void visitElement(PsiElement element) { @@ -67,13 +73,19 @@ public class UnstableApiUsageInspection extends LocalInspectionTool { } PsiModifierListOwner modifierListOwner = (PsiModifierListOwner)resolvedElement; + boolean problemRegistered = false; for (String annotation : unstableApiAnnotations) { if (modifierListOwner.hasAnnotation(annotation)) { holder.registerProblem(reference, DevKitBundle.message("inspections.unstable.api.usage.description", getReferenceText(reference)), ProblemHighlightType.GENERIC_ERROR_OR_WARNING); + problemRegistered = true; + break; } } + if (problemRegistered) { + break; + } } } }; @@ -106,4 +118,15 @@ public class UnstableApiUsageInspection extends LocalInspectionTool { // references are not PsiQualifiedReference for annotation attributes return StringUtil.getShortName(reference.getCanonicalText()); } + + private boolean isApplicable(@NotNull Project project) { + JavaPsiFacade javaPsiFacade = JavaPsiFacade.getInstance(project); + GlobalSearchScope scope = GlobalSearchScope.allScope(project); + for (String annotation : unstableApiAnnotations) { + if (javaPsiFacade.findClass(annotation, scope) != null) { + return true; + } + } + return false; + } } diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.java b/plugins/devkit/devkit-java-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.java index c6f5c4801f4d..5f4585752093 100644 --- a/plugins/devkit/devkit-java-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.java +++ b/plugins/devkit/devkit-java-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.java @@ -1,44 +1,44 @@ -import pkg.ExperimentalClass; -import static pkg.ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; -import static pkg.ExperimentalClass.staticNonExperimentalMethodInExperimentalClass; -import static pkg.ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; -import static pkg.ExperimentalClass.staticExperimentalMethodInExperimentalClass; +import pkg.ExperimentalClass; +import static pkg.ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; +import static pkg.ExperimentalClass.staticNonExperimentalMethodInExperimentalClass; +import static pkg.ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; +import static pkg.ExperimentalClass.staticExperimentalMethodInExperimentalClass; import pkg.NonExperimentalClass; import static pkg.NonExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; import static pkg.NonExperimentalClass.staticNonExperimentalMethodInNonExperimentalClass; -import static pkg.NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; -import static pkg.NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass; +import static pkg.NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; +import static pkg.NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass; -import pkg.ExperimentalEnum; +import pkg.ExperimentalEnum; import pkg.NonExperimentalEnum; -import static pkg.ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; -import static pkg.ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; +import static pkg.ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; +import static pkg.ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; import static pkg.NonExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; -import static pkg.NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; +import static pkg.NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; -import pkg.ExperimentalAnnotation; +import pkg.ExperimentalAnnotation; import pkg.NonExperimentalAnnotation; -import unstablePkg.ClassInUnstablePkg; +import unstablePkg.ClassInUnstablePkg; public class UnstableElementsTest { public void test() { - String s = ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; - ExperimentalClass.staticNonExperimentalMethodInExperimentalClass(); - ExperimentalClass experimentalClassInstanceViaNonExperimentalConstructor = new ExperimentalClass(); + String s = ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; + ExperimentalClass.staticNonExperimentalMethodInExperimentalClass(); + ExperimentalClass experimentalClassInstanceViaNonExperimentalConstructor = new ExperimentalClass(); s = experimentalClassInstanceViaNonExperimentalConstructor.nonExperimentalFieldInExperimentalClass; experimentalClassInstanceViaNonExperimentalConstructor.nonExperimentalMethodInExperimentalClass(); s = NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; staticNonExperimentalMethodInExperimentalClass(); - s = ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; - ExperimentalClass.staticExperimentalMethodInExperimentalClass(); - ExperimentalClass experimentalClassInstanceViaExperimentalConstructor = new ExperimentalClass(""); - s = experimentalClassInstanceViaExperimentalConstructor.experimentalFieldInExperimentalClass; - experimentalClassInstanceViaExperimentalConstructor.experimentalMethodInExperimentalClass(); - s = EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; - staticExperimentalMethodInExperimentalClass(); + s = ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; + ExperimentalClass.staticExperimentalMethodInExperimentalClass(); + ExperimentalClass experimentalClassInstanceViaExperimentalConstructor = new ExperimentalClass(""); + s = experimentalClassInstanceViaExperimentalConstructor.experimentalFieldInExperimentalClass; + experimentalClassInstanceViaExperimentalConstructor.experimentalMethodInExperimentalClass(); + s = EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS; + staticExperimentalMethodInExperimentalClass(); // --------------------------------- @@ -50,33 +50,33 @@ public class UnstableElementsTest { s = NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; staticNonExperimentalMethodInNonExperimentalClass(); - s = NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; - NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass(); - NonExperimentalClass nonExperimentalClassInstanceViaExperimentalConstructor = new NonExperimentalClass(""); - s = nonExperimentalClassInstanceViaExperimentalConstructor.experimentalFieldInNonExperimentalClass; - nonExperimentalClassInstanceViaExperimentalConstructor.experimentalMethodInNonExperimentalClass(); - s = EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; - staticExperimentalMethodInNonExperimentalClass(); + s = NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; + NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass(); + NonExperimentalClass nonExperimentalClassInstanceViaExperimentalConstructor = new NonExperimentalClass(""); + s = nonExperimentalClassInstanceViaExperimentalConstructor.experimentalFieldInNonExperimentalClass; + nonExperimentalClassInstanceViaExperimentalConstructor.experimentalMethodInNonExperimentalClass(); + s = EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS; + staticExperimentalMethodInNonExperimentalClass(); // --------------------------------- - ExperimentalEnum nonExperimentalValueInExperimentalEnum = ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; + ExperimentalEnum nonExperimentalValueInExperimentalEnum = ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; nonExperimentalValueInExperimentalEnum = NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; - ExperimentalEnum experimentalValueInExperimentalEnum = ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; - experimentalValueInExperimentalEnum = EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; + ExperimentalEnum experimentalValueInExperimentalEnum = ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; + experimentalValueInExperimentalEnum = EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM; NonExperimentalEnum nonExperimentalValueInNonExperimentalEnum = NonExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; nonExperimentalValueInNonExperimentalEnum = NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; - NonExperimentalEnum experimentalValueInNonExperimentalEnum = NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; - experimentalValueInNonExperimentalEnum = EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; + NonExperimentalEnum experimentalValueInNonExperimentalEnum = NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; + experimentalValueInNonExperimentalEnum = EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM; // --------------------------------- - @ExperimentalAnnotation class C1 {} - @ExperimentalAnnotation(nonExperimentalAttributeInExperimentalAnnotation = "123") class C2 {} - @ExperimentalAnnotation(experimentalAttributeInExperimentalAnnotation = "123") class C3 {} + @ExperimentalAnnotation class C1 {} + @ExperimentalAnnotation(nonExperimentalAttributeInExperimentalAnnotation = "123") class C2 {} + @ExperimentalAnnotation(experimentalAttributeInExperimentalAnnotation = "123") class C3 {} @NonExperimentalAnnotation class C4 {} @NonExperimentalAnnotation(nonExperimentalAttributeInNonExperimentalAnnotation = "123") class C5 {} - @NonExperimentalAnnotation(experimentalAttributeInNonExperimentalAnnotation = "123") class C6 {} + @NonExperimentalAnnotation(experimentalAttributeInNonExperimentalAnnotation = "123") class C6 {} } } \ No newline at end of file diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.kt b/plugins/devkit/devkit-kotlin-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.kt index fa6360fc4083..5ab223f2e58b 100644 --- a/plugins/devkit/devkit-kotlin-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.kt +++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/unstableApiUsage/UnstableElementsTest.kt @@ -1,45 +1,45 @@ -import pkg.ExperimentalClass -import pkg.ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS -import pkg.ExperimentalClass.staticNonExperimentalMethodInExperimentalClass -import pkg.ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS -import pkg.ExperimentalClass.staticExperimentalMethodInExperimentalClass +import pkg.ExperimentalClass +import pkg.ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS +import pkg.ExperimentalClass.staticNonExperimentalMethodInExperimentalClass +import pkg.ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS +import pkg.ExperimentalClass.staticExperimentalMethodInExperimentalClass import pkg.NonExperimentalClass import pkg.NonExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS import pkg.NonExperimentalClass.staticNonExperimentalMethodInNonExperimentalClass -import pkg.NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS -import pkg.NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass +import pkg.NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS +import pkg.NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass -import pkg.ExperimentalEnum +import pkg.ExperimentalEnum import pkg.NonExperimentalEnum -import pkg.ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM -import pkg.ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM +import pkg.ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM +import pkg.ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM import pkg.NonExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM -import pkg.NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM +import pkg.NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM -import pkg.ExperimentalAnnotation +import pkg.ExperimentalAnnotation import pkg.NonExperimentalAnnotation -import unstablePkg.ClassInUnstablePkg +import unstablePkg.ClassInUnstablePkg @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE", "UNUSED_VALUE") class UnstableElementsTest { fun test() { - var s = ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS - ExperimentalClass.staticNonExperimentalMethodInExperimentalClass() - val experimentalClassInstanceViaNonExperimentalConstructor : ExperimentalClass = ExperimentalClass() + var s = ExperimentalClass.NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS + ExperimentalClass.staticNonExperimentalMethodInExperimentalClass() + val experimentalClassInstanceViaNonExperimentalConstructor : ExperimentalClass = ExperimentalClass() s = experimentalClassInstanceViaNonExperimentalConstructor.nonExperimentalFieldInExperimentalClass experimentalClassInstanceViaNonExperimentalConstructor.nonExperimentalMethodInExperimentalClass() s = NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS staticNonExperimentalMethodInExperimentalClass() - s = ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS - ExperimentalClass.staticExperimentalMethodInExperimentalClass() - val experimentalClassInstanceViaExperimentalConstructor : ExperimentalClass = ExperimentalClass("") - s = experimentalClassInstanceViaExperimentalConstructor.experimentalFieldInExperimentalClass - experimentalClassInstanceViaExperimentalConstructor.experimentalMethodInExperimentalClass() - s = EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS - staticExperimentalMethodInExperimentalClass() + s = ExperimentalClass.EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS + ExperimentalClass.staticExperimentalMethodInExperimentalClass() + val experimentalClassInstanceViaExperimentalConstructor : ExperimentalClass = ExperimentalClass("") + s = experimentalClassInstanceViaExperimentalConstructor.experimentalFieldInExperimentalClass + experimentalClassInstanceViaExperimentalConstructor.experimentalMethodInExperimentalClass() + s = EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS + staticExperimentalMethodInExperimentalClass() // --------------------------------- @@ -51,33 +51,33 @@ class UnstableElementsTest { s = NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS staticNonExperimentalMethodInNonExperimentalClass() - s = NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS - NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass() - val nonExperimentalClassInstanceViaExperimentalConstructor = NonExperimentalClass("") - s = nonExperimentalClassInstanceViaExperimentalConstructor.experimentalFieldInNonExperimentalClass - nonExperimentalClassInstanceViaExperimentalConstructor.experimentalMethodInNonExperimentalClass() - s = EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS - staticExperimentalMethodInNonExperimentalClass() + s = NonExperimentalClass.EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS + NonExperimentalClass.staticExperimentalMethodInNonExperimentalClass() + val nonExperimentalClassInstanceViaExperimentalConstructor = NonExperimentalClass("") + s = nonExperimentalClassInstanceViaExperimentalConstructor.experimentalFieldInNonExperimentalClass + nonExperimentalClassInstanceViaExperimentalConstructor.experimentalMethodInNonExperimentalClass() + s = EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS + staticExperimentalMethodInNonExperimentalClass() // --------------------------------- - var nonExperimentalValueInExperimentalEnum : ExperimentalEnum = ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM + var nonExperimentalValueInExperimentalEnum : ExperimentalEnum = ExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM nonExperimentalValueInExperimentalEnum = NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM - var experimentalValueInExperimentalEnum : ExperimentalEnum = ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM - experimentalValueInExperimentalEnum = EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM + var experimentalValueInExperimentalEnum : ExperimentalEnum = ExperimentalEnum.EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM + experimentalValueInExperimentalEnum = EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM var nonExperimentalValueInNonExperimentalEnum = NonExperimentalEnum.NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM nonExperimentalValueInNonExperimentalEnum = NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM - var experimentalValueInNonExperimentalEnum = NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM - experimentalValueInNonExperimentalEnum = EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM + var experimentalValueInNonExperimentalEnum = NonExperimentalEnum.EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM + experimentalValueInNonExperimentalEnum = EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM // --------------------------------- - @ExperimentalAnnotation class C1 - @ExperimentalAnnotation(nonExperimentalAttributeInExperimentalAnnotation = "123") class C2 - @ExperimentalAnnotation(experimentalAttributeInExperimentalAnnotation = "123") class C3 + @ExperimentalAnnotation class C1 + @ExperimentalAnnotation(nonExperimentalAttributeInExperimentalAnnotation = "123") class C2 + @ExperimentalAnnotation(experimentalAttributeInExperimentalAnnotation = "123") class C3 @NonExperimentalAnnotation class C4 @NonExperimentalAnnotation(nonExperimentalAttributeInNonExperimentalAnnotation = "123") class C5 - @NonExperimentalAnnotation(experimentalAttributeInNonExperimentalAnnotation = "123") class C6 + @NonExperimentalAnnotation(experimentalAttributeInNonExperimentalAnnotation = "123") class C6 } } \ No newline at end of file diff --git a/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/inspections/UnstableApiUsageInspectionTestBase.kt b/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/inspections/UnstableApiUsageInspectionTestBase.kt index 793259a9b869..3cd6ad4c3321 100644 --- a/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/inspections/UnstableApiUsageInspectionTestBase.kt +++ b/plugins/devkit/devkit-tests-api/src/org/jetbrains/idea/devkit/inspections/UnstableApiUsageInspectionTestBase.kt @@ -22,80 +22,78 @@ abstract class UnstableApiUsageInspectionTestBase : JavaCodeInsightFixtureTestCa myFixture.enableInspections(UnstableApiUsageInspection::class.java) myFixture.addFileToProject( - "pkg/ExperimentalAnnotation.java", - "package pkg;\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "@ApiStatus.Experimental public @interface ExperimentalAnnotation {\n" + - " String nonExperimentalAttributeInExperimentalAnnotation() default \"\";\n" + - " @ApiStatus.Experimental String experimentalAttributeInExperimentalAnnotation() default \"\";\n" + - "}" + "pkg/ExperimentalAnnotation.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + @ApiStatus.Experimental public @interface ExperimentalAnnotation { + String nonExperimentalAttributeInExperimentalAnnotation() default ""; + @ApiStatus.Experimental String experimentalAttributeInExperimentalAnnotation() default ""; + }""" ) myFixture.addFileToProject( - "pkg/ExperimentalEnum.java", - "package pkg;\n" + - "\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "\n" + - "@ApiStatus.Experimental public enum ExperimentalEnum {\n" + - " NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM,\n" + - " @ApiStatus.Experimental EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM\n" + - "}" + "pkg/ExperimentalEnum.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + @ApiStatus.Experimental public enum ExperimentalEnum { + NON_EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM, + @ApiStatus.Experimental EXPERIMENTAL_VALUE_IN_EXPERIMENTAL_ENUM + }""" ) myFixture.addFileToProject( - "pkg/ExperimentalClass.java", - "package pkg;\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "@ApiStatus.Experimental public class ExperimentalClass {\n" + - " public static final String NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS = \"\";\n" + - " public String nonExperimentalFieldInExperimentalClass = \"\";\n" + - " public ExperimentalClass() {}\n" + - " public static void staticNonExperimentalMethodInExperimentalClass() {}\n" + - " public void nonExperimentalMethodInExperimentalClass() {}\n" + - "\n" + - " @ApiStatus.Experimental public static final String EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS = \"\";\n" + - " @ApiStatus.Experimental public String experimentalFieldInExperimentalClass = \"\";\n" + - " @ApiStatus.Experimental public ExperimentalClass(String s) {}\n" + - " @ApiStatus.Experimental public static void staticExperimentalMethodInExperimentalClass() {}\n" + - " @ApiStatus.Experimental public void experimentalMethodInExperimentalClass() {}\n" + - "}" + "pkg/ExperimentalClass.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + @ApiStatus.Experimental public class ExperimentalClass { + public static final String NON_EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS = ""; + public String nonExperimentalFieldInExperimentalClass = ""; + public ExperimentalClass() {} + public static void staticNonExperimentalMethodInExperimentalClass() {} + public void nonExperimentalMethodInExperimentalClass() {} + + @ApiStatus.Experimental public static final String EXPERIMENTAL_CONSTANT_IN_EXPERIMENTAL_CLASS = ""; + @ApiStatus.Experimental public String experimentalFieldInExperimentalClass = ""; + @ApiStatus.Experimental public ExperimentalClass(String s) {} + @ApiStatus.Experimental public static void staticExperimentalMethodInExperimentalClass() {} + @ApiStatus.Experimental public void experimentalMethodInExperimentalClass() {} + }""" ) myFixture.addFileToProject( - "pkg/NonExperimentalAnnotation.java", - "package pkg;\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "public @interface NonExperimentalAnnotation {\n" + - " String nonExperimentalAttributeInNonExperimentalAnnotation() default \"\";\n" + - " @ApiStatus.Experimental String experimentalAttributeInNonExperimentalAnnotation() default \"\";\n" + - "}" + "pkg/NonExperimentalAnnotation.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + public @interface NonExperimentalAnnotation { + String nonExperimentalAttributeInNonExperimentalAnnotation() default ""; + @ApiStatus.Experimental String experimentalAttributeInNonExperimentalAnnotation() default ""; + }""" ) myFixture.addFileToProject( - "pkg/NonExperimentalEnum.java", - "package pkg;\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "public enum NonExperimentalEnum {\n" + - " NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM,\n" + - " @ApiStatus.Experimental EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM\n" + - "}" + "pkg/NonExperimentalEnum.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + public enum NonExperimentalEnum { + NON_EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM, + @ApiStatus.Experimental EXPERIMENTAL_VALUE_IN_NON_EXPERIMENTAL_ENUM + }""" ) myFixture.addFileToProject( - "pkg/NonExperimentalClass.java", - "package pkg;\n" + - "import org.jetbrains.annotations.ApiStatus;\n" + - "public class NonExperimentalClass {\n" + - " public static final String NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS = \"\";\n" + - " public String nonExperimentalFieldInNonExperimentalClass = \"\";\n" + - " public NonExperimentalClass() {}\n" + - " public static void staticNonExperimentalMethodInNonExperimentalClass() {}\n" + - " public void nonExperimentalMethodInNonExperimentalClass() {}\n" + - "\n" + - " @ApiStatus.Experimental public static final String EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS = \"\";\n" + - " @ApiStatus.Experimental public String experimentalFieldInNonExperimentalClass = \"\";\n" + - " @ApiStatus.Experimental public NonExperimentalClass(String s) {}\n" + - " @ApiStatus.Experimental public static void staticExperimentalMethodInNonExperimentalClass() {}\n" + - " @ApiStatus.Experimental public void experimentalMethodInNonExperimentalClass() {}\n" + - "}" + "pkg/NonExperimentalClass.java", """ + package pkg; + import org.jetbrains.annotations.ApiStatus; + public class NonExperimentalClass { + public static final String NON_EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS = ""; + public String nonExperimentalFieldInNonExperimentalClass = ""; + public NonExperimentalClass() {} + public static void staticNonExperimentalMethodInNonExperimentalClass() {} + public void nonExperimentalMethodInNonExperimentalClass() {} + + @ApiStatus.Experimental public static final String EXPERIMENTAL_CONSTANT_IN_NON_EXPERIMENTAL_CLASS = ""; + @ApiStatus.Experimental public String experimentalFieldInNonExperimentalClass = ""; + @ApiStatus.Experimental public NonExperimentalClass(String s) {} + @ApiStatus.Experimental public static void staticExperimentalMethodInNonExperimentalClass() {} + @ApiStatus.Experimental public void experimentalMethodInNonExperimentalClass() {} + }""" )