[FIR] Get rid of FirAnnotatedDeclaration
Now all fir declarations have annotations ^KT-49260 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
0eb2d117ef
commit
4490f64666
+5
-5
@@ -5,12 +5,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
|
||||
import org.jetbrains.kotlin.analysis.api.components.RendererModifier
|
||||
import org.jetbrains.kotlin.analysis.api.fir.types.PublicTypeApproximator
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.PsiSourceNavigator.getRawName
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
@@ -18,10 +22,6 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
|
||||
import org.jetbrains.kotlin.analysis.api.components.RendererModifier
|
||||
import org.jetbrains.kotlin.analysis.api.fir.types.PublicTypeApproximator
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.PsiSourceNavigator.getRawName
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.renderer.render
|
||||
@@ -37,7 +37,7 @@ internal class FirIdeRenderer private constructor(
|
||||
|
||||
private val typeIdeRenderer: ConeTypeIdeRenderer = ConeTypeIdeRenderer(session, options.typeRendererOptions)
|
||||
|
||||
private fun StringBuilder.renderAnnotations(annotated: FirAnnotatedDeclaration) {
|
||||
private fun StringBuilder.renderAnnotations(annotated: FirDeclaration) {
|
||||
if (RendererModifier.ANNOTATIONS in options.modifiers) {
|
||||
renderAnnotations(typeIdeRenderer, annotated.annotations, session)
|
||||
}
|
||||
|
||||
+7
-7
@@ -8,31 +8,31 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols.annotations
|
||||
import org.jetbrains.kotlin.analysis.api.fir.utils.FirRefWithValidityCheck
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveType
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.resolved
|
||||
import org.jetbrains.kotlin.fir.declarations.primaryConstructorIfAny
|
||||
import org.jetbrains.kotlin.fir.declarations.resolved
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
internal fun FirAnnotation.getClassId(session: FirSession): ClassId? =
|
||||
coneClassLikeType?.fullyExpandedType(session)?.classId
|
||||
|
||||
internal fun FirRefWithValidityCheck<FirAnnotatedDeclaration>.toAnnotationsList() = withFir { fir ->
|
||||
internal fun FirRefWithValidityCheck<FirDeclaration>.toAnnotationsList() = withFir { fir ->
|
||||
fir.annotations.map { KtFirAnnotationCall(this, it) }
|
||||
}
|
||||
|
||||
internal fun FirRefWithValidityCheck<FirAnnotatedDeclaration>.containsAnnotation(classId: ClassId): Boolean =
|
||||
internal fun FirRefWithValidityCheck<FirDeclaration>.containsAnnotation(classId: ClassId): Boolean =
|
||||
withFirByType(ResolveType.AnnotationType) { fir ->
|
||||
fir.annotations.any { it.getClassId(fir.moduleData.session) == classId }
|
||||
}
|
||||
|
||||
internal fun FirRefWithValidityCheck<FirAnnotatedDeclaration>.getAnnotationClassIds(): Collection<ClassId> =
|
||||
internal fun FirRefWithValidityCheck<FirDeclaration>.getAnnotationClassIds(): Collection<ClassId> =
|
||||
withFirByType(ResolveType.AnnotationType) { fir ->
|
||||
fir.annotations.mapNotNull { it.getClassId(fir.moduleData.session) }
|
||||
}
|
||||
|
||||
+6
-3
@@ -5,7 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.providers
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProviderInternals
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -25,10 +28,10 @@ internal class FirIdeBuiltinsAndCloneableSessionProvider(override val symbolProv
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
override fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
override fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
|
||||
+6
-3
@@ -5,7 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.providers
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProviderInternals
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -27,10 +30,10 @@ internal class FirIdeLibrariesSessionProvider(
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
override fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
override fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
|
||||
+6
-3
@@ -14,7 +14,10 @@ import org.jetbrains.kotlin.analysis.providers.KotlinPackageProvider
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.NoMutableState
|
||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
@@ -88,12 +91,12 @@ internal class FirIdeProvider(
|
||||
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass) {
|
||||
override fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass) {
|
||||
TODO()
|
||||
}
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration) {
|
||||
override fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration) {
|
||||
TODO()
|
||||
}
|
||||
|
||||
|
||||
+7
-9
@@ -5,16 +5,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.FirPhaseRunner
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ensurePhase
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirAnnotationArgumentsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.FirPhaseRunner
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ensurePhase
|
||||
|
||||
internal class FirDesignatedAnnotationArgumentsResolveTransformerForIDE(
|
||||
private val designation: FirDeclarationDesignationWithFile,
|
||||
@@ -67,11 +67,9 @@ internal class FirDesignatedAnnotationArgumentsResolveTransformerForIDE(
|
||||
}
|
||||
|
||||
override fun ensureResolved(declaration: FirDeclaration) {
|
||||
if (declaration is FirAnnotatedDeclaration) {
|
||||
val unresolvedAnnotation = declaration.annotations.firstOrNull { it.annotationTypeRef !is FirResolvedTypeRef }
|
||||
check(unresolvedAnnotation == null) {
|
||||
"Unexpected annotationTypeRef annotation, expected resolvedType but actual ${unresolvedAnnotation?.annotationTypeRef}"
|
||||
}
|
||||
val unresolvedAnnotation = declaration.annotations.firstOrNull { it.annotationTypeRef !is FirResolvedTypeRef }
|
||||
check(unresolvedAnnotation == null) {
|
||||
"Unexpected annotationTypeRef annotation, expected resolvedType but actual ${unresolvedAnnotation?.annotationTypeRef}"
|
||||
}
|
||||
when (declaration) {
|
||||
is FirSimpleFunction, is FirConstructor, is FirAnonymousInitializer ->
|
||||
|
||||
-1
@@ -69,7 +69,6 @@ fun main(args: Array<String>) {
|
||||
alias<FirConstructor>("ConstructorChecker")
|
||||
alias<FirFile>("FileChecker")
|
||||
alias<FirTypeParameter>("FirTypeParameterChecker")
|
||||
alias<FirAnnotatedDeclaration>("FirAnnotatedDeclarationChecker")
|
||||
alias<FirTypeAlias>("TypeAliasChecker")
|
||||
alias<FirAnonymousFunction>("AnonymousFunctionChecker")
|
||||
alias<FirPropertyAccessor>("PropertyAccessorChecker")
|
||||
|
||||
+2
-6
@@ -14,13 +14,9 @@ object JvmDeclarationCheckers : DeclarationCheckers() {
|
||||
FirJvmExternalDeclarationChecker,
|
||||
FirJvmNameChecker,
|
||||
FirJvmDefaultChecker,
|
||||
FirJvmFunctionDelegateMemberNameClashChecker
|
||||
)
|
||||
|
||||
override val annotatedDeclarationCheckers: Set<FirAnnotatedDeclarationChecker>
|
||||
get() = setOf(
|
||||
FirJvmFunctionDelegateMemberNameClashChecker,
|
||||
FirJvmStaticChecker,
|
||||
FirRepeatableAnnotationChecker
|
||||
FirRepeatableAnnotationChecker,
|
||||
)
|
||||
|
||||
override val classCheckers: Set<FirClassChecker>
|
||||
|
||||
+32
-35
@@ -7,13 +7,13 @@ package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isCompiledToJvmDefault
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isJvm6
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
@@ -22,57 +22,54 @@ import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.java.jvmDefaultModeState
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassUseSiteMemberScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_CLASS_ID
|
||||
import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID
|
||||
|
||||
object FirJvmDefaultChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val jvmDefaultMode = context.session.jvmDefaultModeState
|
||||
var defaultAnnotation: FirAnnotation? = null
|
||||
val containingDeclaration = context.findClosest<FirClassLikeDeclaration>()
|
||||
|
||||
if (declaration is FirAnnotatedDeclaration) {
|
||||
val isJvm6 = context.isJvm6()
|
||||
defaultAnnotation = declaration.getAnnotationByClassId(JVM_DEFAULT_CLASS_ID)
|
||||
val isJvm6 = context.isJvm6()
|
||||
val defaultAnnotation = declaration.getAnnotationByClassId(JVM_DEFAULT_CLASS_ID)
|
||||
|
||||
if (defaultAnnotation != null) {
|
||||
if (containingDeclaration !is FirClass || !containingDeclaration.isInterface) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_NOT_IN_INTERFACE, context)
|
||||
return
|
||||
} else if (isJvm6) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_IN_JVM6_TARGET, "JvmDefault", context)
|
||||
if (defaultAnnotation != null) {
|
||||
if (containingDeclaration !is FirClass || !containingDeclaration.isInterface) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_NOT_IN_INTERFACE, context)
|
||||
return
|
||||
} else if (isJvm6) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_IN_JVM6_TARGET, "JvmDefault", context)
|
||||
return
|
||||
} else if (!jvmDefaultMode.isEnabled) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_IN_DECLARATION, "JvmDefault", context)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
val annotation = declaration.getAnnotationByClassId(JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID)
|
||||
if (annotation != null) {
|
||||
if (isJvm6) {
|
||||
reporter.reportOn(
|
||||
annotation.source,
|
||||
FirJvmErrors.JVM_DEFAULT_IN_JVM6_TARGET,
|
||||
"JvmDefaultWithoutCompatibility",
|
||||
context
|
||||
)
|
||||
return
|
||||
} else if (!jvmDefaultMode.isEnabled) {
|
||||
reporter.reportOn(defaultAnnotation.source, FirJvmErrors.JVM_DEFAULT_IN_DECLARATION, "JvmDefault", context)
|
||||
reporter.reportOn(
|
||||
annotation.source,
|
||||
FirJvmErrors.JVM_DEFAULT_IN_DECLARATION,
|
||||
"JvmDefaultWithoutCompatibility",
|
||||
context
|
||||
)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
val annotation = declaration.getAnnotationByClassId(JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID)
|
||||
if (annotation != null) {
|
||||
if (isJvm6) {
|
||||
reporter.reportOn(
|
||||
annotation.source,
|
||||
FirJvmErrors.JVM_DEFAULT_IN_JVM6_TARGET,
|
||||
"JvmDefaultWithoutCompatibility",
|
||||
context
|
||||
)
|
||||
return
|
||||
} else if (!jvmDefaultMode.isEnabled) {
|
||||
reporter.reportOn(
|
||||
annotation.source,
|
||||
FirJvmErrors.JVM_DEFAULT_IN_DECLARATION,
|
||||
"JvmDefaultWithoutCompatibility",
|
||||
context
|
||||
)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-7
@@ -5,12 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isOpen
|
||||
@@ -28,10 +28,6 @@ object FirJvmNameChecker : FirBasicDeclarationChecker() {
|
||||
private val NAME = Name.identifier("name")
|
||||
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration !is FirAnnotatedDeclaration) {
|
||||
return
|
||||
}
|
||||
|
||||
val jvmName = declaration.findJvmNameAnnotation() ?: return
|
||||
val name = jvmName.findArgumentByName(NAME) ?: return
|
||||
|
||||
@@ -60,7 +56,7 @@ object FirJvmNameChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.findJvmNameAnnotation(): FirAnnotation? {
|
||||
private fun FirDeclaration.findJvmNameAnnotation(): FirAnnotation? {
|
||||
return annotations.firstOrNull {
|
||||
it.annotationTypeRef.coneType.classId == StandardClassIds.Annotations.JvmName
|
||||
}
|
||||
|
||||
+11
-11
@@ -11,12 +11,12 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.descriptors.isInterface
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.classKind
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirAnnotatedDeclarationChecker
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
@@ -31,8 +31,8 @@ import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
override fun check(declaration: FirAnnotatedDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
object FirJvmStaticChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration is FirConstructor) {
|
||||
// WRONG_DECLARATION_TARGET
|
||||
return
|
||||
@@ -48,7 +48,7 @@ object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
checkAnnotated(declaration, context, reporter, declaration.source)
|
||||
}
|
||||
|
||||
fun checkIfAnnotated(it: FirAnnotatedDeclaration) {
|
||||
fun checkIfAnnotated(it: FirDeclaration) {
|
||||
if (!it.hasAnnotation(StandardClassIds.Annotations.JvmStatic)) {
|
||||
return
|
||||
}
|
||||
@@ -63,7 +63,7 @@ object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkAnnotated(
|
||||
declaration: FirAnnotatedDeclaration,
|
||||
declaration: FirDeclaration,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter,
|
||||
targetSource: KtSourceElement?,
|
||||
@@ -113,7 +113,7 @@ object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkForInterface(
|
||||
declaration: FirAnnotatedDeclaration,
|
||||
declaration: FirDeclaration,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter,
|
||||
targetSource: KtSourceElement?,
|
||||
@@ -195,7 +195,7 @@ object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkStaticOnConstOrJvmField(
|
||||
declaration: FirAnnotatedDeclaration,
|
||||
declaration: FirDeclaration,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter,
|
||||
targetSource: KtSourceElement?,
|
||||
@@ -239,11 +239,11 @@ object FirJvmStaticChecker : FirAnnotatedDeclarationChecker() {
|
||||
|
||||
private fun FirClassLikeSymbol<*>.isCompanion() = safeAs<FirRegularClassSymbol>()?.isCompanion == true
|
||||
|
||||
private fun FirAnnotatedDeclaration.hasAnnotationNamedAs(classId: ClassId): Boolean {
|
||||
private fun FirDeclaration.hasAnnotationNamedAs(classId: ClassId): Boolean {
|
||||
return findAnnotation(classId) != null
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.findAnnotation(classId: ClassId): FirAnnotation? {
|
||||
private fun FirDeclaration.findAnnotation(classId: ClassId): FirAnnotation? {
|
||||
return annotations.firstOrNull {
|
||||
it.annotationTypeRef.coneType.classId == classId
|
||||
}
|
||||
|
||||
+5
-6
@@ -5,20 +5,19 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
||||
|
||||
//import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.containsRepeatableAnnotation
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirAnnotatedDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getAllowedAnnotationTargets
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getAnnotationRetention
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isJvm6
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -37,10 +36,10 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
object FirRepeatableAnnotationChecker : FirAnnotatedDeclarationChecker() {
|
||||
object FirRepeatableAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
private val REPEATABLE_ANNOTATION_CONTAINER_NAME = Name.identifier(JvmAbi.REPEATABLE_ANNOTATION_CONTAINER_NAME)
|
||||
|
||||
override fun check(declaration: FirAnnotatedDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val annotationsMap = hashMapOf<ConeKotlinType, MutableList<AnnotationUseSiteTarget?>>()
|
||||
|
||||
val session = context.session
|
||||
|
||||
-4
@@ -33,8 +33,6 @@ class ComposedDeclarationCheckers : DeclarationCheckers() {
|
||||
get() = _fileCheckers
|
||||
override val typeParameterCheckers: Set<FirTypeParameterChecker>
|
||||
get() = _typeParameterCheckers
|
||||
override val annotatedDeclarationCheckers: Set<FirAnnotatedDeclarationChecker>
|
||||
get() = _annotatedDeclarationCheckers
|
||||
override val typeAliasCheckers: Set<FirTypeAliasChecker>
|
||||
get() = _typeAliasCheckers
|
||||
override val anonymousFunctionCheckers: Set<FirAnonymousFunctionChecker>
|
||||
@@ -65,7 +63,6 @@ class ComposedDeclarationCheckers : DeclarationCheckers() {
|
||||
private val _constructorCheckers: MutableSet<FirConstructorChecker> = mutableSetOf()
|
||||
private val _fileCheckers: MutableSet<FirFileChecker> = mutableSetOf()
|
||||
private val _typeParameterCheckers: MutableSet<FirTypeParameterChecker> = mutableSetOf()
|
||||
private val _annotatedDeclarationCheckers: MutableSet<FirAnnotatedDeclarationChecker> = mutableSetOf()
|
||||
private val _typeAliasCheckers: MutableSet<FirTypeAliasChecker> = mutableSetOf()
|
||||
private val _anonymousFunctionCheckers: MutableSet<FirAnonymousFunctionChecker> = mutableSetOf()
|
||||
private val _propertyAccessorCheckers: MutableSet<FirPropertyAccessorChecker> = mutableSetOf()
|
||||
@@ -88,7 +85,6 @@ class ComposedDeclarationCheckers : DeclarationCheckers() {
|
||||
_constructorCheckers += checkers.constructorCheckers
|
||||
_fileCheckers += checkers.fileCheckers
|
||||
_typeParameterCheckers += checkers.typeParameterCheckers
|
||||
_annotatedDeclarationCheckers += checkers.annotatedDeclarationCheckers
|
||||
_typeAliasCheckers += checkers.typeAliasCheckers
|
||||
_anonymousFunctionCheckers += checkers.anonymousFunctionCheckers
|
||||
_propertyAccessorCheckers += checkers.propertyAccessorCheckers
|
||||
|
||||
+15
-17
@@ -28,7 +28,6 @@ abstract class DeclarationCheckers {
|
||||
open val constructorCheckers: Set<FirConstructorChecker> = emptySet()
|
||||
open val fileCheckers: Set<FirFileChecker> = emptySet()
|
||||
open val typeParameterCheckers: Set<FirTypeParameterChecker> = emptySet()
|
||||
open val annotatedDeclarationCheckers: Set<FirAnnotatedDeclarationChecker> = emptySet()
|
||||
open val typeAliasCheckers: Set<FirTypeAliasChecker> = emptySet()
|
||||
open val anonymousFunctionCheckers: Set<FirAnonymousFunctionChecker> = emptySet()
|
||||
open val propertyAccessorCheckers: Set<FirPropertyAccessorChecker> = emptySet()
|
||||
@@ -42,21 +41,20 @@ abstract class DeclarationCheckers {
|
||||
open val variableAssignmentCfaBasedCheckers: Set<AbstractFirPropertyInitializationChecker> = emptySet()
|
||||
|
||||
@CheckersComponentInternal internal val allBasicDeclarationCheckers: Set<FirBasicDeclarationChecker> by lazy { basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allFunctionCheckers: Set<FirFunctionChecker> by lazy { functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allSimpleFunctionCheckers: Set<FirSimpleFunctionChecker> by lazy { simpleFunctionCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allPropertyCheckers: Set<FirPropertyChecker> by lazy { propertyCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allClassCheckers: Set<FirClassChecker> by lazy { classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allRegularClassCheckers: Set<FirRegularClassChecker> by lazy { regularClassCheckers + classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allConstructorCheckers: Set<FirConstructorChecker> by lazy { constructorCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allFileCheckers: Set<FirFileChecker> by lazy { fileCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allTypeParameterCheckers: Set<FirTypeParameterChecker> by lazy { typeParameterCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnnotatedDeclarationCheckers: Set<FirAnnotatedDeclarationChecker> by lazy { annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allTypeAliasCheckers: Set<FirTypeAliasChecker> by lazy { typeAliasCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnonymousFunctionCheckers: Set<FirAnonymousFunctionChecker> by lazy { anonymousFunctionCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allPropertyAccessorCheckers: Set<FirPropertyAccessorChecker> by lazy { propertyAccessorCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allBackingFieldCheckers: Set<FirBackingFieldChecker> by lazy { backingFieldCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allValueParameterCheckers: Set<FirValueParameterChecker> by lazy { valueParameterCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allEnumEntryCheckers: Set<FirEnumEntryChecker> by lazy { enumEntryCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnonymousObjectCheckers: Set<FirAnonymousObjectChecker> by lazy { anonymousObjectCheckers + classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allFunctionCheckers: Set<FirFunctionChecker> by lazy { functionCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allSimpleFunctionCheckers: Set<FirSimpleFunctionChecker> by lazy { simpleFunctionCheckers + functionCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allPropertyCheckers: Set<FirPropertyChecker> by lazy { propertyCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allClassCheckers: Set<FirClassChecker> by lazy { classCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allRegularClassCheckers: Set<FirRegularClassChecker> by lazy { regularClassCheckers + classCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allConstructorCheckers: Set<FirConstructorChecker> by lazy { constructorCheckers + functionCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allFileCheckers: Set<FirFileChecker> by lazy { fileCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allTypeParameterCheckers: Set<FirTypeParameterChecker> by lazy { typeParameterCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allTypeAliasCheckers: Set<FirTypeAliasChecker> by lazy { typeAliasCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnonymousFunctionCheckers: Set<FirAnonymousFunctionChecker> by lazy { anonymousFunctionCheckers + functionCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allPropertyAccessorCheckers: Set<FirPropertyAccessorChecker> by lazy { propertyAccessorCheckers + functionCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allBackingFieldCheckers: Set<FirBackingFieldChecker> by lazy { backingFieldCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allValueParameterCheckers: Set<FirValueParameterChecker> by lazy { valueParameterCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allEnumEntryCheckers: Set<FirEnumEntryChecker> by lazy { enumEntryCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnonymousObjectCheckers: Set<FirAnonymousObjectChecker> by lazy { anonymousObjectCheckers + classCheckers + basicDeclarationCheckers }
|
||||
@CheckersComponentInternal internal val allAnonymousInitializerCheckers: Set<FirAnonymousInitializerChecker> by lazy { anonymousInitializerCheckers + basicDeclarationCheckers }
|
||||
}
|
||||
|
||||
-2
@@ -10,7 +10,6 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
||||
@@ -38,7 +37,6 @@ typealias FirRegularClassChecker = FirDeclarationChecker<FirRegularClass>
|
||||
typealias FirConstructorChecker = FirDeclarationChecker<FirConstructor>
|
||||
typealias FirFileChecker = FirDeclarationChecker<FirFile>
|
||||
typealias FirTypeParameterChecker = FirDeclarationChecker<FirTypeParameter>
|
||||
typealias FirAnnotatedDeclarationChecker = FirDeclarationChecker<FirAnnotatedDeclaration>
|
||||
typealias FirTypeAliasChecker = FirDeclarationChecker<FirTypeAlias>
|
||||
typealias FirAnonymousFunctionChecker = FirDeclarationChecker<FirAnonymousFunction>
|
||||
typealias FirPropertyAccessorChecker = FirDeclarationChecker<FirPropertyAccessor>
|
||||
|
||||
+3
-7
@@ -30,6 +30,9 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
FirInvalidAndDangerousCharactersChecker,
|
||||
FirAmbiguousAnonymousTypeChecker,
|
||||
FirExplicitApiDeclarationChecker,
|
||||
FirAnnotationChecker,
|
||||
FirPublishedApiChecker,
|
||||
FirOptInMarkedDeclarationChecker,
|
||||
)
|
||||
|
||||
override val functionCheckers: Set<FirFunctionChecker>
|
||||
@@ -138,13 +141,6 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
FirTypeParameterSyntaxChecker,
|
||||
)
|
||||
|
||||
override val annotatedDeclarationCheckers: Set<FirAnnotatedDeclarationChecker>
|
||||
get() = setOf(
|
||||
FirAnnotationChecker,
|
||||
FirPublishedApiChecker,
|
||||
FirOptInMarkedDeclarationChecker,
|
||||
)
|
||||
|
||||
override val typeAliasCheckers: Set<FirTypeAliasChecker>
|
||||
get() = setOf(
|
||||
FirTopLevelTypeAliasChecker,
|
||||
|
||||
+3
-4
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||
@@ -15,8 +14,8 @@ import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
@@ -80,11 +79,11 @@ fun FirClassLikeSymbol<*>.getAllowedAnnotationTargets(): Set<KotlinTarget> {
|
||||
}
|
||||
}
|
||||
|
||||
fun FirAnnotatedDeclaration.getRetentionAnnotation(): FirAnnotation? {
|
||||
fun FirDeclaration.getRetentionAnnotation(): FirAnnotation? {
|
||||
return getAnnotationByClassId(StandardClassIds.Annotations.Retention)
|
||||
}
|
||||
|
||||
fun FirAnnotatedDeclaration.getTargetAnnotation(): FirAnnotation? {
|
||||
fun FirDeclaration.getTargetAnnotation(): FirAnnotation? {
|
||||
return getAnnotationByClassId(StandardClassIds.Annotations.Target)
|
||||
}
|
||||
|
||||
|
||||
@@ -5,18 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers
|
||||
|
||||
import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||
import org.jetbrains.kotlin.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.getChild
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassForLocalAttr
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
@@ -38,6 +40,7 @@ import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.unwrapFakeOverrides
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.*
|
||||
import org.jetbrains.kotlin.psi.KtParameter.VAL_VAR_TOKEN_SET
|
||||
@@ -370,7 +373,7 @@ private fun lowerThanBound(context: ConeInferenceContext, argument: ConeKotlinTy
|
||||
}
|
||||
|
||||
fun FirMemberDeclaration.isInlineOnly(): Boolean =
|
||||
isInline && (this as FirAnnotatedDeclaration).hasAnnotation(INLINE_ONLY_ANNOTATION_CLASS_ID)
|
||||
isInline && hasAnnotation(INLINE_ONLY_ANNOTATION_CLASS_ID)
|
||||
|
||||
fun isSubtypeForTypeMismatch(context: ConeInferenceContext, subtype: ConeKotlinType, supertype: ConeKotlinType): Boolean {
|
||||
val subtypeFullyExpanded = subtype.fullyExpandedType(context.session)
|
||||
|
||||
+4
-4
@@ -40,7 +40,7 @@ private data class FirSinceKotlinValue(
|
||||
val wasExperimentalMarkerClasses: List<FirRegularClassSymbol>
|
||||
)
|
||||
|
||||
fun FirAnnotatedDeclaration.checkSinceKotlinVersionAccessibility(context: CheckerContext): FirSinceKotlinAccessibility {
|
||||
fun FirDeclaration.checkSinceKotlinVersionAccessibility(context: CheckerContext): FirSinceKotlinAccessibility {
|
||||
val value = getOwnSinceKotlinVersion(context.session)
|
||||
val version = value?.apiVersion
|
||||
val languageVersionSettings = context.session.languageVersionSettings
|
||||
@@ -59,11 +59,11 @@ fun FirAnnotatedDeclaration.checkSinceKotlinVersionAccessibility(context: Checke
|
||||
return FirSinceKotlinAccessibility.NotAccessible(version)
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSinceKotlinValue? {
|
||||
private fun FirDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSinceKotlinValue? {
|
||||
var result: FirSinceKotlinValue? = null
|
||||
|
||||
// TODO: use-site targeted annotations
|
||||
fun FirAnnotatedDeclaration.consider() {
|
||||
fun FirDeclaration.consider() {
|
||||
val sinceKotlinSingleArgument = getAnnotationByClassId(StandardClassIds.Annotations.SinceKotlin)?.findArgumentByName(StandardClassIds.Annotations.ParameterNames.sinceKotlinVersion)
|
||||
val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String)?.let(ApiVersion.Companion::parse)
|
||||
if (apiVersion != null) {
|
||||
@@ -96,7 +96,7 @@ private fun FirAnnotatedDeclaration.getOwnSinceKotlinVersion(session: FirSession
|
||||
return result
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.loadWasExperimentalMarkerClasses(): List<FirRegularClassSymbol> {
|
||||
private fun FirDeclaration.loadWasExperimentalMarkerClasses(): List<FirRegularClassSymbol> {
|
||||
val wasExperimental = getAnnotationByClassId(OptInNames.WAS_EXPERIMENTAL_CLASS_ID) ?: return emptyList()
|
||||
val annotationClasses = wasExperimental.findArgumentByName(OptInNames.WAS_EXPERIMENTAL_ANNOTATION_CLASS) ?: return emptyList()
|
||||
return annotationClasses.extractClassesFromArgument()
|
||||
|
||||
+6
-5
@@ -16,7 +16,8 @@ import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.hasBackingField
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
@@ -31,12 +32,12 @@ import org.jetbrains.kotlin.fir.types.customAnnotations
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
object FirAnnotationChecker : FirAnnotatedDeclarationChecker() {
|
||||
object FirAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
private val deprecatedClassId = FqName("kotlin.Deprecated")
|
||||
private val deprecatedSinceKotlinClassId = FqName("kotlin.DeprecatedSinceKotlin")
|
||||
|
||||
override fun check(
|
||||
declaration: FirAnnotatedDeclaration,
|
||||
declaration: FirDeclaration,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
) {
|
||||
@@ -75,7 +76,7 @@ object FirAnnotationChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkAnnotationTarget(
|
||||
declaration: FirAnnotatedDeclaration,
|
||||
declaration: FirDeclaration,
|
||||
annotation: FirAnnotation,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
@@ -124,7 +125,7 @@ object FirAnnotationChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkAnnotationUseSiteTarget(
|
||||
annotated: FirAnnotatedDeclaration,
|
||||
annotated: FirDeclaration,
|
||||
annotation: FirAnnotation,
|
||||
target: AnnotationUseSiteTarget,
|
||||
context: CheckerContext,
|
||||
|
||||
+4
-4
@@ -14,13 +14,13 @@ import org.jetbrains.kotlin.fir.analysis.checkers.getAllowedAnnotationTargets
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getAnnotationClassForOptInMarker
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
|
||||
object FirOptInMarkedDeclarationChecker : FirAnnotatedDeclarationChecker() {
|
||||
override fun check(declaration: FirAnnotatedDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
object FirOptInMarkedDeclarationChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
for (annotation in declaration.annotations) {
|
||||
val annotationClass = annotation.getAnnotationClassForOptInMarker(context.session) ?: continue
|
||||
withSuppressedDiagnostics(annotation, context) {
|
||||
@@ -43,4 +43,4 @@ object FirOptInMarkedDeclarationChecker : FirAnnotatedDeclarationChecker() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -6,19 +6,19 @@
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
object FirPublishedApiChecker : FirAnnotatedDeclarationChecker() {
|
||||
override fun check(declaration: FirAnnotatedDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
object FirPublishedApiChecker : FirBasicDeclarationChecker() {
|
||||
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration !is FirMemberDeclaration) return
|
||||
if (declaration is FirValueParameter) return
|
||||
if (declaration.visibility == Visibilities.Internal) return
|
||||
|
||||
+9
-12
@@ -6,17 +6,14 @@
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers.expression
|
||||
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.findArgumentByName
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
@@ -27,14 +24,14 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.processDirectlyOverriddenFunctions
|
||||
import org.jetbrains.kotlin.fir.scopes.processDirectlyOverriddenProperties
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
||||
import org.jetbrains.kotlin.utils.SmartSet
|
||||
@@ -57,10 +54,10 @@ object FirOptInUsageBaseChecker {
|
||||
fun FirBasedSymbol<*>.loadExperimentalitiesFromAnnotationTo(session: FirSession, result: MutableCollection<Experimentality>) {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
@OptIn(SymbolInternals::class)
|
||||
(fir as? FirAnnotatedDeclaration)?.loadExperimentalitiesFromAnnotationTo(session, result)
|
||||
fir.loadExperimentalitiesFromAnnotationTo(session, result)
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.loadExperimentalitiesFromAnnotationTo(
|
||||
private fun FirDeclaration.loadExperimentalitiesFromAnnotationTo(
|
||||
session: FirSession,
|
||||
result: MutableCollection<Experimentality>
|
||||
) {
|
||||
@@ -104,12 +101,12 @@ object FirOptInUsageBaseChecker {
|
||||
private fun FirBasedSymbol<*>.loadExperimentalities(
|
||||
context: CheckerContext,
|
||||
knownExperimentalities: SmartSet<Experimentality>?,
|
||||
visited: MutableSet<FirAnnotatedDeclaration>,
|
||||
visited: MutableSet<FirDeclaration>,
|
||||
fromSetter: Boolean,
|
||||
dispatchReceiverType: ConeKotlinType?,
|
||||
): Set<Experimentality> {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
val fir = this.fir as? FirAnnotatedDeclaration ?: return emptySet()
|
||||
val fir = this.fir
|
||||
if (!visited.add(fir)) return emptySet()
|
||||
val result = knownExperimentalities ?: SmartSet.create()
|
||||
val session = context.session
|
||||
@@ -176,7 +173,7 @@ object FirOptInUsageBaseChecker {
|
||||
private fun ConeKotlinType?.addExperimentalities(
|
||||
context: CheckerContext,
|
||||
result: SmartSet<Experimentality>,
|
||||
visited: MutableSet<FirAnnotatedDeclaration> = mutableSetOf()
|
||||
visited: MutableSet<FirDeclaration> = mutableSetOf()
|
||||
) {
|
||||
if (this !is ConeClassLikeType) return
|
||||
lookupTag.toSymbol(context.session)?.loadExperimentalities(
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ class FirSignatureEnhancement(
|
||||
return enhancements.getOrPut(property) { enhance(property, name) } as FirVariableSymbol<*>
|
||||
}
|
||||
|
||||
private fun FirAnnotatedDeclaration.computeDefaultQualifiers() =
|
||||
private fun FirDeclaration.computeDefaultQualifiers() =
|
||||
typeQualifierResolver.extractAndMergeDefaultQualifiers(contextQualifiers, annotations)
|
||||
|
||||
private fun enhance(
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ private val USE_SITE_TARGET_NAME_MAP = mapOf(
|
||||
private val DEFAULT_USE_SITE_TARGETS: Set<AnnotationUseSiteTarget> =
|
||||
USE_SITE_TARGET_NAME_MAP.values.fold(setOf<AnnotationUseSiteTarget>()) { a, b -> a + b } - setOf(AnnotationUseSiteTarget.FILE)
|
||||
|
||||
fun FirAnnotatedDeclaration.hasAnnotation(classId: ClassId): Boolean {
|
||||
fun FirDeclaration.hasAnnotation(classId: ClassId): Boolean {
|
||||
return annotations.any { it.toAnnotationClassId() == classId }
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -7,7 +7,10 @@ package org.jetbrains.kotlin.fir.resolve.providers
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -42,10 +45,10 @@ abstract class FirProvider : FirSessionComponent {
|
||||
abstract fun getFirFilesByPackage(fqName: FqName): List<FirFile>
|
||||
|
||||
@FirProviderInternals
|
||||
abstract fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass)
|
||||
abstract fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass)
|
||||
|
||||
@FirProviderInternals
|
||||
abstract fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration)
|
||||
abstract fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration)
|
||||
|
||||
abstract fun getClassNamesInPackage(fqName: FqName): Set<Name>
|
||||
}
|
||||
|
||||
+24
-24
@@ -11,7 +11,7 @@ import kotlinx.collections.immutable.PersistentList
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||
import org.jetbrains.kotlin.fir.NoMutableState
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.*
|
||||
import org.jetbrains.kotlin.fir.resolve.fqName
|
||||
@@ -25,11 +25,11 @@ abstract class FirPredicateBasedProvider : FirSessionComponent {
|
||||
}
|
||||
|
||||
abstract fun getSymbolsByPredicate(predicate: DeclarationPredicate): List<FirBasedSymbol<*>>
|
||||
abstract fun getOwnersOfDeclaration(declaration: FirAnnotatedDeclaration): List<FirBasedSymbol<*>>?
|
||||
abstract fun getOwnersOfDeclaration(declaration: FirDeclaration): List<FirBasedSymbol<*>>?
|
||||
abstract fun fileHasPluginAnnotations(file: FirFile): Boolean
|
||||
abstract fun matches(predicate: DeclarationPredicate, declaration: FirAnnotatedDeclaration): Boolean
|
||||
abstract fun matches(predicate: DeclarationPredicate, declaration: FirDeclaration): Boolean
|
||||
|
||||
fun matches(predicates: List<DeclarationPredicate>, declaration: FirAnnotatedDeclaration): Boolean {
|
||||
fun matches(predicates: List<DeclarationPredicate>, declaration: FirDeclaration): Boolean {
|
||||
return predicates.any { matches(it, declaration) }
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredic
|
||||
return file in cache.filesWithPluginAnnotations
|
||||
}
|
||||
|
||||
fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
|
||||
fun registerAnnotatedDeclaration(declaration: FirDeclaration, owners: PersistentList<FirDeclaration>) {
|
||||
cache.ownersForDeclaration[declaration] = owners
|
||||
registerOwnersDeclarations(declaration, owners)
|
||||
|
||||
@@ -66,11 +66,11 @@ class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredic
|
||||
cache.filesWithPluginAnnotations += file
|
||||
}
|
||||
|
||||
override fun getOwnersOfDeclaration(declaration: FirAnnotatedDeclaration): List<FirBasedSymbol<*>>? {
|
||||
override fun getOwnersOfDeclaration(declaration: FirDeclaration): List<FirBasedSymbol<*>>? {
|
||||
return cache.ownersForDeclaration[declaration]?.map { it.symbol }
|
||||
}
|
||||
|
||||
private fun registerOwnersDeclarations(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
|
||||
private fun registerOwnersDeclarations(declaration: FirDeclaration, owners: PersistentList<FirDeclaration>) {
|
||||
val lastOwner = owners.lastOrNull() ?: return
|
||||
val annotationsFromLastOwner = cache.annotationsOfDeclaration[lastOwner]
|
||||
val annotationsFromPreviousOwners = cache.parentAnnotationsOfDeclaration[lastOwner]
|
||||
@@ -82,53 +82,53 @@ class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredic
|
||||
|
||||
// ---------------------------------- Matching ----------------------------------
|
||||
|
||||
override fun matches(predicate: DeclarationPredicate, declaration: FirAnnotatedDeclaration): Boolean {
|
||||
override fun matches(predicate: DeclarationPredicate, declaration: FirDeclaration): Boolean {
|
||||
return predicate.accept(matcher, declaration)
|
||||
}
|
||||
|
||||
private val matcher = Matcher()
|
||||
|
||||
private inner class Matcher : DeclarationPredicateVisitor<Boolean, FirAnnotatedDeclaration>() {
|
||||
override fun visitPredicate(predicate: DeclarationPredicate, data: FirAnnotatedDeclaration): Boolean {
|
||||
private inner class Matcher : DeclarationPredicateVisitor<Boolean, FirDeclaration>() {
|
||||
override fun visitPredicate(predicate: DeclarationPredicate, data: FirDeclaration): Boolean {
|
||||
throw IllegalStateException("Should not be there")
|
||||
}
|
||||
|
||||
override fun visitAny(predicate: DeclarationPredicate.Any, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitAny(predicate: DeclarationPredicate.Any, data: FirDeclaration): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun visitAnd(predicate: DeclarationPredicate.And, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitAnd(predicate: DeclarationPredicate.And, data: FirDeclaration): Boolean {
|
||||
return predicate.a.accept(this, data) && predicate.b.accept(this, data)
|
||||
}
|
||||
|
||||
override fun visitOr(predicate: DeclarationPredicate.Or, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitOr(predicate: DeclarationPredicate.Or, data: FirDeclaration): Boolean {
|
||||
return predicate.a.accept(this, data) || predicate.b.accept(this, data)
|
||||
}
|
||||
|
||||
override fun visitAnnotatedWith(predicate: AnnotatedWith, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitAnnotatedWith(predicate: AnnotatedWith, data: FirDeclaration): Boolean {
|
||||
return matchWith(data, predicate.annotations)
|
||||
}
|
||||
|
||||
override fun visitUnderAnnotatedWith(predicate: UnderAnnotatedWith, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitUnderAnnotatedWith(predicate: UnderAnnotatedWith, data: FirDeclaration): Boolean {
|
||||
return matchUnder(data, predicate.annotations)
|
||||
}
|
||||
|
||||
override fun visitAnnotatedWithMeta(predicate: AnnotatedWithMeta, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitAnnotatedWithMeta(predicate: AnnotatedWithMeta, data: FirDeclaration): Boolean {
|
||||
return matchWith(data, predicate.userDefinedAnnotations)
|
||||
}
|
||||
|
||||
override fun visitUnderMetaAnnotated(predicate: UnderMetaAnnotated, data: FirAnnotatedDeclaration): Boolean {
|
||||
override fun visitUnderMetaAnnotated(predicate: UnderMetaAnnotated, data: FirDeclaration): Boolean {
|
||||
return matchUnder(data, predicate.userDefinedAnnotations)
|
||||
}
|
||||
|
||||
private val MetaAnnotated.userDefinedAnnotations: Set<AnnotationFqn>
|
||||
get() = metaAnnotations.flatMapTo(mutableSetOf()) { registeredPluginAnnotations.getAnnotationsWithMetaAnnotation(it) }
|
||||
|
||||
private fun matchWith(declaration: FirAnnotatedDeclaration, annotations: Set<AnnotationFqn>): Boolean {
|
||||
private fun matchWith(declaration: FirDeclaration, annotations: Set<AnnotationFqn>): Boolean {
|
||||
return cache.annotationsOfDeclaration[declaration].any { it in annotations }
|
||||
}
|
||||
|
||||
private fun matchUnder(declaration: FirAnnotatedDeclaration, annotations: Set<AnnotationFqn>): Boolean {
|
||||
private fun matchUnder(declaration: FirDeclaration, annotations: Set<AnnotationFqn>): Boolean {
|
||||
return cache.parentAnnotationsOfDeclaration[declaration].any { it in annotations }
|
||||
}
|
||||
}
|
||||
@@ -136,13 +136,13 @@ class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredic
|
||||
// ---------------------------------- Cache ----------------------------------
|
||||
|
||||
private class Cache {
|
||||
val declarationByAnnotation: Multimap<AnnotationFqn, FirAnnotatedDeclaration> = LinkedHashMultimap.create()
|
||||
val annotationsOfDeclaration: LinkedHashMultimap<FirAnnotatedDeclaration, AnnotationFqn> = LinkedHashMultimap.create()
|
||||
val declarationByAnnotation: Multimap<AnnotationFqn, FirDeclaration> = LinkedHashMultimap.create()
|
||||
val annotationsOfDeclaration: LinkedHashMultimap<FirDeclaration, AnnotationFqn> = LinkedHashMultimap.create()
|
||||
|
||||
val declarationsUnderAnnotated: Multimap<AnnotationFqn, FirAnnotatedDeclaration> = LinkedHashMultimap.create()
|
||||
val parentAnnotationsOfDeclaration: LinkedHashMultimap<FirAnnotatedDeclaration, AnnotationFqn> = LinkedHashMultimap.create()
|
||||
val declarationsUnderAnnotated: Multimap<AnnotationFqn, FirDeclaration> = LinkedHashMultimap.create()
|
||||
val parentAnnotationsOfDeclaration: LinkedHashMultimap<FirDeclaration, AnnotationFqn> = LinkedHashMultimap.create()
|
||||
|
||||
val ownersForDeclaration: MutableMap<FirAnnotatedDeclaration, PersistentList<FirAnnotatedDeclaration>> = mutableMapOf()
|
||||
val ownersForDeclaration: MutableMap<FirDeclaration, PersistentList<FirDeclaration>> = mutableMapOf()
|
||||
|
||||
val filesWithPluginAnnotations: MutableSet<FirFile> = mutableSetOf()
|
||||
}
|
||||
|
||||
+2
-2
@@ -22,11 +22,11 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirPredicate
|
||||
|
||||
final override val extensionType: KClass<out FirExtension> = FirStatusTransformerExtension::class
|
||||
|
||||
abstract fun needTransformStatus(declaration: FirAnnotatedDeclaration): Boolean
|
||||
abstract fun needTransformStatus(declaration: FirDeclaration): Boolean
|
||||
|
||||
protected open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
declaration: FirAnnotatedDeclaration
|
||||
declaration: FirDeclaration
|
||||
): FirDeclarationStatus {
|
||||
return status
|
||||
}
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.inference
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvable
|
||||
@@ -272,4 +272,4 @@ class FirStubTypeTransformer(
|
||||
private val BUILDER_INFERENCE_ANNOTATION_CLASS_ID = ClassId.topLevel(BUILDER_INFERENCE_ANNOTATION_FQ_NAME)
|
||||
|
||||
fun FirElement.hasBuilderInferenceAnnotation(): Boolean =
|
||||
(this as? FirAnnotatedDeclaration)?.hasAnnotation(BUILDER_INFERENCE_ANNOTATION_CLASS_ID) == true
|
||||
(this as? FirDeclaration)?.hasAnnotation(BUILDER_INFERENCE_ANNOTATION_CLASS_ID) == true
|
||||
|
||||
+6
-3
@@ -5,7 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.providers.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProviderInternals
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -27,10 +30,10 @@ class FirLibrarySessionProvider(
|
||||
override fun getFirFilesByPackage(fqName: FqName): List<FirFile> = emptyList()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
override fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass) = shouldNotBeCalled()
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
override fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration) = shouldNotBeCalled()
|
||||
|
||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> = shouldNotBeCalled()
|
||||
|
||||
|
||||
+3
-3
@@ -78,16 +78,16 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli
|
||||
}
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedClass(owner: FirAnnotatedDeclaration, klass: FirRegularClass) {
|
||||
override fun recordGeneratedClass(owner: FirDeclaration, klass: FirRegularClass) {
|
||||
klass.accept(FirRecorder, FirRecorderData(state, owner.file, session.nameConflictsTracker))
|
||||
}
|
||||
|
||||
@FirProviderInternals
|
||||
override fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration) {
|
||||
override fun recordGeneratedMember(owner: FirDeclaration, klass: FirDeclaration) {
|
||||
klass.accept(FirRecorder, FirRecorderData(state, owner.file, session.nameConflictsTracker))
|
||||
}
|
||||
|
||||
private val FirAnnotatedDeclaration.file: FirFile
|
||||
private val FirDeclaration.file: FirFile
|
||||
get() = when (this) {
|
||||
is FirFile -> this
|
||||
is FirRegularClass -> getFirClassifierContainerFile(this.symbol.classId)
|
||||
|
||||
+1
-1
@@ -220,7 +220,7 @@ class FirStatusResolver(
|
||||
containingClass?.symbol?.toLookupTag(), forClass = declaration is FirClass
|
||||
)
|
||||
val effectiveVisibility = parentEffectiveVisibility.lowerBound(selfEffectiveVisibility, session.typeContext)
|
||||
val annotations = ((containingProperty ?: declaration) as? FirAnnotatedDeclaration)?.annotations ?: emptyList()
|
||||
val annotations = (containingProperty ?: declaration).annotations
|
||||
|
||||
val hasPublishedApiAnnotation = annotations.any {
|
||||
it.typeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag?.classId == StandardClassIds.Annotations.PublishedApi
|
||||
|
||||
+10
-14
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.scopes.FirCompositeScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.createImportingScopes
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -31,18 +30,18 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
|
||||
val state = beforeChildren(file)
|
||||
file.transformDeclarations(this, data)
|
||||
afterChildren(state)
|
||||
return transformAnnotatedDeclaration(file, data) as FirFile
|
||||
return transformDeclaration(file, data) as FirFile
|
||||
}
|
||||
|
||||
override fun transformProperty(property: FirProperty, data: D): FirProperty {
|
||||
return transformAnnotatedDeclaration(property, data) as FirProperty
|
||||
return transformDeclaration(property, data) as FirProperty
|
||||
}
|
||||
|
||||
override fun transformRegularClass(
|
||||
regularClass: FirRegularClass,
|
||||
data: D
|
||||
): FirStatement {
|
||||
return transformAnnotatedDeclaration(regularClass, data).also {
|
||||
return transformDeclaration(regularClass, data).also {
|
||||
val state = beforeChildren(regularClass)
|
||||
regularClass.transformDeclarations(this, data)
|
||||
regularClass.transformCompanionObject(this, data)
|
||||
@@ -55,7 +54,7 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: D
|
||||
): FirSimpleFunction {
|
||||
return transformAnnotatedDeclaration(simpleFunction, data).also {
|
||||
return transformDeclaration(simpleFunction, data).also {
|
||||
val state = beforeChildren(simpleFunction)
|
||||
simpleFunction.transformValueParameters(this, data)
|
||||
afterChildren(state)
|
||||
@@ -66,7 +65,7 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
|
||||
constructor: FirConstructor,
|
||||
data: D
|
||||
): FirConstructor {
|
||||
return transformAnnotatedDeclaration(constructor, data).also {
|
||||
return transformDeclaration(constructor, data).also {
|
||||
val state = beforeChildren(constructor)
|
||||
constructor.transformValueParameters(this, data)
|
||||
afterChildren(state)
|
||||
@@ -77,22 +76,19 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
|
||||
valueParameter: FirValueParameter,
|
||||
data: D
|
||||
): FirStatement {
|
||||
return transformAnnotatedDeclaration(valueParameter, data) as FirStatement
|
||||
return transformDeclaration(valueParameter, data) as FirStatement
|
||||
}
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): FirTypeAlias {
|
||||
return transformAnnotatedDeclaration(typeAlias, data) as FirTypeAlias
|
||||
return transformDeclaration(typeAlias, data) as FirTypeAlias
|
||||
}
|
||||
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: D): FirTypeRef {
|
||||
return transformAnnotationContainer(typeRef, data) as FirTypeRef
|
||||
}
|
||||
|
||||
override fun transformAnnotatedDeclaration(
|
||||
annotatedDeclaration: FirAnnotatedDeclaration,
|
||||
data: D
|
||||
): FirAnnotatedDeclaration {
|
||||
return transformAnnotationContainer(annotatedDeclaration, data) as FirAnnotatedDeclaration
|
||||
override fun transformDeclaration(declaration: FirDeclaration, data: D): FirDeclaration {
|
||||
return transformAnnotationContainer(declaration, data) as FirDeclaration
|
||||
}
|
||||
|
||||
override fun transformAnnotationContainer(
|
||||
@@ -106,7 +102,7 @@ internal abstract class FirAbstractAnnotationResolveTransformer<D, S>(
|
||||
return element
|
||||
}
|
||||
|
||||
protected open fun beforeChildren(declaration: FirAnnotatedDeclaration): S? {
|
||||
protected open fun beforeChildren(declaration: FirDeclaration): S? {
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
+8
-11
@@ -12,7 +12,7 @@ import kotlinx.collections.immutable.persistentListOf
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
@@ -82,7 +82,7 @@ private class FirPartialImportResolveTransformer(
|
||||
private class FirAnnotationResolveTransformer(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
) : FirAbstractAnnotationResolveTransformer<Multimap<AnnotationFqn, FirRegularClass>, PersistentList<FirAnnotatedDeclaration>>(session, scopeSession) {
|
||||
) : FirAbstractAnnotationResolveTransformer<Multimap<AnnotationFqn, FirRegularClass>, PersistentList<FirDeclaration>>(session, scopeSession) {
|
||||
private val predicateBasedProvider = session.predicateBasedProvider as FirPredicateBasedProviderImpl
|
||||
|
||||
var metaAnnotations: Set<AnnotationFqn> = emptySet()
|
||||
@@ -91,16 +91,16 @@ private class FirAnnotationResolveTransformer(
|
||||
errorTypeAsResolved = false
|
||||
)
|
||||
|
||||
private var owners: PersistentList<FirAnnotatedDeclaration> = persistentListOf()
|
||||
private var owners: PersistentList<FirDeclaration> = persistentListOf()
|
||||
private val classDeclarationsStack = ArrayDeque<FirRegularClass>()
|
||||
|
||||
override fun beforeChildren(declaration: FirAnnotatedDeclaration): PersistentList<FirAnnotatedDeclaration> {
|
||||
override fun beforeChildren(declaration: FirDeclaration): PersistentList<FirDeclaration> {
|
||||
val current = owners
|
||||
owners = owners.add(declaration)
|
||||
return current
|
||||
}
|
||||
|
||||
override fun afterChildren(state: PersistentList<FirAnnotatedDeclaration>?) {
|
||||
override fun afterChildren(state: PersistentList<FirDeclaration>?) {
|
||||
requireNotNull(state)
|
||||
owners = state
|
||||
}
|
||||
@@ -135,12 +135,9 @@ private class FirAnnotationResolveTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformAnnotatedDeclaration(
|
||||
annotatedDeclaration: FirAnnotatedDeclaration,
|
||||
data: Multimap<AnnotationFqn, FirRegularClass>
|
||||
): FirAnnotatedDeclaration {
|
||||
return super.transformAnnotatedDeclaration(annotatedDeclaration, data).also {
|
||||
predicateBasedProvider.registerAnnotatedDeclaration(annotatedDeclaration, owners)
|
||||
override fun transformDeclaration(declaration: FirDeclaration, data: Multimap<AnnotationFqn, FirRegularClass>): FirDeclaration {
|
||||
return super.transformDeclaration(declaration, data).also {
|
||||
predicateBasedProvider.registerAnnotatedDeclaration(declaration, owners)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -9,12 +9,12 @@ import com.google.common.collect.ArrayListMultimap
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
|
||||
data class GeneratedClass(val klass: FirRegularClass, val owner: FirAnnotatedDeclaration)
|
||||
data class GeneratedClass(val klass: FirRegularClass, val owner: FirDeclaration)
|
||||
|
||||
abstract class GeneratedClassIndex : FirSessionComponent {
|
||||
companion object {
|
||||
@@ -23,7 +23,7 @@ abstract class GeneratedClassIndex : FirSessionComponent {
|
||||
}
|
||||
}
|
||||
|
||||
abstract fun registerClass(klass: FirRegularClass, owner: FirAnnotatedDeclaration)
|
||||
abstract fun registerClass(klass: FirRegularClass, owner: FirDeclaration)
|
||||
abstract operator fun get(key: FirPluginKey): List<GeneratedClass>
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ val FirSession.generatedClassIndex: GeneratedClassIndex by FirSession.sessionCom
|
||||
private class GeneratedClassIndexImpl : GeneratedClassIndex() {
|
||||
private val index: ArrayListMultimap<FirPluginKey, GeneratedClass> = ArrayListMultimap.create()
|
||||
|
||||
override fun registerClass(klass: FirRegularClass, owner: FirAnnotatedDeclaration) {
|
||||
override fun registerClass(klass: FirRegularClass, owner: FirDeclaration) {
|
||||
val key = (klass.origin as FirDeclarationOrigin.Plugin).key
|
||||
index.put(key, GeneratedClass(klass, owner))
|
||||
}
|
||||
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
sealed class FirAnnotatedDeclaration : FirDeclaration(), FirAnnotationContainer {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnnotatedDeclaration(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformAnnotatedDeclaration(this, data) as E
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnnotatedDeclaration
|
||||
}
|
||||
@@ -26,11 +26,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
@@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOwner {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
@@ -37,4 +39,6 @@ abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOw
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousInitializer
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,11 +22,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
sealed class FirCallableDeclaration : FirTypedDeclaration() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
|
||||
+1
-1
@@ -20,11 +20,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
sealed class FirClassLikeDeclaration : FirMemberDeclaration(), FirStatement {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val symbol: FirClassLikeSymbol<out FirClassLikeDeclaration>
|
||||
|
||||
@@ -6,9 +6,11 @@
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
@@ -17,8 +19,9 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
sealed class FirDeclaration : FirPureAbstractElement(), FirElement {
|
||||
sealed class FirDeclaration : FirPureAbstractElement(), FirAnnotationContainer {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract val symbol: FirBasedSymbol<out FirDeclaration>
|
||||
abstract val moduleData: FirModuleData
|
||||
abstract val resolvePhase: FirResolvePhase
|
||||
@@ -32,4 +35,6 @@ sealed class FirDeclaration : FirPureAbstractElement(), FirElement {
|
||||
transformer.transformDeclaration(this, data) as E
|
||||
|
||||
abstract fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDeclaration
|
||||
}
|
||||
|
||||
@@ -26,11 +26,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
|
||||
@@ -18,13 +18,13 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirFile : FirAnnotatedDeclaration() {
|
||||
abstract class FirFile : FirDeclaration() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract val packageDirective: FirPackageDirective
|
||||
abstract val imports: List<FirImport>
|
||||
abstract val declarations: List<FirDeclaration>
|
||||
|
||||
@@ -26,11 +26,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
sealed class FirFunction : FirCallableDeclaration(), FirTargetElement, FirControlFlowGraphOwner, FirStatement {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
|
||||
@@ -17,14 +17,14 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
sealed class FirMemberDeclaration : FirAnnotatedDeclaration(), FirTypeParameterRefsOwner {
|
||||
sealed class FirMemberDeclaration : FirDeclaration(), FirTypeParameterRefsOwner {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract val status: FirDeclarationStatus
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirTypeParameter : FirTypeParameterRef, FirAnnotatedDeclaration() {
|
||||
abstract class FirTypeParameter : FirTypeParameterRef, FirDeclaration() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
|
||||
@@ -20,12 +20,12 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
sealed class FirTypedDeclaration : FirMemberDeclaration() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val symbol: FirBasedSymbol<out FirDeclaration>
|
||||
abstract override val moduleData: FirModuleData
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract val returnTypeRef: FirTypeRef
|
||||
|
||||
+1
-1
@@ -35,11 +35,11 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
@FirBuilderDsl
|
||||
interface FirAbstractConstructorBuilder : FirFunctionBuilder {
|
||||
abstract override var source: KtSourceElement?
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract override var moduleData: FirModuleData
|
||||
abstract override var resolvePhase: FirResolvePhase
|
||||
abstract override var origin: FirDeclarationOrigin
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract override var status: FirDeclarationStatus
|
||||
abstract override var returnTypeRef: FirTypeRef
|
||||
abstract override var deprecation: DeprecationsPerUseSite?
|
||||
|
||||
+2
-2
@@ -42,10 +42,10 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
@FirBuilderDsl
|
||||
class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
override lateinit var moduleData: FirModuleData
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
var receiverTypeRef: FirTypeRef? = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
@@ -66,10 +66,10 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
|
||||
override fun build(): FirAnonymousFunction {
|
||||
return FirAnonymousFunctionImpl(
|
||||
source,
|
||||
annotations,
|
||||
moduleData,
|
||||
origin,
|
||||
attributes,
|
||||
annotations,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
|
||||
+6
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.builder
|
||||
import kotlin.contracts.*
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
@@ -15,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirDeclarationBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousInitializerImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
@@ -26,7 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
class FirAnonymousInitializerBuilder : FirDeclarationBuilder {
|
||||
class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override lateinit var moduleData: FirModuleData
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
@@ -47,6 +49,9 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder {
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@Deprecated("Modification of 'annotations' has no impact for FirAnonymousInitializerBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
|
||||
+1
-1
@@ -32,11 +32,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
@FirBuilderDsl
|
||||
interface FirClassBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder {
|
||||
abstract override var source: KtSourceElement?
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract override var moduleData: FirModuleData
|
||||
abstract override var resolvePhase: FirResolvePhase
|
||||
abstract override var origin: FirDeclarationOrigin
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract val typeParameters: MutableList<FirTypeParameterRef>
|
||||
abstract var status: FirDeclarationStatus
|
||||
abstract var deprecation: DeprecationsPerUseSite?
|
||||
|
||||
+2
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -22,6 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
@FirBuilderDsl
|
||||
interface FirDeclarationBuilder {
|
||||
abstract var source: KtSourceElement?
|
||||
abstract val annotations: MutableList<FirAnnotation>
|
||||
abstract var moduleData: FirModuleData
|
||||
abstract var resolvePhase: FirResolvePhase
|
||||
abstract var origin: FirDeclarationOrigin
|
||||
|
||||
+2
-2
@@ -39,11 +39,11 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
@FirBuilderDsl
|
||||
class FirErrorFunctionBuilder : FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
lateinit var moduleData: FirModuleData
|
||||
var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
lateinit var origin: FirDeclarationOrigin
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
@@ -54,11 +54,11 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder {
|
||||
override fun build(): FirErrorFunction {
|
||||
return FirErrorFunctionImpl(
|
||||
source,
|
||||
annotations,
|
||||
moduleData,
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
annotations,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
|
||||
+2
-2
@@ -30,11 +30,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
@FirBuilderDsl
|
||||
class FirFileBuilder : FirAnnotationContainerBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
lateinit var moduleData: FirModuleData
|
||||
var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
lateinit var origin: FirDeclarationOrigin
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
lateinit var packageDirective: FirPackageDirective
|
||||
val imports: MutableList<FirImport> = mutableListOf()
|
||||
val declarations: MutableList<FirDeclaration> = mutableListOf()
|
||||
@@ -44,11 +44,11 @@ class FirFileBuilder : FirAnnotationContainerBuilder {
|
||||
override fun build(): FirFile {
|
||||
return FirFileImpl(
|
||||
source,
|
||||
annotations,
|
||||
moduleData,
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
annotations,
|
||||
packageDirective,
|
||||
imports,
|
||||
declarations,
|
||||
|
||||
+1
-1
@@ -32,11 +32,11 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
@FirBuilderDsl
|
||||
interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder {
|
||||
abstract override var source: KtSourceElement?
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract override var moduleData: FirModuleData
|
||||
abstract override var resolvePhase: FirResolvePhase
|
||||
abstract override var origin: FirDeclarationOrigin
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotation>
|
||||
abstract var status: FirDeclarationStatus
|
||||
abstract var returnTypeRef: FirTypeRef
|
||||
abstract var deprecation: DeprecationsPerUseSite?
|
||||
|
||||
+1
-1
@@ -35,10 +35,10 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirAnonymousFunctionImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override val moduleData: FirModuleData,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
|
||||
+6
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
@@ -31,6 +32,7 @@ internal class FirAnonymousInitializerImpl(
|
||||
override var body: FirBlock?,
|
||||
override val symbol: FirAnonymousInitializerSymbol,
|
||||
) : FirAnonymousInitializer() {
|
||||
override val annotations: List<FirAnnotation> get() = emptyList()
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
||||
|
||||
init {
|
||||
@@ -48,6 +50,10 @@ internal class FirAnonymousInitializerImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl {
|
||||
return this
|
||||
}
|
||||
|
||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,12 +34,12 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirErrorFunctionImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
|
||||
@@ -25,12 +25,12 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
internal class FirFileImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override val moduleData: FirModuleData,
|
||||
@Volatile
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override var packageDirective: FirPackageDirective,
|
||||
override val imports: MutableList<FirImport>,
|
||||
override val declarations: MutableList<FirDeclaration>,
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
@@ -152,6 +151,8 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
|
||||
|
||||
override fun visitExpression(expression: FirExpression, data: D): R = visitStatement(expression, data)
|
||||
|
||||
override fun visitDeclaration(declaration: FirDeclaration, data: D): R = visitAnnotationContainer(declaration, data)
|
||||
|
||||
override fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitTypeParameterRefsOwner(typeParametersOwner, data)
|
||||
|
||||
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): R = visitMemberDeclaration(typedDeclaration, data)
|
||||
@@ -162,7 +163,7 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
|
||||
|
||||
override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): R = visitVariable(enumEntry, data)
|
||||
|
||||
override fun visitFile(file: FirFile, data: D): R = visitAnnotatedDeclaration(file, data)
|
||||
override fun visitFile(file: FirFile, data: D): R = visitDeclaration(file, data)
|
||||
|
||||
override fun visitAnonymousFunctionExpression(anonymousFunctionExpression: FirAnonymousFunctionExpression, data: D): R = visitExpression(anonymousFunctionExpression, data)
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
@@ -152,6 +151,8 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitExpression(expression: FirExpression) = visitStatement(expression)
|
||||
|
||||
override fun visitDeclaration(declaration: FirDeclaration) = visitAnnotationContainer(declaration)
|
||||
|
||||
override fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner) = visitTypeParameterRefsOwner(typeParametersOwner)
|
||||
|
||||
override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration) = visitMemberDeclaration(typedDeclaration)
|
||||
@@ -162,7 +163,7 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitEnumEntry(enumEntry: FirEnumEntry) = visitVariable(enumEntry)
|
||||
|
||||
override fun visitFile(file: FirFile) = visitAnnotatedDeclaration(file)
|
||||
override fun visitFile(file: FirFile) = visitDeclaration(file)
|
||||
|
||||
override fun visitAnonymousFunctionExpression(anonymousFunctionExpression: FirAnonymousFunctionExpression) = visitExpression(anonymousFunctionExpression)
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
@@ -203,10 +202,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformElement(typeParametersOwner, data)
|
||||
}
|
||||
|
||||
open fun transformAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): FirAnnotatedDeclaration {
|
||||
return transformElement(annotatedDeclaration, data)
|
||||
}
|
||||
|
||||
open fun transformMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration {
|
||||
return transformElement(memberDeclaration, data)
|
||||
}
|
||||
@@ -731,10 +726,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformTypeParametersOwner(typeParametersOwner, data)
|
||||
}
|
||||
|
||||
final override fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): FirAnnotatedDeclaration {
|
||||
return transformAnnotatedDeclaration(annotatedDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): FirMemberDeclaration {
|
||||
return transformMemberDeclaration(memberDeclaration, data)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
@@ -174,8 +173,6 @@ abstract class FirVisitor<out R, in D> {
|
||||
|
||||
open fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitElement(typeParametersOwner, data)
|
||||
|
||||
open fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: D): R = visitElement(annotatedDeclaration, data)
|
||||
|
||||
open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: D): R = visitElement(memberDeclaration, data)
|
||||
|
||||
open fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: D): R = visitElement(anonymousInitializer, data)
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
@@ -202,10 +201,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(typeParametersOwner)
|
||||
}
|
||||
|
||||
open fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration) {
|
||||
visitElement(annotatedDeclaration)
|
||||
}
|
||||
|
||||
open fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) {
|
||||
visitElement(memberDeclaration)
|
||||
}
|
||||
@@ -730,10 +725,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitTypeParametersOwner(typeParametersOwner)
|
||||
}
|
||||
|
||||
final override fun visitAnnotatedDeclaration(annotatedDeclaration: FirAnnotatedDeclaration, data: Nothing?) {
|
||||
visitAnnotatedDeclaration(annotatedDeclaration)
|
||||
}
|
||||
|
||||
final override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration, data: Nothing?) {
|
||||
visitMemberDeclaration(memberDeclaration)
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.symbols
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
@@ -34,7 +33,7 @@ abstract class FirBasedSymbol<E : FirDeclaration> {
|
||||
get() = fir.moduleData
|
||||
|
||||
val annotations: List<FirAnnotation>
|
||||
get() = (fir as? FirAnnotatedDeclaration)?.annotations ?: emptyList()
|
||||
get() = fir.annotations
|
||||
}
|
||||
|
||||
@RequiresOptIn
|
||||
|
||||
+4
-5
@@ -26,16 +26,15 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
|
||||
val statement by element(Expression, annotationContainer)
|
||||
val expression by element(Expression, statement)
|
||||
val declaration by sealedElement(Declaration)
|
||||
val declaration by sealedElement(Declaration, annotationContainer)
|
||||
val typeParameterRefsOwner by sealedElement(Declaration)
|
||||
val typeParametersOwner by sealedElement(Declaration, typeParameterRefsOwner)
|
||||
val annotatedDeclaration by sealedElement(Declaration, declaration, annotationContainer)
|
||||
val memberDeclaration by sealedElement(Declaration, annotatedDeclaration, typeParameterRefsOwner)
|
||||
val memberDeclaration by sealedElement(Declaration, declaration, typeParameterRefsOwner)
|
||||
val anonymousInitializer by element(Declaration, declaration, controlFlowGraphOwner)
|
||||
val typedDeclaration by sealedElement(Declaration, memberDeclaration)
|
||||
val callableDeclaration by sealedElement(Declaration, typedDeclaration)
|
||||
val typeParameterRef by element(Declaration)
|
||||
val typeParameter by element(Declaration, typeParameterRef, annotatedDeclaration)
|
||||
val typeParameter by element(Declaration, typeParameterRef, declaration)
|
||||
|
||||
val variable by sealedElement(Declaration, callableDeclaration, statement)
|
||||
val valueParameter by element(Declaration, variable, controlFlowGraphOwner)
|
||||
@@ -55,7 +54,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val propertyAccessor by element(Declaration, function, contractDescriptionOwner, typeParametersOwner)
|
||||
val backingField by element(Declaration, variable, typeParametersOwner, statement)
|
||||
val constructor by element(Declaration, function, typeParameterRefsOwner)
|
||||
val file by element(Declaration, annotatedDeclaration)
|
||||
val file by element(Declaration, declaration)
|
||||
val packageDirective by element(Other)
|
||||
|
||||
val anonymousFunction by element(Declaration, function, typeParametersOwner)
|
||||
|
||||
+5
-1
@@ -38,6 +38,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
defaultFalse("hasLazyNestedClassifiers", withGetter = true)
|
||||
}
|
||||
|
||||
impl(anonymousInitializer) {
|
||||
defaultEmptyList("annotations")
|
||||
}
|
||||
|
||||
impl(anonymousObject)
|
||||
noImpl(anonymousObjectExpression)
|
||||
|
||||
@@ -73,7 +77,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
delegateFields(listOf("aliasName", "importedFqName", "isAllUnder", "source"), "delegate")
|
||||
}
|
||||
|
||||
fun ImplementationContext.commonAnnotationConfig(): Unit {
|
||||
fun ImplementationContext.commonAnnotationConfig() {
|
||||
defaultEmptyList("annotations")
|
||||
default("typeRef") {
|
||||
value = "annotationTypeRef"
|
||||
|
||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.plugin
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
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.FirDeclarationPredicateRegistrar
|
||||
@@ -26,12 +26,12 @@ class AllOpenStatusTransformer(session: FirSession) : FirStatusTransformerExtens
|
||||
private val PREDICATE: DeclarationPredicate = hasOrUnder(ALL_OPEN) or metaHasOrUnder(ALL_OPEN)
|
||||
}
|
||||
|
||||
override fun transformStatus(status: FirDeclarationStatus, declaration: FirAnnotatedDeclaration): FirDeclarationStatus {
|
||||
override fun transformStatus(status: FirDeclarationStatus, declaration: FirDeclaration): FirDeclarationStatus {
|
||||
if (status.modality != null) return status
|
||||
return status.transform(modality = Modality.OPEN)
|
||||
}
|
||||
|
||||
override fun needTransformStatus(declaration: FirAnnotatedDeclaration): Boolean {
|
||||
override fun needTransformStatus(declaration: FirDeclaration): Boolean {
|
||||
return session.predicateBasedProvider.matches(PREDICATE, declaration)
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.plugin
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||
@@ -42,7 +41,7 @@ class AllPublicVisibilityTransformer(session: FirSession) : FirStatusTransformer
|
||||
private val PREDICATE: DeclarationPredicate = hasOrUnder(AllPublicClassId.asSingleFqName())
|
||||
}
|
||||
|
||||
override fun transformStatus(status: FirDeclarationStatus, declaration: FirAnnotatedDeclaration): FirDeclarationStatus {
|
||||
override fun transformStatus(status: FirDeclarationStatus, declaration: FirDeclaration): FirDeclarationStatus {
|
||||
val owners = session.predicateBasedProvider.getOwnersOfDeclaration(declaration) ?: emptyList()
|
||||
val visibility = findVisibility(declaration, owners) ?: return status
|
||||
if (visibility == status.visibility) return status
|
||||
@@ -72,7 +71,7 @@ class AllPublicVisibilityTransformer(session: FirSession) : FirStatusTransformer
|
||||
}
|
||||
}
|
||||
|
||||
override fun needTransformStatus(declaration: FirAnnotatedDeclaration): Boolean {
|
||||
override fun needTransformStatus(declaration: FirDeclaration): Boolean {
|
||||
return session.predicateBasedProvider.matches(PREDICATE, declaration)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user