Skip to content

Commit fe3c357

Browse files
committed
Use a specifc NameKind for adapted closures
1 parent 4e90eba commit fe3c357

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

compiler/src/dotty/tools/dotc/core/NameKinds.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ object NameKinds {
361361
val ModuleVarName = new SuffixNameKind(OBJECTVAR, "$module")
362362
val ModuleClassName = new SuffixNameKind(OBJECTCLASS, "$", optInfoString = "ModuleClass")
363363
val ImplMethName = new SuffixNameKind(IMPLMETH, "$")
364+
val AdaptedClosureName = new SuffixNameKind(ADAPTEDCLOSURE, "$adapted") { override def definesNewName = true }
364365

365366
/** A name together with a signature. Used in Tasty trees. */
366367
object SignedName extends NameKind(SIGNED) {

compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ Macro-format:
4848
DIRECT Length underlying_NameRef
4949
FIELD Length underlying_NameRef
5050
EXTMETH Length underlying_NameRef
51+
ADAPTEDCLOSURE Length underlying_NameRef
5152
OBJECTVAR Length underlying_NameRef
5253
OBJECTCLASS Length underlying_NameRef
5354
SIGNED Length original_NameRef resultSig_NameRef paramSig_NameRef*
@@ -253,6 +254,7 @@ object TastyFormat {
253254
final val DIRECT = 31
254255
final val FIELD = 32
255256
final val EXTMETH = 33
257+
final val ADAPTEDCLOSURE = 34
256258
final val OBJECTVAR = 39
257259
final val OBJECTCLASS = 40
258260

@@ -471,6 +473,7 @@ object TastyFormat {
471473
case DIRECT => "DIRECT"
472474
case FIELD => "FIELD"
473475
case EXTMETH => "EXTMETH"
476+
case ADAPTEDCLOSURE => "ADAPTEDCLOSURE"
474477
case OBJECTVAR => "OBJECTVAR"
475478
case OBJECTCLASS => "OBJECTCLASS"
476479

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import core.Types._
1111
import core.Names._
1212
import core.StdNames._
1313
import core.NameOps._
14+
import core.NameKinds.AdaptedClosureName
1415
import core.Decorators._
1516
import core.Constants._
1617
import core.Definitions._
@@ -634,7 +635,7 @@ object Erasure {
634635
if (resultAdaptationNeeded) sam.info
635636
else implType.derivedLambdaType(paramInfos = samParamTypes)
636637
} else implType.derivedLambdaType(resType = samResultType)
637-
val bridge = ctx.newSymbol(ctx.owner, nme.ANON_FUN, Flags.Synthetic | Flags.Method, bridgeType)
638+
val bridge = ctx.newSymbol(ctx.owner, AdaptedClosureName(meth.symbol.name.asTermName), Flags.Synthetic | Flags.Method, bridgeType)
638639
val bridgeCtx = ctx.withOwner(bridge)
639640
Closure(bridge, bridgeParamss => {
640641
implicit val ctx = bridgeCtx

0 commit comments

Comments
 (0)