diff options
author | Martin Odersky <odersky@gmail.com> | 2016-03-09 09:44:17 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-03-12 16:08:39 +0100 |
commit | 13a376c80c21ddb28789530091bb54f7fa58e785 (patch) | |
tree | 6498a2f7c14813253f9501f03d7a1de37fe72c26 /src/dotty/tools/dotc/parsing | |
parent | bde5e4dfeb54601755f09983e3893e1679a4b920 (diff) | |
download | dotty-13a376c80c21ddb28789530091bb54f7fa58e785.tar.gz dotty-13a376c80c21ddb28789530091bb54f7fa58e785.tar.bz2 dotty-13a376c80c21ddb28789530091bb54f7fa58e785.zip |
Fix patch for constructors with procedure syntax
A constructor
def this() { ... }
needs to be rewritten to
def this() = { ... }
not to
def this(): Unit = { ... }
Diffstat (limited to 'src/dotty/tools/dotc/parsing')
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index d5ce455f3..aa2058692 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -1762,17 +1762,18 @@ object Parsers { * DefSig ::= id [DefTypeParamClause] ParamClauses */ def defDefOrDcl(mods: Modifiers): Tree = atPos(tokenRange) { - def scala2ProcedureSyntax = - testScala2Mode("Procedure syntax no longer supported; `: Unit =' should be inserted here") && { - patch(source, Position(in.lastOffset), - if (in.token == LBRACE) ": Unit =" else ": Unit ") + def scala2ProcedureSyntax(resultTypeStr: String) = { + val toInsert = if (in.token == LBRACE) s"$resultTypeStr =" else ": Unit " + testScala2Mode(s"Procedure syntax no longer supported; `$toInsert' should be inserted here") && { + patch(source, Position(in.lastOffset), toInsert) true } + } if (in.token == THIS) { in.nextToken() val vparamss = paramClauses(nme.CONSTRUCTOR) val rhs = { - if (!(in.token == LBRACE && scala2ProcedureSyntax)) accept(EQUALS) + if (!(in.token == LBRACE && scala2ProcedureSyntax(""))) accept(EQUALS) atPos(in.offset) { constrExpr() } } makeConstructor(Nil, vparamss, rhs).withMods(mods) @@ -1789,7 +1790,7 @@ object Parsers { } else if (!tpt.isEmpty) EmptyTree - else if (scala2ProcedureSyntax) { + else if (scala2ProcedureSyntax(": Unit")) { tpt = scalaUnit if (in.token == LBRACE) expr() else EmptyTree |