Don't report EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET for forbidden targets
#KT-47589 Fixed
This commit is contained in:
committed by
teamcityserver
parent
ac7538a269
commit
d9531f0c61
+6
@@ -34513,6 +34513,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/errors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalAnnotationOnConstructorProperty.kt")
|
||||
public void testExperimentalAnnotationOnConstructorProperty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalAnnotationOnConstructorProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalIsNotEnabled.kt")
|
||||
public void testExperimentalIsNotEnabled() throws Exception {
|
||||
|
||||
+6
@@ -34513,6 +34513,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/errors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalAnnotationOnConstructorProperty.kt")
|
||||
public void testExperimentalAnnotationOnConstructorProperty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalAnnotationOnConstructorProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalIsNotEnabled.kt")
|
||||
public void testExperimentalIsNotEnabled() throws Exception {
|
||||
|
||||
+5
-3
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget.*
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -55,20 +56,21 @@ class ExperimentalMarkerDeclarationAnnotationChecker(private val module: ModuleD
|
||||
}
|
||||
val annotationClass = annotation.annotationClass ?: continue
|
||||
if (annotationClass.annotations.any { it.fqName in OptInNames.EXPERIMENTAL_FQ_NAMES }) {
|
||||
val possibleTargets = AnnotationChecker.applicableTargetSet(annotationClass).orEmpty().intersect(actualTargets)
|
||||
val annotationUseSiteTarget = entry.useSiteTarget?.getAnnotationUseSiteTarget()
|
||||
if (KotlinTarget.PROPERTY_GETTER in actualTargets ||
|
||||
if (PROPERTY_GETTER in possibleTargets ||
|
||||
annotationUseSiteTarget == AnnotationUseSiteTarget.PROPERTY_GETTER
|
||||
) {
|
||||
trace.report(Errors.EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET.on(entry, "getter"))
|
||||
}
|
||||
if (KotlinTarget.VALUE_PARAMETER in actualTargets && annotationUseSiteTarget == null ||
|
||||
if (VALUE_PARAMETER in possibleTargets && annotationUseSiteTarget == null ||
|
||||
annotationUseSiteTarget == AnnotationUseSiteTarget.RECEIVER ||
|
||||
annotationUseSiteTarget == AnnotationUseSiteTarget.SETTER_PARAMETER ||
|
||||
annotationUseSiteTarget == AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER
|
||||
) {
|
||||
trace.report(Errors.EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET.on(entry, "parameter"))
|
||||
}
|
||||
if (KotlinTarget.LOCAL_VARIABLE in actualTargets) {
|
||||
if (LOCAL_VARIABLE in possibleTargets) {
|
||||
trace.report(Errors.EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET.on(entry, "variable"))
|
||||
}
|
||||
if (annotationUseSiteTarget == AnnotationUseSiteTarget.FIELD ||
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// FIR_IDENTICAL
|
||||
// !USE_EXPERIMENTAL: kotlin.RequiresOptIn
|
||||
|
||||
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
|
||||
@Target(AnnotationTarget.PROPERTY)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class E1
|
||||
|
||||
class My(@E1 val x: Int)
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package
|
||||
|
||||
@kotlin.RequiresOptIn(level = Level.WARNING) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) public final annotation class E1 : kotlin.Annotation {
|
||||
public constructor E1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class My {
|
||||
public constructor My(/*0*/ x: kotlin.Int)
|
||||
@E1 public final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Generated
+6
@@ -34609,6 +34609,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/errors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalAnnotationOnConstructorProperty.kt")
|
||||
public void testExperimentalAnnotationOnConstructorProperty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalAnnotationOnConstructorProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalIsNotEnabled.kt")
|
||||
public void testExperimentalIsNotEnabled() throws Exception {
|
||||
|
||||
+6
@@ -34513,6 +34513,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/errors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalAnnotationOnConstructorProperty.kt")
|
||||
public void testExperimentalAnnotationOnConstructorProperty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalAnnotationOnConstructorProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalIsNotEnabled.kt")
|
||||
public void testExperimentalIsNotEnabled() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user