summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-11-06 23:43:44 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-11-08 23:14:11 +0100
commit48ee29aa26e4e5358cb1de7890565095420177b4 (patch)
tree9b8dce70434cafafe7fc1c4afbcad7231e071ce8 /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
parent6902da3168c02448387edc000dedfe97ef5f7cd9 (diff)
downloadscala-48ee29aa26e4e5358cb1de7890565095420177b4.tar.gz
scala-48ee29aa26e4e5358cb1de7890565095420177b4.tar.bz2
scala-48ee29aa26e4e5358cb1de7890565095420177b4.zip
Refine @compileTimeOnly
- Don't default the message, and show it exclusively. - Fix cut-and-pasto in the @since tag - Be tolerant if the annotaion class is missing, as seems to have been the case compiling the continuations plugin. - s/\t/ / in the test file to show the errors are positioned correctly. - Use defensive getOrElse
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index 726c8d3b24..ee7805cb3d 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -1377,8 +1377,13 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans
}
private def checkCompileTimeOnly(sym: Symbol, pos: Position) = {
- if (sym.isCompileTimeOnly)
- unit.error(pos, s"reference to ${sym.fullLocationString} should not survive typechecking: ${sym.compileTimeOnlyMessage.get}")
+ if (sym.isCompileTimeOnly) {
+ def defaultMsg =
+ s"""|Reference to ${sym.fullLocationString} should not have survived past type checking,
+ |it should have been processed and eliminated during expansion of an enclosing macro.""".stripMargin
+ // The getOrElse part should never happen, it's just here as a backstop.
+ unit.error(pos, sym.compileTimeOnlyMessage getOrElse defaultMsg)
+ }
}
private def lessAccessible(otherSym: Symbol, memberSym: Symbol): Boolean = (