diff --git a/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.java b/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.java new file mode 100644 index 000000000000..79f4bf36e4ee --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.java @@ -0,0 +1,83 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +import pkg.AnnotatedClass; +import static pkg.AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; +import static pkg.AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass; +import static pkg.AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; +import static pkg.AnnotatedClass.staticAnnotatedMethodInAnnotatedClass; + +import pkg.NonAnnotatedClass; +import static pkg.NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; +import static pkg.NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass; +import static pkg.NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; +import static pkg.NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass; + +import pkg.AnnotatedEnum; +import pkg.NonAnnotatedEnum; +import static pkg.AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; +import static pkg.AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM; +import static pkg.NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; +import static pkg.NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + +import pkg.AnnotatedAnnotation; +import pkg.NonAnnotatedAnnotation; + +import annotatedPkg.ClassInAnnotatedPkg; + +public class ScheduledForRemovalElementsIgnoreImportsTest { + public void test() { + String s = AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass(); + AnnotatedClass annotatedClassInstanceViaNonAnnotatedConstructor = new AnnotatedClass(); + s = annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInAnnotatedClass; + annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInAnnotatedClass(); + s = NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + staticNonAnnotatedMethodInAnnotatedClass(); + + s = AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + AnnotatedClass.staticAnnotatedMethodInAnnotatedClass(); + AnnotatedClass annotatedClassInstanceViaAnnotatedConstructor = new AnnotatedClass(""); + s = annotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInAnnotatedClass; + annotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInAnnotatedClass(); + s = ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + staticAnnotatedMethodInAnnotatedClass(); + + // --------------------------------- + + s = NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass(); + NonAnnotatedClass nonAnnotatedClassInstanceViaNonAnnotatedConstructor = new NonAnnotatedClass(); + s = nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInNonAnnotatedClass; + nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInNonAnnotatedClass(); + s = NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + staticNonAnnotatedMethodInNonAnnotatedClass(); + + s = NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass(); + NonAnnotatedClass nonAnnotatedClassInstanceViaAnnotatedConstructor = new NonAnnotatedClass(""); + s = nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInNonAnnotatedClass; + nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInNonAnnotatedClass(); + s = ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + staticAnnotatedMethodInNonAnnotatedClass(); + + // --------------------------------- + + AnnotatedEnum nonAnnotatedValueInAnnotatedEnum = AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + nonAnnotatedValueInAnnotatedEnum = NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + AnnotatedEnum annotatedValueInAnnotatedEnum = AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + annotatedValueInAnnotatedEnum = ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + + NonAnnotatedEnum nonAnnotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + nonAnnotatedValueInNonAnnotatedEnum = NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + NonAnnotatedEnum annotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + annotatedValueInNonAnnotatedEnum = ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + + // --------------------------------- + + @AnnotatedAnnotation class C1 {} + @AnnotatedAnnotation(nonAnnotatedAttributeInAnnotatedAnnotation = "123") class C2 {} + @AnnotatedAnnotation(annotatedAttributeInAnnotatedAnnotation = "123") class C3 {} + @NonAnnotatedAnnotation class C4 {} + @NonAnnotatedAnnotation(nonAnnotatedAttributeInNonAnnotatedAnnotation = "123") class C5 {} + @NonAnnotatedAnnotation(annotatedAttributeInNonAnnotatedAnnotation = "123") class C6 {} + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.java b/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.java new file mode 100644 index 000000000000..e167a30b7d6b --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.java @@ -0,0 +1,83 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +import pkg.AnnotatedClass; +import static pkg.AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; +import static pkg.AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass; +import static pkg.AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; +import static pkg.AnnotatedClass.staticAnnotatedMethodInAnnotatedClass; + +import pkg.NonAnnotatedClass; +import static pkg.NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; +import static pkg.NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass; +import static pkg.NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; +import static pkg.NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass; + +import pkg.AnnotatedEnum; +import pkg.NonAnnotatedEnum; +import static pkg.AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; +import static pkg.AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM; +import static pkg.NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; +import static pkg.NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + +import pkg.AnnotatedAnnotation; +import pkg.NonAnnotatedAnnotation; + +import annotatedPkg.ClassInAnnotatedPkg; + +public class ScheduledForRemovalElementsTest { + public void test() { + String s = AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass(); + AnnotatedClass annotatedClassInstanceViaNonAnnotatedConstructor = new AnnotatedClass(); + s = annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInAnnotatedClass; + annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInAnnotatedClass(); + s = NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + staticNonAnnotatedMethodInAnnotatedClass(); + + s = AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + AnnotatedClass.staticAnnotatedMethodInAnnotatedClass(); + AnnotatedClass annotatedClassInstanceViaAnnotatedConstructor = new AnnotatedClass(""); + s = annotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInAnnotatedClass; + annotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInAnnotatedClass(); + s = ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS; + staticAnnotatedMethodInAnnotatedClass(); + + // --------------------------------- + + s = NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass(); + NonAnnotatedClass nonAnnotatedClassInstanceViaNonAnnotatedConstructor = new NonAnnotatedClass(); + s = nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInNonAnnotatedClass; + nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInNonAnnotatedClass(); + s = NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + staticNonAnnotatedMethodInNonAnnotatedClass(); + + s = NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass(); + NonAnnotatedClass nonAnnotatedClassInstanceViaAnnotatedConstructor = new NonAnnotatedClass(""); + s = nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInNonAnnotatedClass; + nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInNonAnnotatedClass(); + s = ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS; + staticAnnotatedMethodInNonAnnotatedClass(); + + // --------------------------------- + + AnnotatedEnum nonAnnotatedValueInAnnotatedEnum = AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + nonAnnotatedValueInAnnotatedEnum = NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + AnnotatedEnum annotatedValueInAnnotatedEnum = AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + annotatedValueInAnnotatedEnum = ANNOTATED_VALUE_IN_ANNOTATED_ENUM; + + NonAnnotatedEnum nonAnnotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + nonAnnotatedValueInNonAnnotatedEnum = NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + NonAnnotatedEnum annotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + annotatedValueInNonAnnotatedEnum = ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM; + + // --------------------------------- + + @AnnotatedAnnotation class C1 {} + @AnnotatedAnnotation(nonAnnotatedAttributeInAnnotatedAnnotation = "123") class C2 {} + @AnnotatedAnnotation(annotatedAttributeInAnnotatedAnnotation = "123") class C3 {} + @NonAnnotatedAnnotation class C4 {} + @NonAnnotatedAnnotation(nonAnnotatedAttributeInNonAnnotatedAnnotation = "123") class C5 {} + @NonAnnotatedAnnotation(annotatedAttributeInNonAnnotatedAnnotation = "123") class C6 {} + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt new file mode 100644 index 000000000000..56a861b89e28 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt @@ -0,0 +1,20 @@ +package com.intellij.codeInspection.tests.java + +import com.intellij.codeInspection.tests.ScheduledForRemovalInspectionTestBase +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH +import com.intellij.testFramework.TestDataPath + +@TestDataPath("/testData/codeInspection/scheduledForRemoval") +class ScheduledForRemovalInspectionTest: ScheduledForRemovalInspectionTestBase() { + override fun getBasePath() = "${TEST_DATA_PROJECT_RELATIVE_BASE_PATH}/codeInspection/scheduledForRemoval" + + fun testInspection() { + getInspection().myIgnoreInsideImports = false + myFixture.testHighlighting(true, false, false, "ScheduledForRemovalElementsTest.java") + } + + fun testIgnoreImports() { + getInspection().myIgnoreInsideImports = true + myFixture.testHighlighting(true, false, false, "ScheduledForRemovalElementsIgnoreImportsTest.java") + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.kt b/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.kt new file mode 100644 index 000000000000..38ab7a3aabab --- /dev/null +++ b/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsIgnoreImportsTest.kt @@ -0,0 +1,83 @@ +import pkg.AnnotatedClass +import pkg.AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS +import pkg.AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass +import pkg.AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS +import pkg.AnnotatedClass.staticAnnotatedMethodInAnnotatedClass + +import pkg.NonAnnotatedClass +import pkg.NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS +import pkg.NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass +import pkg.NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS +import pkg.NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass + +import pkg.AnnotatedEnum +import pkg.NonAnnotatedEnum +import pkg.AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM +import pkg.AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM +import pkg.NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM +import pkg.NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + +import pkg.AnnotatedAnnotation +import pkg.NonAnnotatedAnnotation + +import annotatedPkg.ClassInAnnotatedPkg + +@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE", "UNUSED_VALUE") +class ScheduledForRemovalElementsIgnoreImportsTest { + fun test() { + var s = AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass() + val annotatedClassInstanceViaNonAnnotatedConstructor : AnnotatedClass = AnnotatedClass() + s = annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInAnnotatedClass + annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInAnnotatedClass() + s = NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + staticNonAnnotatedMethodInAnnotatedClass() + + s = AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + AnnotatedClass.staticAnnotatedMethodInAnnotatedClass() + val annotatedClassInstanceViaAnnotatedConstructor : AnnotatedClass = AnnotatedClass("") + s = annotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInAnnotatedClass + annotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInAnnotatedClass() + s = ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + staticAnnotatedMethodInAnnotatedClass() + + // --------------------------------- + + s = NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass() + val nonAnnotatedClassInstanceViaNonAnnotatedConstructor = NonAnnotatedClass() + s = nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInNonAnnotatedClass + nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInNonAnnotatedClass() + s = NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + staticNonAnnotatedMethodInNonAnnotatedClass() + + s = NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass() + val nonAnnotatedClassInstanceViaAnnotatedConstructor = NonAnnotatedClass("") + s = nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInNonAnnotatedClass + nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInNonAnnotatedClass() + s = ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + staticAnnotatedMethodInNonAnnotatedClass() + + // --------------------------------- + + var nonAnnotatedValueInAnnotatedEnum : AnnotatedEnum = AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM + nonAnnotatedValueInAnnotatedEnum = NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM + var annotatedValueInAnnotatedEnum : AnnotatedEnum = AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM + annotatedValueInAnnotatedEnum = ANNOTATED_VALUE_IN_ANNOTATED_ENUM + + var nonAnnotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + nonAnnotatedValueInNonAnnotatedEnum = NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + var annotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + annotatedValueInNonAnnotatedEnum = ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + + // --------------------------------- + + @AnnotatedAnnotation class C1 + @AnnotatedAnnotation(nonAnnotatedAttributeInAnnotatedAnnotation = "123") class C2 + @AnnotatedAnnotation(annotatedAttributeInAnnotatedAnnotation = "123") class C3 + @NonAnnotatedAnnotation class C4 + @NonAnnotatedAnnotation(nonAnnotatedAttributeInNonAnnotatedAnnotation = "123") class C5 + @NonAnnotatedAnnotation(annotatedAttributeInNonAnnotatedAnnotation = "123") class C6 + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.kt b/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.kt new file mode 100644 index 000000000000..2694646a65e0 --- /dev/null +++ b/jvm/jvm-analysis-kotlin-tests/testData/codeInspection/scheduledForRemoval/ScheduledForRemovalElementsTest.kt @@ -0,0 +1,83 @@ +import pkg.AnnotatedClass +import pkg.AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS +import pkg.AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass +import pkg.AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS +import pkg.AnnotatedClass.staticAnnotatedMethodInAnnotatedClass + +import pkg.NonAnnotatedClass +import pkg.NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS +import pkg.NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass +import pkg.NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS +import pkg.NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass + +import pkg.AnnotatedEnum +import pkg.NonAnnotatedEnum +import pkg.AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM +import pkg.AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM +import pkg.NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM +import pkg.NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + +import pkg.AnnotatedAnnotation +import pkg.NonAnnotatedAnnotation + +import annotatedPkg.ClassInAnnotatedPkg + +@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE", "UNUSED_VALUE") +class ScheduledForRemovalElementsTest { + fun test() { + var s = AnnotatedClass.NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + AnnotatedClass.staticNonAnnotatedMethodInAnnotatedClass() + val annotatedClassInstanceViaNonAnnotatedConstructor : AnnotatedClass = AnnotatedClass() + s = annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInAnnotatedClass + annotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInAnnotatedClass() + s = NON_ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + staticNonAnnotatedMethodInAnnotatedClass() + + s = AnnotatedClass.ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + AnnotatedClass.staticAnnotatedMethodInAnnotatedClass() + val annotatedClassInstanceViaAnnotatedConstructor : AnnotatedClass = AnnotatedClass("") + s = annotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInAnnotatedClass + annotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInAnnotatedClass() + s = ANNOTATED_CONSTANT_IN_ANNOTATED_CLASS + staticAnnotatedMethodInAnnotatedClass() + + // --------------------------------- + + s = NonAnnotatedClass.NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + NonAnnotatedClass.staticNonAnnotatedMethodInNonAnnotatedClass() + val nonAnnotatedClassInstanceViaNonAnnotatedConstructor = NonAnnotatedClass() + s = nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedFieldInNonAnnotatedClass + nonAnnotatedClassInstanceViaNonAnnotatedConstructor.nonAnnotatedMethodInNonAnnotatedClass() + s = NON_ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + staticNonAnnotatedMethodInNonAnnotatedClass() + + s = NonAnnotatedClass.ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + NonAnnotatedClass.staticAnnotatedMethodInNonAnnotatedClass() + val nonAnnotatedClassInstanceViaAnnotatedConstructor = NonAnnotatedClass("") + s = nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedFieldInNonAnnotatedClass + nonAnnotatedClassInstanceViaAnnotatedConstructor.annotatedMethodInNonAnnotatedClass() + s = ANNOTATED_CONSTANT_IN_NON_ANNOTATED_CLASS + staticAnnotatedMethodInNonAnnotatedClass() + + // --------------------------------- + + var nonAnnotatedValueInAnnotatedEnum : AnnotatedEnum = AnnotatedEnum.NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM + nonAnnotatedValueInAnnotatedEnum = NON_ANNOTATED_VALUE_IN_ANNOTATED_ENUM + var annotatedValueInAnnotatedEnum : AnnotatedEnum = AnnotatedEnum.ANNOTATED_VALUE_IN_ANNOTATED_ENUM + annotatedValueInAnnotatedEnum = ANNOTATED_VALUE_IN_ANNOTATED_ENUM + + var nonAnnotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + nonAnnotatedValueInNonAnnotatedEnum = NON_ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + var annotatedValueInNonAnnotatedEnum = NonAnnotatedEnum.ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + annotatedValueInNonAnnotatedEnum = ANNOTATED_VALUE_IN_NON_ANNOTATED_ENUM + + // --------------------------------- + + @AnnotatedAnnotation class C1 + @AnnotatedAnnotation(nonAnnotatedAttributeInAnnotatedAnnotation = "123") class C2 + @AnnotatedAnnotation(annotatedAttributeInAnnotatedAnnotation = "123") class C3 + @NonAnnotatedAnnotation class C4 + @NonAnnotatedAnnotation(nonAnnotatedAttributeInNonAnnotatedAnnotation = "123") class C5 + @NonAnnotatedAnnotation(annotatedAttributeInNonAnnotatedAnnotation = "123") class C6 + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-kotlin-tests/testSrc/com/intellij/codeInspection/tests/kotlin/KtScheduledForRemovalInspectionTest.kt b/jvm/jvm-analysis-kotlin-tests/testSrc/com/intellij/codeInspection/tests/kotlin/KtScheduledForRemovalInspectionTest.kt new file mode 100644 index 000000000000..3af75fa1ab8f --- /dev/null +++ b/jvm/jvm-analysis-kotlin-tests/testSrc/com/intellij/codeInspection/tests/kotlin/KtScheduledForRemovalInspectionTest.kt @@ -0,0 +1,27 @@ +package com.intellij.codeInspection.tests.kotlin + +import com.intellij.codeInspection.tests.ScheduledForRemovalInspectionTestBase +import com.intellij.jvm.analysis.JvmAnalysisKtTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH +import com.intellij.openapi.vfs.VirtualFileFilter +import com.intellij.testFramework.TestDataPath +import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl + +@TestDataPath("/testData/codeInspection/scheduledForRemoval") +class KtScheduledForRemovalInspectionTest : ScheduledForRemovalInspectionTestBase() { + override fun getBasePath() = "${TEST_DATA_PROJECT_RELATIVE_BASE_PATH}/codeInspection/scheduledForRemoval" + + override fun performAdditionalSetUp() { + // otherwise assertion in PsiFileImpl ("Access to tree elements not allowed") will not pass + (myFixture as CodeInsightTestFixtureImpl).setVirtualFileFilter(VirtualFileFilter.NONE) + } + + fun testInspection() { + getInspection().myIgnoreInsideImports = false + myFixture.testHighlighting("ScheduledForRemovalElementsTest.kt") + } + + fun testIgnoreImports() { + getInspection().myIgnoreInsideImports = true + myFixture.testHighlighting("ScheduledForRemovalElementsIgnoreImportsTest.kt") + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-tests-api/src/com/intellij/codeInspection/tests/ScheduledForRemovalInspectionTestBase.kt b/jvm/jvm-analysis-tests-api/src/com/intellij/codeInspection/tests/ScheduledForRemovalInspectionTestBase.kt new file mode 100644 index 000000000000..7e3b795044ac --- /dev/null +++ b/jvm/jvm-analysis-tests-api/src/com/intellij/codeInspection/tests/ScheduledForRemovalInspectionTestBase.kt @@ -0,0 +1,17 @@ +package com.intellij.codeInspection.tests + +import com.intellij.codeInspection.ScheduledForRemovalInspection +import com.intellij.testFramework.builders.JavaModuleFixtureBuilder +import com.intellij.util.PathUtil +import org.jetbrains.annotations.ApiStatus + +abstract class ScheduledForRemovalInspectionTestBase: AnnotatedElementUsageInspectionTestBase() { + private val inspection = ScheduledForRemovalInspection() + override fun getInspection() = inspection + + override fun getAnnotationFqn(): String = "org.jetbrains.annotations.ApiStatus.ScheduledForRemoval" + + override fun tuneFixture(moduleBuilder: JavaModuleFixtureBuilder<*>) { + moduleBuilder.addLibrary("util", PathUtil.getJarPathForClass(ApiStatus::class.java)) + } +} \ No newline at end of file