diff options
author | liu fengyun <liu@fengy.me> | 2016-12-12 13:14:08 +0100 |
---|---|---|
committer | liu fengyun <liu@fengy.me> | 2016-12-12 14:28:23 +0100 |
commit | 628a177f7f5654f4c388b944a098c3723cf7f950 (patch) | |
tree | 06fea542a50a7f37cfd5597e907a4724c8c27d47 /compiler/src/dotty/tools/dotc/parsing/Parsers.scala | |
parent | d14de3d7b5955d353ba3108b91ad4eadc6697908 (diff) | |
download | dotty-628a177f7f5654f4c388b944a098c3723cf7f950.tar.gz dotty-628a177f7f5654f4c388b944a098c3723cf7f950.tar.bz2 dotty-628a177f7f5654f4c388b944a098c3723cf7f950.zip |
only allow $_ in patterns
Diffstat (limited to 'compiler/src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/parsing/Parsers.scala | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index 1f5ad397d..704f399ca 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -597,7 +597,7 @@ object Parsers { val isNegated = negOffset < in.offset atPos(negOffset) { if (in.token == SYMBOLLIT) atPos(in.skipToken()) { SymbolLit(in.strVal) } - else if (in.token == INTERPOLATIONID) interpolatedString() + else if (in.token == INTERPOLATIONID) interpolatedString(inPattern) else finish(in.token match { case CHARLIT => in.charVal case INTLIT => in.intVal(isNegated).toInt @@ -621,11 +621,11 @@ object Parsers { in.nextToken() while (in.token == STRINGPART) { segmentBuf += Thicket( - literal(), + literal(inPattern = inPattern), atPos(in.offset) { if (in.token == IDENTIFIER) termIdent() - else if (in.token == USCORE) { + else if (in.token == USCORE && inPattern) { in.nextToken() Ident(nme.WILDCARD) } @@ -637,12 +637,12 @@ object Parsers { if (inPattern) Block(Nil, inBraces(pattern())) else expr() else { - ctx.error(InterpolatedStringError()) + ctx.error(InterpolatedStringError(), source atPos Position(in.offset)) EmptyTree } }) } - if (in.token == STRINGLIT) segmentBuf += literal() + if (in.token == STRINGLIT) segmentBuf += literal(inPattern = inPattern) InterpolatedString(interpolator, segmentBuf.toList) } @@ -1448,7 +1448,7 @@ object Parsers { case XMLSTART => xmlLiteralPattern() case _ => - if (isLiteral) literal() + if (isLiteral) literal(inPattern = true) else { syntaxErrorOrIncomplete(IllegalStartOfSimplePattern()) errorTermTree |