FIR checkers: reuse CheckerContext.containingFile & isTopLevel
This commit is contained in:
committed by
teamcity
parent
a60eab7b47
commit
f0dbe1ad2d
+1
-4
@@ -14,11 +14,9 @@ import org.jetbrains.kotlin.fir.analysis.js.checkers.isNativeObject
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.isTopLevel
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.name.JsStandardClassIds
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.lastIsInstanceOrNull
|
||||
|
||||
object FirJsExternalFileChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
@@ -28,8 +26,7 @@ object FirJsExternalFileChecker : FirBasicDeclarationChecker() {
|
||||
return
|
||||
}
|
||||
|
||||
val targetAnnotations = context.containingDeclarations
|
||||
.lastIsInstanceOrNull<FirFile>()
|
||||
val targetAnnotations = context.containingFile
|
||||
?.annotations
|
||||
?.firstOrNull { it.fullyExpandedClassId(context.session) in JsStandardClassIds.Annotations.annotationsRequiringExternal }
|
||||
|
||||
|
||||
+2
-7
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.analysis.js.checkers.isNativeObject
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.name.JsStandardClassIds.Annotations.JsModule
|
||||
import org.jetbrains.kotlin.name.JsStandardClassIds.Annotations.JsNonModule
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.lastIsInstanceOrNull
|
||||
|
||||
object FirJsModuleChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
@@ -33,12 +32,8 @@ object FirJsModuleChecker : FirBasicDeclarationChecker() {
|
||||
reporter.reportOn(declaration.source, FirJsErrors.JS_MODULE_PROHIBITED_ON_NON_NATIVE, context)
|
||||
}
|
||||
|
||||
if (context.isTopLevel) {
|
||||
val file = context.containingDeclarations.lastIsInstanceOrNull<FirFile>()
|
||||
|
||||
if (file != null && file.isEitherModuleOrNonModule(context.session)) {
|
||||
reporter.reportOn(declaration.source, FirJsErrors.NESTED_JS_MODULE_PROHIBITED, context)
|
||||
}
|
||||
if (context.isTopLevel && context.containingFile?.isEitherModuleOrNonModule(context.session) == true) {
|
||||
reporter.reportOn(declaration.source, FirJsErrors.NESTED_JS_MODULE_PROHIBITED, context)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user