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