summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-12-19 15:30:54 -0800
committerGitHub <noreply@github.com>2016-12-19 15:30:54 -0800
commit56fb9172756d95ef903c36efcf54f1ae95c64b4b (patch)
tree5fd366037ff241337737cdd3ad9e8a31edb4e767 /src/compiler/scala/tools/nsc/transform
parentbba42ff5d410127c8fd9be0073a6eda91b8029d1 (diff)
parent582c8a2fdd1d5b3cacff982b0c4af0a7dd37b651 (diff)
downloadscala-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.scala11
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) =>