diff options
author | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-08-24 11:43:35 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-08-24 11:43:35 +0200 |
commit | 3d62009a8e2e715fe12981e7c72c5a701ce6bf96 (patch) | |
tree | 0ce88e1e4780d8f04d371f67c3e1400ffb819220 /src/compiler/scala/tools/nsc/ast/parser/Scanners.scala | |
parent | 3a543d64158e85b65f8998460c832362bdddec4f (diff) | |
parent | ab527ce8cc0220443bda5cc3337ebae158c2fe74 (diff) | |
download | scala-3d62009a8e2e715fe12981e7c72c5a701ce6bf96.tar.gz scala-3d62009a8e2e715fe12981e7c72c5a701ce6bf96.tar.bz2 scala-3d62009a8e2e715fe12981e7c72c5a701ce6bf96.zip |
Merge pull request #4590 from som-snytt/issue/6810
SI-6810 Disallow EOL in char literal
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/Scanners.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/parser/Scanners.scala | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala index cd41c75298..51bb0d3c5b 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala @@ -515,7 +515,7 @@ trait Scanners extends ScannersCommon { charLitOr(getIdentRest) else if (isOperatorPart(ch) && (ch != '\\')) charLitOr(getOperatorRest) - else { + else if (!isAtEnd && (ch != SU && ch != CR && ch != LF || isUnicodeEscape)) { getLitChar() if (ch == '\'') { nextChar() @@ -525,6 +525,8 @@ trait Scanners extends ScannersCommon { syntaxError("unclosed character literal") } } + else + syntaxError("unclosed character literal") } fetchSingleQuote() case '.' => @@ -690,7 +692,7 @@ trait Scanners extends ScannersCommon { private def unclosedStringLit(): Unit = syntaxError("unclosed string literal") - private def getRawStringLit(): Unit = { + @tailrec private def getRawStringLit(): Unit = { if (ch == '\"') { nextRawChar() if (isTripleQuote()) { @@ -707,7 +709,7 @@ trait Scanners extends ScannersCommon { } } - @scala.annotation.tailrec private def getStringPart(multiLine: Boolean): Unit = { + @tailrec private def getStringPart(multiLine: Boolean): Unit = { def finishStringPart() = { setStrVal() token = STRINGPART |