FIR: Prepare tree for callable references resolution

^KT-32725 In Progress
This commit is contained in:
Denis Zharkov
2019-10-10 18:36:48 +03:00
parent aeceee5af0
commit cdb2bb2b45
11 changed files with 105 additions and 9 deletions
@@ -121,6 +121,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val delegateFieldReference = element("DelegateFieldReference", Reference, resolvedCallableReference)
val backingFieldReference = element("BackingFieldReference", Reference, resolvedCallableReference)
val resolvedRealCallableReference = element("ResolvedRealCallableReference", Reference, resolvedCallableReference)
val resolvedTypeRef = element("ResolvedTypeRef", TypeRef, typeRef)
val errorTypeRef = element("ErrorTypeRef", TypeRef, resolvedTypeRef)
val delegatedTypeRef = element("DelegatedTypeRef", TypeRef, typeRef)
@@ -130,4 +132,4 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val functionTypeRef = element("FunctionTypeRef", TypeRef, typeRefWithNullability)
val resolvedFunctionTypeRef = element("ResolvedFunctionTypeRef", TypeRef, resolvedTypeRef, functionTypeRef)
val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef)
}
}
@@ -433,6 +433,10 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
defaultNull("candidateSymbol", withGetter = true)
}
impl(resolvedRealCallableReference) {
defaultNull("candidateSymbol", withGetter = true)
}
impl(namedReference, "FirSimpleNamedReference") {
kind = OpenClass
}
@@ -615,4 +619,4 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
it.addParent(abstractAnnotatedElement)
}
}
}
}
@@ -396,6 +396,10 @@ object NodeConfigurator : AbstractFieldConfigurator() {
+field("originalType", typeRef)
}
callableReferenceAccess.configure {
+field("calleeReference", namedReference)
}
getClassCall.configure {
+field("argument", expression)
}
@@ -448,6 +452,10 @@ object NodeConfigurator : AbstractFieldConfigurator() {
+field("resolvedSymbol", abstractFirBasedSymbolType, "*")
}
resolvedRealCallableReference.configure {
+fieldList("inferredTypeArguments", coneKotlinTypeType)
}
delegateFieldReference.configure {
+field("resolvedSymbol", delegateFieldSymbolType.withArgs("*"))
}