diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt index 2d849b5e50e..d328a85fbbc 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.resolve.checkers.OptInNames private val defaultAnnotationTargets = KotlinTarget.DEFAULT_TARGET_SET fun FirAnnotation.getAllowedAnnotationTargets(session: FirSession): Set { - if (annotationTypeRef is FirErrorTypeRef) return KotlinTarget.values().toSet() + if (annotationTypeRef is FirErrorTypeRef) return KotlinTarget.ALL_TARGET_SET val annotationClassSymbol = (this.annotationTypeRef.coneType as? ConeClassLikeType) ?.fullyExpandedType(session)?.lookupTag?.toSymbol(session) ?: return defaultAnnotationTargets annotationClassSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) @@ -70,7 +70,7 @@ fun FirClassLikeSymbol<*>.getAllowedAnnotationTargets(session: FirSession): Set< //but `JvmStubBasedFirDeserializedSymbolProvider` which works in IDE over stubs, misses classes ?: (calleeReference as? FirFromMissingDependenciesNamedReference)?.name?.asString() ?: return@mapNotNullTo null - KotlinTarget.values().firstOrNull { target -> target.name == targetName } + KotlinTarget.entries.firstOrNull { target -> target.name == targetName } } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index be6e7cb7dac..49a6985bca5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.analysis.checkers import com.intellij.lang.LighterASTNode import org.jetbrains.kotlin.* -import org.jetbrains.kotlin.KtFakeSourceElementKind.DesugaredComponentFunctionCall import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality @@ -643,7 +642,7 @@ fun getActualTargetList(container: FirAnnotationContainer): AnnotationTargetList when { annotated.isLocal -> when { - annotated.source?.kind == DesugaredComponentFunctionCall -> TargetLists.T_DESTRUCTURING_DECLARATION + annotated.name == SpecialNames.DESTRUCT -> TargetLists.T_DESTRUCTURING_DECLARATION annotated.isCatchParameter == true -> TargetLists.T_CATCH_PARAMETER else -> TargetLists.T_LOCAL_VARIABLE } @@ -694,9 +693,7 @@ fun getActualTargetList(container: FirAnnotationContainer): AnnotationTargetList } else { TargetLists.T_OBJECT_LITERAL } -// TODO, KT-59819: properly implement those cases -// is KtDestructuringDeclarationEntry -> TargetLists.T_LOCAL_VARIABLE -// is KtDestructuringDeclaration -> TargetLists.T_DESTRUCTURING_DECLARATION +// TODO, KT-59819: properly implement this case // is KtLambdaExpression -> TargetLists.T_FUNCTION_LITERAL else -> TargetLists.EMPTY } diff --git a/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.fir.kt b/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.fir.kt deleted file mode 100644 index 188b08716b7..00000000000 --- a/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.fir.kt +++ /dev/null @@ -1,9 +0,0 @@ -annotation class Ann - -data class Pair(val x: Int, val y: Int) - -fun foo(): Int { - @Ann val (a, b) = Pair(12, 34) - @Err val (c, d) = Pair(56, 78) - return a + b + c + d -} diff --git a/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.kt b/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.kt index 65b9584f3e5..2cd218f4f02 100644 --- a/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.kt +++ b/compiler/testData/diagnostics/tests/annotations/MultiDeclaration.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL annotation class Ann data class Pair(val x: Int, val y: Int) diff --git a/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.fir.kt b/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.fir.kt deleted file mode 100644 index 4f1b8c2ef67..00000000000 --- a/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.fir.kt +++ /dev/null @@ -1,14 +0,0 @@ -annotation class Ann(val x: Int) - -data class A(val x: Int, val y: Int) - -fun bar(): Array = null!! - -fun foo() { - for (@Ann(1) i in 1..100) {} - for (@Ann(2) i in 1..100) {} - - for (@Ann(3) (x, @Ann(4) y) in bar()) {} - - for (@Err() (x,y) in bar()) {} -} diff --git a/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.kt b/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.kt index f221b845569..5c3c84cfc5e 100644 --- a/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.kt +++ b/compiler/testData/diagnostics/tests/annotations/forParameterAnnotationResolve.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL annotation class Ann(val x: Int) data class A(val x: Int, val y: Int) diff --git a/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.fir.kt b/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.fir.kt deleted file mode 100644 index b9c8cf57036..00000000000 --- a/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.fir.kt +++ /dev/null @@ -1,7 +0,0 @@ -fun test(): Any? { - @ann val (a, b) = P(1, 1) - return a + b -} - -annotation class ann -data class P(val a: Int, val b: Int) \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.kt b/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.kt index a923b8f55ad..93ac247fb08 100644 --- a/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.kt +++ b/compiler/testData/diagnostics/tests/annotations/onMultiDeclaration.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL fun test(): Any? { @ann val (a, b) = P(1, 1) return a + b diff --git a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/KotlinTarget.kt b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/KotlinTarget.kt index 61bf33bba97..7dcd267bafa 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/KotlinTarget.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/KotlinTarget.kt @@ -71,15 +71,15 @@ enum class KotlinTarget(val description: String, val isDefault: Boolean = true) private val map = HashMap() init { - for (target in values()) { + for (target in entries) { map[target.name] = target } } fun valueOrNull(name: String): KotlinTarget? = map[name] - val DEFAULT_TARGET_SET: Set = values().filter { it.isDefault }.toSet() - val ALL_TARGET_SET: Set = values().toSet() + val DEFAULT_TARGET_SET: Set = entries.filter { it.isDefault }.toSet() + val ALL_TARGET_SET: Set = entries.toSet() val ANNOTATION_CLASS_LIST = listOf(ANNOTATION_CLASS, CLASS) val LOCAL_CLASS_LIST = listOf(LOCAL_CLASS, CLASS)