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