aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/ParamForwarding.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/transform/ParamForwarding.scala')
-rw-r--r--src/dotty/tools/dotc/transform/ParamForwarding.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/transform/ParamForwarding.scala b/src/dotty/tools/dotc/transform/ParamForwarding.scala
index 2e6a97bcf..9571c387b 100644
--- a/src/dotty/tools/dotc/transform/ParamForwarding.scala
+++ b/src/dotty/tools/dotc/transform/ParamForwarding.scala
@@ -80,4 +80,15 @@ class ParamForwarding(thisTransformer: DenotTransformer) {
cpy.Template(impl)(body = fwd(impl.body)(ctx.withPhase(thisTransformer)))
}
+
+ def adaptRef[T <: RefTree](tree: T)(implicit ctx: Context): T = tree.tpe match {
+ case tpe: TermRefWithSignature
+ if tpe.sig == Signature.NotAMethod && tpe.symbol.is(Method) =>
+ // It's a param forwarder; adapt the signature
+ tree.withType(
+ TermRef.withSig(tpe.prefix, tpe.name, tpe.prefix.memberInfo(tpe.symbol).signature))
+ .asInstanceOf[T]
+ case _ =>
+ tree
+ }
}