diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index a050ae51e81..ab167c011e6 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -417,8 +417,8 @@ class KotlinDeserializedJvmSymbolsProvider( override fun getAllCallableNamesInClass(classId: ClassId): Set = getClassDeclarations(classId) - .filterIsInstance() - .mapTo(mutableSetOf(), FirNamedDeclaration::name) + .filterIsInstance() + .mapTo(mutableSetOf(), FirMemberDeclaration::name) override fun getNestedClassesNamesInClass(classId: ClassId): Set { return getClassDeclarations(classId).filterIsInstance().mapTo(mutableSetOf()) { it.name } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index a133b2e3f22..2e45f67c170 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -125,7 +125,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) storeVariableReturnType(variable) } variable.transformAccessors() - localScopes.lastOrNull()?.storeDeclaration(variable) + localScopes.lastOrNull()?.storeVariable(variable) variable.replaceResolvePhase(transformerPhase) dataFlowAnalyzer.exitVariableDeclaration(variable) return variable.compose() @@ -223,7 +223,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) } override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult { - localScopes.lastOrNull()?.storeDeclaration(regularClass) + localScopes.lastOrNull()?.storeClass(regularClass) return withScopeCleanup(topLevelScopes) { prepareTypeParameterOwnerForBodyResolve(regularClass) if (regularClass.symbol.classId.isLocal) { @@ -239,7 +239,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) val constructor = regularClass.declarations.firstOrNull() as? FirConstructor if (constructor?.isPrimary == true) { primaryConstructorParametersScope = FirLocalScope().apply { - constructor.valueParameters.forEach { this.storeDeclaration(it) } + constructor.valueParameters.forEach { this.storeVariable(it) } } } transformDeclaration(regularClass, data) @@ -327,7 +327,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) returnTypeRef: FirTypeRef ): CompositeTransformResult { if (function is FirSimpleFunction) { - localScopes.lastOrNull()?.storeDeclaration(function) + localScopes.lastOrNull()?.storeFunction(function) } @Suppress("UNCHECKED_CAST") @@ -383,7 +383,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) } override fun transformValueParameter(valueParameter: FirValueParameter, data: ResolutionMode): CompositeTransformResult { - localScopes.lastOrNull()?.storeDeclaration(valueParameter) + localScopes.lastOrNull()?.storeVariable(valueParameter) if (valueParameter.returnTypeRef is FirImplicitTypeRef) { valueParameter.replaceResolvePhase(transformerPhase) return valueParameter.compose() // TODO diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt index 1c93e41fff6..67ccc866cbc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt @@ -17,14 +17,18 @@ class FirLocalScope : FirScope() { val functions = mutableMapOf>>() val classes = mutableMapOf() - fun storeDeclaration(declaration: FirNamedDeclaration) { - when (declaration) { - is FirVariable<*> -> properties[declaration.name] = declaration.symbol - is FirSimpleFunction -> functions.getOrPut(declaration.name) { - mutableListOf() - }.add(declaration.symbol as FirNamedFunctionSymbol) - is FirRegularClass -> classes[declaration.name] = declaration.symbol - } + fun storeClass(klass: FirRegularClass) { + classes[klass.name] = klass.symbol + } + + fun storeFunction(function: FirSimpleFunction) { + functions.getOrPut(function.name) { + mutableListOf() + }.add(function.symbol as FirNamedFunctionSymbol) + } + + fun storeVariable(variable: FirVariable<*>) { + properties[variable.name] = variable.symbol } fun storeBackingField(property: FirProperty) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt index 405a25984ff..ee0c157694b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt @@ -17,12 +17,12 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirMemberDeclaration : FirNamedDeclaration, FirAnnotationContainer { +interface FirMemberDeclaration : FirDeclaration, FirAnnotationContainer { override val source: FirSourceElement? override val session: FirSession override val resolvePhase: FirResolvePhase - override val name: Name override val annotations: List + val name: Name val typeParameters: List val status: FirDeclarationStatus diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirNamedDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirNamedDeclaration.kt deleted file mode 100644 index 92892375ddc..00000000000 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirNamedDeclaration.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2020 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.fir.FirSession -import org.jetbrains.kotlin.fir.FirSourceElement -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.fir.visitors.* - -/* - * This file was generated automatically - * DO NOT MODIFY IT MANUALLY - */ - -interface FirNamedDeclaration : FirDeclaration { - override val source: FirSourceElement? - override val session: FirSession - override val resolvePhase: FirResolvePhase - val name: Name - - override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedDeclaration(this, data) -} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt index dd751f49852..add99090564 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt @@ -24,8 +24,8 @@ interface FirRegularClass : FirMemberDeclaration, FirTypeParametersOwner, FirCla override val source: FirSourceElement? override val session: FirSession override val resolvePhase: FirResolvePhase - override val name: Name override val annotations: List + override val name: Name override val typeParameters: List override val status: FirDeclarationStatus override val classKind: ClassKind diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt index 992bfd018ea..114cd64df49 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt @@ -26,8 +26,8 @@ abstract class FirSealedClass : FirPureAbstractElement(), FirRegularClass { abstract override val source: FirSourceElement? abstract override val session: FirSession abstract override val resolvePhase: FirResolvePhase - abstract override val name: Name abstract override val annotations: List + abstract override val name: Name abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val classKind: ClassKind diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt index 3e435f7ee07..a005a50adba 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt @@ -22,11 +22,11 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirTypeParameter : FirPureAbstractElement(), FirNamedDeclaration, FirSymbolOwner, FirAnnotationContainer { +abstract class FirTypeParameter : FirPureAbstractElement(), FirDeclaration, FirSymbolOwner, FirAnnotationContainer { abstract override val source: FirSourceElement? abstract override val session: FirSession abstract override val resolvePhase: FirResolvePhase - abstract override val name: Name + abstract val name: Name abstract override val symbol: FirTypeParameterSymbol abstract val variance: Variance abstract val isReified: Boolean diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index deee586cc5d..44eb78b41d7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -21,13 +21,13 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -interface FirVariable> : FirCallableDeclaration, FirNamedDeclaration, FirStatement { +interface FirVariable> : FirCallableDeclaration, FirDeclaration, FirStatement { override val source: FirSourceElement? override val session: FirSession override val resolvePhase: FirResolvePhase override val returnTypeRef: FirTypeRef override val receiverTypeRef: FirTypeRef? - override val name: Name + val name: Name override val symbol: FirVariableSymbol val initializer: FirExpression? val delegate: FirExpression? diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableRegularClass.kt index 450b587ca9b..5f18c57837c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirModifiableRegularClass.kt @@ -30,8 +30,8 @@ interface FirModifiableRegularClass : FirRegularClass, FirModifiableClass + override val name: Name override val typeParameters: MutableList override var status: FirDeclarationStatus override val classKind: ClassKind diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index e8ffcf313d7..04d66957442 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirNamedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration @@ -203,10 +202,6 @@ abstract class FirTransformer : FirVisitor { - return transformElement(namedDeclaration, data) - } - open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult { return transformElement(typeParameter, data) } @@ -663,10 +658,6 @@ abstract class FirTransformer : FirVisitor { - return transformNamedDeclaration(namedDeclaration, data) - } - final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult { return transformTypeParameter(typeParameter, data) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index d9727f8ce1d..8875bc57900 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirNamedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration @@ -165,8 +164,6 @@ abstract class FirVisitor { open fun > visitCallableDeclaration(callableDeclaration: FirCallableDeclaration, data: D): R = visitElement(callableDeclaration, data) - open fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): R = visitElement(namedDeclaration, data) - open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R = visitElement(typeParameter, data) open fun visitTypeParametersOwner(typeParametersOwner: FirTypeParametersOwner, data: D): R = visitElement(typeParametersOwner, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 513ce68d613..c0f6ed8d043 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirNamedDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration @@ -201,10 +200,6 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(callableDeclaration) } - open fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration) { - visitElement(namedDeclaration) - } - open fun visitTypeParameter(typeParameter: FirTypeParameter) { visitElement(typeParameter) } @@ -661,10 +656,6 @@ abstract class FirVisitorVoid : FirVisitor() { visitCallableDeclaration(callableDeclaration) } - final override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: Nothing?) { - visitNamedDeclaration(namedDeclaration) - } - final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) { visitTypeParameter(typeParameter) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 9c670405984..d3eeb2c7c85 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -135,8 +135,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { receiverType.accept(this) print(".") } - if (callableDeclaration is FirNamedDeclaration) { - print(callableDeclaration.name) + when (callableDeclaration) { + is FirMemberDeclaration -> print(callableDeclaration.name) + is FirVariable<*> -> print(callableDeclaration.name) } if (callableDeclaration is FirFunction<*>) { @@ -238,20 +239,16 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { } } - visitNamedDeclaration(memberDeclaration) - } - - override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration) { - visitDeclaration(namedDeclaration) - if (namedDeclaration !is FirCallableDeclaration<*>) { // Handled by visitCallableDeclaration - print(" " + namedDeclaration.name) - if (namedDeclaration is FirTypeParametersOwner) { - namedDeclaration.typeParameters.renderTypeParameters() + visitDeclaration(memberDeclaration) + if (memberDeclaration !is FirCallableDeclaration<*>) { // Handled by visitCallableDeclaration + print(" " + memberDeclaration.name) + if (memberDeclaration is FirTypeParametersOwner) { + memberDeclaration.typeParameters.renderTypeParameters() } - } else if (namedDeclaration is FirMemberDeclaration) { - if (namedDeclaration.typeParameters.isNotEmpty()) { + } else { + if (memberDeclaration.typeParameters.isNotEmpty()) { print(" ") - namedDeclaration.typeParameters.renderTypeParameters() + memberDeclaration.typeParameters.renderTypeParameters() } } } @@ -273,8 +270,6 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { ) } - - private fun List.renderDeclarations() { renderInBraces { for (declaration in this) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 9fcb031bc8d..6b3b4d96156 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -30,13 +30,12 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration) val typedDeclaration = element("TypedDeclaration", Declaration, declaration, annotationContainer) val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner) - val namedDeclaration = element("NamedDeclaration", Declaration, declaration) - val typeParameter = element("TypeParameter", Declaration, namedDeclaration, symbolOwner, annotationContainer) + val typeParameter = element("TypeParameter", Declaration, declaration, symbolOwner, annotationContainer) val typeParametersOwner = element("TypeParametersOwner", Declaration) - val memberDeclaration = element("MemberDeclaration", Declaration, namedDeclaration, annotationContainer) + val memberDeclaration = element("MemberDeclaration", Declaration, declaration, annotationContainer) val callableMemberDeclaration = element("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration) - val variable = element("Variable", Declaration, callableDeclaration, namedDeclaration, statement) + val variable = element("Variable", Declaration, callableDeclaration, declaration, statement) val valueParameter = element("ValueParameter", Declaration, variable) val property = element("Property", Declaration, variable, controlFlowGraphOwner, typeParametersOwner, callableMemberDeclaration) val field = element("Field", Declaration, variable, callableMemberDeclaration) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 803a85eaba0..f99529964b9 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -85,10 +85,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +field("containerSource", type(DeserializedContainerSource::class), nullable = true) } - namedDeclaration.configure { - +name - } - function.configure { withArg("F", "FirFunction") parentArg(callableDeclaration, "F", "F") @@ -103,6 +99,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } memberDeclaration.configure { + +name +typeParameters +status.withTransform() } @@ -255,6 +252,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild typeParameter.configure { parentArg(symbolOwner, "F", typeParameter) + +name +symbol("FirTypeParameterSymbol") +field(varianceType) +booleanField("isReified") @@ -333,6 +331,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild variable.configure { withArg("F", variable) parentArg(callableDeclaration, "F", "F") + +name +symbol("FirVariableSymbol", "F") +initializer.withTransform() +field("delegate", expression, nullable = true)