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