From f13c07fe29d27bdc75423be6d3bf5458175bec90 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Sun, 11 May 2014 13:50:09 +0200 Subject: SI-8578 Avoid fresh name clashes under -Ydelambdafy:method It is important to append the fresh 'N' after '$'. Otherwise, we find out the hard way that ("foo$11" + "1") == ("foo$1" + "11"). --- src/compiler/scala/tools/nsc/transform/Delambdafy.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala index 1468680fe0..d66e53edca 100644 --- a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala +++ b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala @@ -238,7 +238,7 @@ abstract class Delambdafy extends Transform with TypingTransformers with ast.Tre // - reinstate the assertion in `Erasure.resolveAnonymousBridgeClash` val suffix = "$lambda$" + ( if (funOwner.isPrimaryConstructor) "" - else "$" + funOwner.name + else "$" + funOwner.name + "$" ) val name = unit.freshTypeName(s"${oldClass.name.decode}$suffix") -- cgit v1.2.3 From 32514aac8b0f301be5bf451eb68f28e9bd7f929a Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Sun, 11 May 2014 13:53:04 +0200 Subject: SI-8578 Avoid another potential fresh name clash No test case for this one, but see the preceding commit for the class of bug that I'm trying to avoid. --- src/compiler/scala/tools/nsc/transform/Delambdafy.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala index d66e53edca..1f8ab7e887 100644 --- a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala +++ b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala @@ -132,7 +132,7 @@ abstract class Delambdafy extends Transform with TypingTransformers with ast.Tre } val params = ((optionSymbol(thisProxy) map {proxy:Symbol => ValDef(proxy)}) ++ (target.paramss.flatten map ValDef.apply)).toList - val methSym = oldClass.newMethod(unit.freshTermName(nme.accessor.toString()), target.pos, FINAL | BRIDGE | SYNTHETIC | PROTECTED | STATIC) + val methSym = oldClass.newMethod(unit.freshTermName(nme.accessor.toString() + "$"), target.pos, FINAL | BRIDGE | SYNTHETIC | PROTECTED | STATIC) val paramSyms = params map {param => methSym.newSyntheticValueParam(param.symbol.tpe, param.name) } -- cgit v1.2.3