[FIR] Add symbol to all declarations. Get rid of FirSymbolOwner
This commit is contained in:
+6
-3
@@ -12,7 +12,10 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||
import org.jetbrains.kotlin.fir.extensions.FirStatusTransformerExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.*
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.hasOrUnder
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.metaHasOrUnder
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.or
|
||||
import org.jetbrains.kotlin.fir.extensions.transform
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
@@ -21,7 +24,7 @@ class AllOpenStatusTransformer(session: FirSession) : FirStatusTransformerExtens
|
||||
private val ALL_OPEN = FqName("org.jetbrains.kotlin.fir.plugin.AllOpen")
|
||||
}
|
||||
|
||||
override fun transformStatus(declaration: FirDeclaration, owners: List<FirAnnotatedDeclaration>, status: FirDeclarationStatus): FirDeclarationStatus {
|
||||
override fun transformStatus(declaration: FirDeclaration<*>, owners: List<FirAnnotatedDeclaration<*>>, status: FirDeclarationStatus): FirDeclarationStatus {
|
||||
if (status.modality != null) return status
|
||||
return status.transform(modality = Modality.OPEN)
|
||||
}
|
||||
@@ -30,4 +33,4 @@ class AllOpenStatusTransformer(session: FirSession) : FirStatusTransformerExtens
|
||||
|
||||
override val key: FirPluginKey
|
||||
get() = AllOpenPluginKey
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -39,8 +39,8 @@ class AllOpenVisibilityTransformer(session: FirSession) : FirStatusTransformerEx
|
||||
}
|
||||
|
||||
override fun transformStatus(
|
||||
declaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>,
|
||||
declaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>,
|
||||
status: FirDeclarationStatus
|
||||
): FirDeclarationStatus {
|
||||
val visibility = findVisibility(declaration, owners) ?: return status
|
||||
@@ -48,7 +48,7 @@ class AllOpenVisibilityTransformer(session: FirSession) : FirStatusTransformerEx
|
||||
return status.transform(visibility = visibility)
|
||||
}
|
||||
|
||||
private fun findVisibility(declaration: FirDeclaration, owners: List<FirAnnotatedDeclaration>): Visibility? {
|
||||
private fun findVisibility(declaration: FirDeclaration<*>, owners: List<FirAnnotatedDeclaration<*>>): Visibility? {
|
||||
(declaration as? FirAnnotatedDeclaration)?.visibilityFromAnnotation()?.let { return it }
|
||||
for (owner in owners) {
|
||||
owner.visibilityFromAnnotation()?.let { return it }
|
||||
@@ -56,7 +56,7 @@ class AllOpenVisibilityTransformer(session: FirSession) : FirStatusTransformerEx
|
||||
return null
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.visibilityFromAnnotation(): Visibility? {
|
||||
private fun FirAnnotatedDeclaration<*>.visibilityFromAnnotation(): Visibility? {
|
||||
val annotation = annotations.firstOrNull {
|
||||
it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag?.classId == AllPublicClassId
|
||||
} ?: return null
|
||||
|
||||
+4
-2
@@ -7,12 +7,14 @@ package org.jetbrains.kotlin.fir.plugin.checkers
|
||||
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirMemberDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
|
||||
object DummyNameChecker : FirMemberDeclarationChecker() {
|
||||
override fun check(declaration: FirMemberDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
override fun check(declaration: FirMemberDeclaration<*>, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration !is FirSimpleFunction) return
|
||||
if (declaration.name.asString() == "dummy") {
|
||||
reporter.reportOn(declaration.source, FirErrors.SYNTAX, context)
|
||||
|
||||
+5
-5
@@ -23,19 +23,19 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class AllOpenMemberGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) {
|
||||
override fun generateClasses(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<FirRegularClass>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration> {
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration<*>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
override fun generateMembers(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<*>> {
|
||||
if (annotatedDeclaration !is FirProperty) return emptyList()
|
||||
val owner = owners.last() as? FirRegularClass ?: return emptyList()
|
||||
|
||||
+5
-5
@@ -33,8 +33,8 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class AllOpenNestedClassGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) {
|
||||
override fun generateClasses(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<FirRegularClass>> {
|
||||
val owner = annotatedDeclaration as? FirRegularClass ?: return emptyList()
|
||||
val newClass = buildRegularClass {
|
||||
@@ -56,7 +56,7 @@ class AllOpenNestedClassGenerator(session: FirSession) : FirDeclarationGeneratio
|
||||
return listOf(GeneratedDeclaration(newClass, owner))
|
||||
}
|
||||
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration> {
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration<*>> {
|
||||
val klass = generatedClass.klass
|
||||
|
||||
val classId = klass.symbol.classId
|
||||
@@ -92,8 +92,8 @@ class AllOpenNestedClassGenerator(session: FirSession) : FirDeclarationGeneratio
|
||||
}
|
||||
|
||||
override fun generateMembers(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<*>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
+5
-5
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class AllOpenRecursiveNestedClassGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) {
|
||||
override fun generateClasses(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<FirRegularClass>> {
|
||||
if (owners.size > 2) return emptyList()
|
||||
val owner = annotatedDeclaration as? FirRegularClass ?: return emptyList()
|
||||
@@ -62,13 +62,13 @@ class AllOpenRecursiveNestedClassGenerator(session: FirSession) : FirDeclaration
|
||||
return listOf(GeneratedDeclaration(newClass, owner))
|
||||
}
|
||||
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration> {
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration<*>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
override fun generateMembers(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<*>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
+5
-5
@@ -28,8 +28,8 @@ import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class AllOpenTopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) {
|
||||
override fun generateClasses(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<FirRegularClass>> {
|
||||
val file = owners.first() as FirFile
|
||||
val klass = annotatedDeclaration as? FirRegularClass ?: return emptyList()
|
||||
@@ -50,7 +50,7 @@ class AllOpenTopLevelDeclarationsGenerator(session: FirSession) : FirDeclaration
|
||||
return listOf(GeneratedDeclaration(newClass, file))
|
||||
}
|
||||
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration> {
|
||||
override fun generateMembersForGeneratedClass(generatedClass: GeneratedClass): List<FirDeclaration<*>> {
|
||||
val klass = generatedClass.klass
|
||||
val function = buildSimpleFunction {
|
||||
moduleData = session.moduleData
|
||||
@@ -69,8 +69,8 @@ class AllOpenTopLevelDeclarationsGenerator(session: FirSession) : FirDeclaration
|
||||
}
|
||||
|
||||
override fun generateMembers(
|
||||
annotatedDeclaration: FirDeclaration,
|
||||
owners: List<FirAnnotatedDeclaration>
|
||||
annotatedDeclaration: FirDeclaration<*>,
|
||||
owners: List<FirAnnotatedDeclaration<*>>
|
||||
): List<GeneratedDeclaration<*>> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user