From fc285c079e22c95dbab317fb19ebb42083acca03 Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Wed, 11 Jan 2023 10:09:24 +0200 Subject: [PATCH] [FIR] Support typealiases in FirJsAbstractNativeAnnotationChecker --- .../checkers/declaration/FirJsNativeAnnotationCheckers.kt | 4 ++-- .../native/nativeSetter/onLocalNonNativeClassMembers.kt | 6 ++++-- .../native/nativeSetter/onLocalNonNativeClassMembers.txt | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNativeAnnotationCheckers.kt b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNativeAnnotationCheckers.kt index deeb4a402fb..7fdd4d1382a 100644 --- a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNativeAnnotationCheckers.kt +++ b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNativeAnnotationCheckers.kt @@ -15,10 +15,10 @@ import org.jetbrains.kotlin.fir.analysis.checkers.isTopLevel import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId import org.jetbrains.kotlin.fir.declarations.hasAnnotation import org.jetbrains.kotlin.fir.declarations.utils.isExtension import org.jetbrains.kotlin.fir.declarations.utils.visibility -import org.jetbrains.kotlin.fir.expressions.unexpandedClassId import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.JsStandardClassIds @@ -27,7 +27,7 @@ internal abstract class FirJsAbstractNativeAnnotationChecker(private val require protected fun FirFunction.hasRequiredAnnotation(context: CheckerContext) = hasAnnotation(requiredAnnotation, context.session) override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.annotations.find { it.unexpandedClassId == requiredAnnotation } ?: return + val annotation = declaration.getAnnotationByClassId(requiredAnnotation, context.session) ?: return val isMember = !context.isTopLevel && declaration.visibility != Visibilities.Local val isExtension = declaration.isExtension diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.kt index 9d7e7668b2c..bc8f2c05fbe 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.kt @@ -1,9 +1,11 @@ // FIR_IDENTICAL -// !DIAGNOSTICS: -UNUSED_PARAMETER -NON_TOPLEVEL_CLASS_DECLARATION, -DEPRECATION +// !DIAGNOSTICS: -UNUSED_PARAMETER -NON_TOPLEVEL_CLASS_DECLARATION, -DEPRECATION -TYPEALIAS_EXPANSION_DEPRECATION + +typealias NS = nativeSetter fun foo() { class A { - @nativeSetter + @NS fun set(a: String, v: Any?): Any? = null @nativeSetter diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.txt index 65a6ac47e1f..82a0472f9a1 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.txt @@ -1,3 +1,5 @@ package public fun foo(): kotlin.Unit +public typealias NS = kotlin.js.nativeSetter +