[FIR] Add symbol to FirAnonymousInitializer
This commit is contained in:
+4
-1
@@ -8,8 +8,10 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -17,11 +19,12 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration {
|
||||
abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration, FirSymbolOwner<FirAnonymousInitializer> {
|
||||
abstract override val source: FirSourceElement?
|
||||
abstract override val session: FirSession
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract val body: FirBlock?
|
||||
abstract override val symbol: FirAnonymousInitializerSymbol
|
||||
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousInitializer(this, data)
|
||||
|
||||
+3
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousInitializerImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -28,6 +29,7 @@ class FirAnonymousInitializerBuilder {
|
||||
lateinit var session: FirSession
|
||||
var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
var body: FirBlock? = null
|
||||
var symbol: FirAnonymousInitializerSymbol = FirAnonymousInitializerSymbol()
|
||||
|
||||
fun build(): FirAnonymousInitializer {
|
||||
return FirAnonymousInitializerImpl(
|
||||
@@ -35,6 +37,7 @@ class FirAnonymousInitializerBuilder {
|
||||
session,
|
||||
resolvePhase,
|
||||
body,
|
||||
symbol,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -24,9 +25,14 @@ internal class FirAnonymousInitializerImpl(
|
||||
override val session: FirSession,
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override var body: FirBlock?,
|
||||
override val symbol: FirAnonymousInitializerSymbol,
|
||||
) : FirAnonymousInitializer() {
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
body?.accept(visitor, data)
|
||||
controlFlowGraphReference.accept(visitor, data)
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
* 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.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
|
||||
class FirAnonymousInitializerSymbol : AbstractFirBasedSymbol<FirAnonymousInitializer>()
|
||||
+4
@@ -263,6 +263,10 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
useTypes(stubReferenceType)
|
||||
}
|
||||
|
||||
builder(anonymousInitializer) {
|
||||
default("symbol", "FirAnonymousInitializerSymbol()")
|
||||
}
|
||||
|
||||
val elementsWithDefaultTypeRef = listOf(
|
||||
thisReceiverExpression,
|
||||
callableReferenceAccess,
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val statement = element("Statement", Expression, annotationContainer)
|
||||
val expression = element("Expression", Expression, statement)
|
||||
val declaration = element("Declaration", Declaration)
|
||||
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration)
|
||||
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, symbolOwner)
|
||||
val typedDeclaration = element("TypedDeclaration", Declaration, declaration, annotationContainer)
|
||||
val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
|
||||
val typeParameter = element("TypeParameter", Declaration, declaration, symbolOwner, annotationContainer)
|
||||
|
||||
+2
@@ -366,7 +366,9 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
}
|
||||
|
||||
anonymousInitializer.configure {
|
||||
parentArg(symbolOwner, "E", anonymousInitializer)
|
||||
+body(nullable = true)
|
||||
+symbol(anonymousInitializerSymbolType.type)
|
||||
+controlFlowGraphReferenceField
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ val classLikeSymbolType = type("fir.symbols.impl", "FirClassLikeSymbol<*>")
|
||||
val typeParameterSymbolType = type("fir.symbols.impl", "FirTypeParameterSymbol")
|
||||
val emptyArgumentListType = type("fir.expressions", "FirEmptyArgumentList")
|
||||
val firScopeProviderType = type("fir.scopes", "FirScopeProvider")
|
||||
val anonymousInitializerSymbolType = type("fir.symbols.impl", "FirAnonymousInitializerSymbol")
|
||||
|
||||
val pureAbstractElementType = generatedType("FirPureAbstractElement")
|
||||
val effectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")
|
||||
|
||||
Reference in New Issue
Block a user