[FIR] Support typealiases in FirJsAbstractNativeAnnotationChecker

This commit is contained in:
Nikolay Lunyak
2023-01-11 10:09:24 +02:00
committed by Space Team
parent aaf30c2695
commit fc285c079e
3 changed files with 8 additions and 4 deletions
@@ -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
@@ -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 {
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeSetter
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@NS
fun set(a: String, v: Any?): Any?<!> = null
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeSetter
@@ -1,3 +1,5 @@
package
public fun foo(): kotlin.Unit
public typealias NS = kotlin.js.nativeSetter