[FIR] Support typealiases in FirJsAbstractNativeAnnotationChecker
This commit is contained in:
committed by
Space Team
parent
aaf30c2695
commit
fc285c079e
+2
-2
@@ -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.analysis.diagnostics.js.FirJsErrors
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
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.hasAnnotation
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isExtension
|
import org.jetbrains.kotlin.fir.declarations.utils.isExtension
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
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.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.JsStandardClassIds
|
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)
|
protected fun FirFunction.hasRequiredAnnotation(context: CheckerContext) = hasAnnotation(requiredAnnotation, context.session)
|
||||||
|
|
||||||
override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) {
|
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 isMember = !context.isTopLevel && declaration.visibility != Visibilities.Local
|
||||||
val isExtension = declaration.isExtension
|
val isExtension = declaration.isExtension
|
||||||
|
|||||||
Vendored
+4
-2
@@ -1,9 +1,11 @@
|
|||||||
// FIR_IDENTICAL
|
// 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() {
|
fun foo() {
|
||||||
class A {
|
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
|
fun set(a: String, v: Any?): Any?<!> = null
|
||||||
|
|
||||||
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeSetter
|
<!NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN!>@nativeSetter
|
||||||
|
|||||||
compiler/testData/diagnostics/testsWithJsStdLib/native/nativeSetter/onLocalNonNativeClassMembers.txt
Vendored
+2
@@ -1,3 +1,5 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public fun foo(): kotlin.Unit
|
public fun foo(): kotlin.Unit
|
||||||
|
public typealias NS = kotlin.js.nativeSetter
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user