From 4850629d244156d96a2a1bad231cddc0084d0d31 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 2 Nov 2015 18:55:02 +0100 Subject: Emit a migration warning in Parser when hitting a Scala2 feature. --- src/dotty/tools/dotc/parsing/Parsers.scala | 13 +++++++++---- 1 file 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 -- cgit v1.2.3