[FIR] Add a Fir node that wraps a ConeEffectDeclaration

This commit is contained in:
Arsen Nagdalian
2020-07-19 02:08:01 +03:00
parent 32a64b888e
commit 991b18fec4
19 changed files with 176 additions and 21 deletions
@@ -151,6 +151,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef)
val composedSuperTypeRef = element("ComposedSuperTypeRef", TypeRef, typeRef)
val effectDeclaration = element("EffectDeclaration", Contracts)
val contractDescription = element("ContractDescription", Contracts)
val rawContractDescription = element("RawContractDescription", Contracts, contractDescription)
val resolvedContractDescription = element("ResolvedContractDescription", Contracts, contractDescription)
@@ -605,12 +605,16 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+field(varianceType)
}
effectDeclaration.configure {
+field("effect", coneEffectDeclarationType)
}
rawContractDescription.configure {
+field("contractCall", functionCall)
}
resolvedContractDescription.configure {
+fieldList("effects", effectDeclarationType)
+fieldList("effects", effectDeclaration)
+fieldList("unresolvedEffects", statement)
}
}
@@ -74,7 +74,7 @@ val firScopeProviderType = type("fir.scopes", "FirScopeProvider")
val anonymousInitializerSymbolType = type("fir.symbols.impl", "FirAnonymousInitializerSymbol")
val pureAbstractElementType = generatedType("FirPureAbstractElement")
val effectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")
val coneEffectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")
val emptyContractDescriptionType = generatedType("contracts.impl", "FirEmptyContractDescription")
val coneDiagnosticType = generatedType("diagnostics", "ConeDiagnostic")
val coneStubDiagnosticType = generatedType("diagnostics", "ConeStubDiagnostic")