diff options
author | Martin Odersky <odersky@gmail.com> | 2015-11-02 18:55:02 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-11-05 13:57:37 +0100 |
commit | 4850629d244156d96a2a1bad231cddc0084d0d31 (patch) | |
tree | d12a4109281b681f42c7d144205c8d5e70bed59f /src/dotty/tools/dotc | |
parent | a0fbe09d945b6b6ef1279e7d6f828bdd3b93cce2 (diff) | |
download | dotty-4850629d244156d96a2a1bad231cddc0084d0d31.tar.gz dotty-4850629d244156d96a2a1bad231cddc0084d0d31.tar.bz2 dotty-4850629d244156d96a2a1bad231cddc0084d0d31.zip |
Emit a migration warning in Parser when hitting a Scala2 feature.
Diffstat (limited to 'src/dotty/tools/dotc')
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index 63d33e4e1..8d230d321 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -259,7 +259,11 @@ object Parsers { } /** Cannot use ctx.featureEnabled because accessing the context would force too much */ - private def scala2mode = ctx.settings.language.value.contains(nme.Scala2.toString) + private def scala2mode(msg: => String, pos: Position = Position(in.offset)) = { + val s2 = ctx.settings.language.value.contains(nme.Scala2.toString) + if (s2) ctx.migrationWarning(msg, source atPos pos) + s2 + } /* ---------- TREE CONSTRUCTION ------------------------------------------- */ @@ -1726,12 +1730,13 @@ object Parsers { * DefSig ::= id [DefTypeParamClause] ParamClauses */ def defDefOrDcl(mods: Modifiers): Tree = atPos(tokenRange) { - def atScala2Brace = scala2mode && in.token == LBRACE + def scala2ProcedureSyntax = + scala2mode("Procedure syntax no longer supported; `=' should be inserted here") if (in.token == THIS) { in.nextToken() val vparamss = paramClauses(nme.CONSTRUCTOR) val rhs = { - if (!atScala2Brace) accept(EQUALS) + if (!scala2ProcedureSyntax || in.token != LBRACE) accept(EQUALS) atPos(in.offset) { constrExpr() } } makeConstructor(Nil, vparamss, rhs).withMods(mods) @@ -1748,7 +1753,7 @@ object Parsers { } else if (!tpt.isEmpty) EmptyTree - else if (scala2mode) { + else if (scala2ProcedureSyntax) { tpt = scalaUnit if (in.token == LBRACE) expr() else EmptyTree |