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