Skip to content

Commit 9a79410

Browse files
committed
Fix handling of RetainedInline when compiling from tasty
1 parent 714485e commit 9a79410

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

compiler/src/dotty/tools/dotc/transform/Erasure.scala

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -938,11 +938,7 @@ object Erasure {
938938
val origName = retainer.name.asTermName.exclude(BodyRetainerName)
939939
val targetName =
940940
if retainer.hasAnnotation(defn.TargetNameAnnot) then
941-
try retainer.erasedName
942-
finally
943-
// reset target name so that definition will have a BodyRetainerName
944-
// after erasure and be thereby eliminated in typedDefDef
945-
retainer.setTargetName(retainer.name)
941+
retainer.erasedName.unmangle(BodyRetainerName).exclude(BodyRetainerName)
946942
else origName
947943
val inlineMeth = atPhase(typerPhase) {
948944
retainer.owner.info.decl(origName)

compiler/src/dotty/tools/dotc/typer/Inliner.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import Contexts._
1717
import Names.{Name, TermName}
1818
import NameKinds.{InlineAccessorName, InlineBinderName, InlineScrutineeName, BodyRetainerName}
1919
import ProtoTypes.selectionProto
20+
import Annotations.Annotation
2021
import SymDenotations.SymDenotation
2122
import Inferencing.isFullyDefined
2223
import config.Printers.inlining
@@ -198,8 +199,10 @@ object Inliner {
198199
name = BodyRetainerName(meth.name),
199200
flags = meth.flags &~ (Inline | Macro | Override) | Private,
200201
coord = mdef.rhs.span.startPos).asTerm
201-
for targetAnnot <- meth.getAnnotation(defn.TargetNameAnnot) do
202-
retainer.addAnnotation(targetAnnot)
202+
if meth.hasAnnotation(defn.TargetNameAnnot) then
203+
retainer.addAnnotation(
204+
Annotation(defn.TargetNameAnnot,
205+
Literal(Constant(BodyRetainerName(meth.erasedName.asTermName).toString)).withSpan(meth.span)))
203206
polyDefDef(retainer, targs => prefss =>
204207
inlineCall(
205208
ref(meth).appliedToTypes(targs).appliedToArgss(prefss)

0 commit comments

Comments
 (0)