[FIR] Resolve delegating constructor calls

This commit is contained in:
Dmitriy Novozhilov
2019-12-03 18:39:39 +03:00
parent de77bd526b
commit 38c1a50c1d
25 changed files with 339 additions and 54 deletions
@@ -84,7 +84,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val typeOperatorCall = element("TypeOperatorCall", Expression, expression, call)
val whenExpression = element("WhenExpression", Expression, expression, resolvable)
val whenBranch = element("WhenBranch", Expression)
val delegatedConstructorCall = element("DelegatedConstructorCall", Expression, call)
val qualifiedAccessWithoutCallee = element("QualifiedAccessWithoutCallee", Expression, statement)
val qualifiedAccess = element("QualifiedAccess", Expression, qualifiedAccessWithoutCallee, resolvable)
@@ -95,6 +94,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val errorFunction = element("ErrorFunction", Declaration, function, diagnosticHolder)
val qualifiedAccessExpression = element("QualifiedAccessExpression", Expression, expression, qualifiedAccess)
val functionCall = element("FunctionCall", Expression, qualifiedAccessExpression, call)
val delegatedConstructorCall = element("DelegatedConstructorCall", Expression, resolvable, call)
val componentCall = element("ComponentCall", Expression, functionCall)
val callableReferenceAccess = element("CallableReferenceAccess", Expression, qualifiedAccessExpression)
val thisReceiverExpression = element("ThisReceiverExpression", Expression, qualifiedAccessExpression)
@@ -575,6 +575,16 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
}
noImpl(userTypeRef)
// impl(delegatedConstructorCall) {
// defaultTrue("safe", withGetter = true)
// listOf("dispatchReceiver", "extensionReceiver", "explicitReceiver").forEach {
// default(it) {
// value = "FirNoReceiverExpression"
// withGetter = true
// }
// }
// }
}
private fun findImplementationsWithAnnotations(implementationPredicate: (Implementation) -> Boolean): Collection<Implementation> {
@@ -324,7 +324,6 @@ object NodeConfigurator : AbstractFieldConfigurator() {
delegatedConstructorCall.configure {
+field("constructedTypeRef", typeRef)
generateBooleanFields("this", "super")
+calleeReference.withTransform()
}
valueParameter.configure {