[FIR] Add transformations for delegated constructor call
This commit is contained in:
@@ -104,6 +104,10 @@ class FirJavaConstructor @FirImplementationDetail constructor(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDelegatedConstructor(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
|
||||
return this
|
||||
}
|
||||
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
|
||||
override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) {
|
||||
|
||||
@@ -52,4 +52,6 @@ abstract class FirConstructor : FirPureAbstractElement(), FirFunction<FirConstru
|
||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirConstructor
|
||||
|
||||
abstract fun <D> transformDelegatedConstructor(transformer: FirTransformer<D>, data: D): FirConstructor
|
||||
}
|
||||
|
||||
+6
-1
@@ -69,7 +69,7 @@ internal class FirConstructorImpl(
|
||||
transformValueParameters(transformer, data)
|
||||
transformStatus(transformer, data)
|
||||
transformAnnotations(transformer, data)
|
||||
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
|
||||
transformDelegatedConstructor(transformer, data)
|
||||
body = body?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
@@ -104,6 +104,11 @@ internal class FirConstructorImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDelegatedConstructor(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
|
||||
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
+6
-1
@@ -69,7 +69,7 @@ internal class FirPrimaryConstructor(
|
||||
transformValueParameters(transformer, data)
|
||||
transformStatus(transformer, data)
|
||||
transformAnnotations(transformer, data)
|
||||
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
|
||||
transformDelegatedConstructor(transformer, data)
|
||||
body = body?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
@@ -104,6 +104,11 @@ internal class FirPrimaryConstructor(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDelegatedConstructor(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
|
||||
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
+2
@@ -27,6 +27,8 @@ abstract class FirDelegatedConstructorCall : FirPureAbstractElement(), FirResolv
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegatedConstructorCall(this, data)
|
||||
|
||||
abstract fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef)
|
||||
|
||||
abstract override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDelegatedConstructorCall
|
||||
|
||||
+4
@@ -58,4 +58,8 @@ internal class FirDelegatedConstructorCallImpl(
|
||||
override fun replaceArgumentList(newArgumentList: FirArgumentList) {
|
||||
argumentList = newArgumentList
|
||||
}
|
||||
|
||||
override fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) {
|
||||
constructedTypeRef = newConstructedTypeRef
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -338,13 +338,13 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
parentArg(callableMemberDeclaration, "F", constructor)
|
||||
+annotations
|
||||
+symbol("FirConstructorSymbol")
|
||||
+field("delegatedConstructor", delegatedConstructorCall, nullable = true)
|
||||
+field("delegatedConstructor", delegatedConstructorCall, nullable = true).withTransform()
|
||||
+body(nullable = true)
|
||||
+booleanField("isPrimary")
|
||||
}
|
||||
|
||||
delegatedConstructorCall.configure {
|
||||
+field("constructedTypeRef", typeRef)
|
||||
+field("constructedTypeRef", typeRef, withReplace = true)
|
||||
generateBooleanFields("this", "super")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user