diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2016-12-19 15:30:54 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-19 15:30:54 -0800 |
commit | 56fb9172756d95ef903c36efcf54f1ae95c64b4b (patch) | |
tree | 5fd366037ff241337737cdd3ad9e8a31edb4e767 /src/compiler/scala/tools/nsc/transform | |
parent | bba42ff5d410127c8fd9be0073a6eda91b8029d1 (diff) | |
parent | 582c8a2fdd1d5b3cacff982b0c4af0a7dd37b651 (diff) | |
download | scala-56fb9172756d95ef903c36efcf54f1ae95c64b4b.tar.gz scala-56fb9172756d95ef903c36efcf54f1ae95c64b4b.tar.bz2 scala-56fb9172756d95ef903c36efcf54f1ae95c64b4b.zip |
Merge pull request #5539 from som-snytt/issue/10068
SI-10068 Only permit elidable methods
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index ea3c7da014..096b6b9263 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -410,8 +410,17 @@ abstract class UnCurry extends InfoTransform def isLiftedLambdaMethod(funSym: Symbol) = funSym.isArtifact && funSym.name.containsName(nme.ANON_FUN_NAME) && funSym.isLocalToBlock + def checkIsElisible(sym: Symbol): Boolean = + (sym ne null) && sym.elisionLevel.exists { level => + if (sym.isMethod) level < settings.elidebelow.value + else { + if (settings.isScala213) reporter.error(sym.pos, s"${sym.name}: Only methods can be marked @elidable!") + false + } + } + val result = - if ((sym ne null) && sym.elisionLevel.exists(_ < settings.elidebelow.value)) + if (checkIsElisible(sym)) replaceElidableTree(tree) else translateSynchronized(tree) match { case dd @ DefDef(mods, name, tparams, _, tpt, rhs) => |