FIR: add substitution for Java fields

This commit is contained in:
Mikhail Glukhikh
2019-10-29 18:08:44 +03:00
parent 83cd7cf516
commit d4af35d794
7 changed files with 153 additions and 11 deletions
@@ -39,7 +39,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val variable = element("Variable", Declaration, callableDeclaration, namedDeclaration, statement)
val valueParameter = element("ValueParameter", Declaration, variable)
val property = element("Property", Declaration, variable, controlFlowGraphOwner, typeParametersOwner, callableMemberDeclaration)
val field = element("Field", Declaration, variable, callableMemberDeclaration) // TODO: add noImpl
val field = element("Field", Declaration, variable, callableMemberDeclaration)
val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, declaration, statement, symbolOwner)
val klass = element("Class", Declaration, classLikeDeclaration, statement, annotationContainer)
val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParametersOwner, klass)
@@ -49,7 +49,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
noImpl(declarationStatus)
noImpl(resolvedDeclarationStatus)
noImpl(field)
val modifiableClass = impl(klass, "FirModifiableClass")
@@ -280,6 +279,19 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
useTypes(backingFieldSymbolType, delegateFieldSymbolType)
}
impl(field) {
default("isVal") {
value = "!isVar"
withGetter = true
}
default("resolvePhase") {
value = "FirResolvePhase.DECLARATIONS"
}
defaultNull("delegateFieldSymbol", "receiverTypeRef", "initializer", "delegate", "getter", "setter", withGetter = true)
}
impl(namedArgumentExpression) {
default("typeRef") {
delegate = "expression"