Get rid of FirNamedDeclaration
This commit is contained in:
+2
-2
@@ -417,8 +417,8 @@ class KotlinDeserializedJvmSymbolsProvider(
|
||||
|
||||
override fun getAllCallableNamesInClass(classId: ClassId): Set<Name> =
|
||||
getClassDeclarations(classId)
|
||||
.filterIsInstance<FirNamedDeclaration>()
|
||||
.mapTo(mutableSetOf(), FirNamedDeclaration::name)
|
||||
.filterIsInstance<FirMemberDeclaration>()
|
||||
.mapTo(mutableSetOf(), FirMemberDeclaration::name)
|
||||
|
||||
override fun getNestedClassesNamesInClass(classId: ClassId): Set<Name> {
|
||||
return getClassDeclarations(classId).filterIsInstance<FirRegularClass>().mapTo(mutableSetOf()) { it.name }
|
||||
|
||||
+5
-5
@@ -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<FirStatement> {
|
||||
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<F> {
|
||||
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<FirStatement> {
|
||||
localScopes.lastOrNull()?.storeDeclaration(valueParameter)
|
||||
localScopes.lastOrNull()?.storeVariable(valueParameter)
|
||||
if (valueParameter.returnTypeRef is FirImplicitTypeRef) {
|
||||
valueParameter.replaceResolvePhase(transformerPhase)
|
||||
return valueParameter.compose() // TODO
|
||||
|
||||
@@ -17,14 +17,18 @@ class FirLocalScope : FirScope() {
|
||||
val functions = mutableMapOf<Name, MutableList<FirFunctionSymbol<*>>>()
|
||||
val classes = mutableMapOf<Name, FirRegularClassSymbol>()
|
||||
|
||||
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) {
|
||||
|
||||
@@ -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<FirAnnotationCall>
|
||||
val name: Name
|
||||
val typeParameters: List<FirTypeParameter>
|
||||
val status: FirDeclarationStatus
|
||||
|
||||
|
||||
@@ -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 <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitNamedDeclaration(this, data)
|
||||
}
|
||||
@@ -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<FirAnnotationCall>
|
||||
override val name: Name
|
||||
override val typeParameters: List<FirTypeParameter>
|
||||
override val status: FirDeclarationStatus
|
||||
override val classKind: ClassKind
|
||||
|
||||
@@ -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<FirAnnotationCall>
|
||||
abstract override val name: Name
|
||||
abstract override val typeParameters: List<FirTypeParameter>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val classKind: ClassKind
|
||||
|
||||
@@ -22,11 +22,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirTypeParameter : FirPureAbstractElement(), FirNamedDeclaration, FirSymbolOwner<FirTypeParameter>, FirAnnotationContainer {
|
||||
abstract class FirTypeParameter : FirPureAbstractElement(), FirDeclaration, FirSymbolOwner<FirTypeParameter>, 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
|
||||
|
||||
@@ -21,13 +21,13 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
interface FirVariable<F : FirVariable<F>> : FirCallableDeclaration<F>, FirNamedDeclaration, FirStatement {
|
||||
interface FirVariable<F : FirVariable<F>> : FirCallableDeclaration<F>, 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<F>
|
||||
val initializer: FirExpression?
|
||||
val delegate: FirExpression?
|
||||
|
||||
+1
-1
@@ -30,8 +30,8 @@ interface FirModifiableRegularClass : FirRegularClass, FirModifiableClass<FirReg
|
||||
override val source: FirSourceElement?
|
||||
override val session: FirSession
|
||||
override var resolvePhase: FirResolvePhase
|
||||
override val name: Name
|
||||
override val annotations: MutableList<FirAnnotationCall>
|
||||
override val name: Name
|
||||
override val typeParameters: MutableList<FirTypeParameter>
|
||||
override var status: FirDeclarationStatus
|
||||
override val classKind: ClassKind
|
||||
|
||||
@@ -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<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformElement(callableDeclaration, data)
|
||||
}
|
||||
|
||||
open fun transformNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformElement(namedDeclaration, data)
|
||||
}
|
||||
|
||||
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformElement(typeParameter, data)
|
||||
}
|
||||
@@ -663,10 +658,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformCallableDeclaration(callableDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformNamedDeclaration(namedDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformTypeParameter(typeParameter, data)
|
||||
}
|
||||
|
||||
@@ -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<out R, in D> {
|
||||
|
||||
open fun <F : FirCallableDeclaration<F>> visitCallableDeclaration(callableDeclaration: FirCallableDeclaration<F>, 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)
|
||||
|
||||
@@ -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<Unit, Nothing?>() {
|
||||
visitElement(callableDeclaration)
|
||||
}
|
||||
|
||||
open fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration) {
|
||||
visitElement(namedDeclaration)
|
||||
}
|
||||
|
||||
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
||||
visitElement(typeParameter)
|
||||
}
|
||||
@@ -661,10 +656,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitCallableDeclaration(callableDeclaration)
|
||||
}
|
||||
|
||||
final override fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: Nothing?) {
|
||||
visitNamedDeclaration(namedDeclaration)
|
||||
}
|
||||
|
||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
|
||||
visitTypeParameter(typeParameter)
|
||||
}
|
||||
|
||||
@@ -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<FirDeclaration>.renderDeclarations() {
|
||||
renderInBraces {
|
||||
for (declaration in this) {
|
||||
|
||||
+3
-4
@@ -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)
|
||||
|
||||
+3
-4
@@ -85,10 +85,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+field("containerSource", type(DeserializedContainerSource::class), nullable = true)
|
||||
}
|
||||
|
||||
namedDeclaration.configure {
|
||||
+name
|
||||
}
|
||||
|
||||
function.configure {
|
||||
withArg("F", "FirFunction<F>")
|
||||
parentArg(callableDeclaration, "F", "F")
|
||||
@@ -103,6 +99,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
}
|
||||
|
||||
memberDeclaration.configure {
|
||||
+name
|
||||
+typeParameters
|
||||
+status.withTransform()
|
||||
}
|
||||
@@ -255,6 +252,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
typeParameter.configure {
|
||||
parentArg(symbolOwner, "F", typeParameter)
|
||||
+name
|
||||
+symbol("FirTypeParameterSymbol")
|
||||
+field(varianceType)
|
||||
+booleanField("isReified")
|
||||
@@ -333,6 +331,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
variable.configure {
|
||||
withArg("F", variable)
|
||||
parentArg(callableDeclaration, "F", "F")
|
||||
+name
|
||||
+symbol("FirVariableSymbol", "F")
|
||||
+initializer.withTransform()
|
||||
+field("delegate", expression, nullable = true)
|
||||
|
||||
Reference in New Issue
Block a user