@@ -597,7 +597,7 @@ object Parsers {
597
597
val isNegated = negOffset < in.offset
598
598
atPos(negOffset) {
599
599
if (in.token == SYMBOLLIT ) atPos(in.skipToken()) { SymbolLit (in.strVal) }
600
- else if (in.token == INTERPOLATIONID ) interpolatedString()
600
+ else if (in.token == INTERPOLATIONID ) interpolatedString(inPattern )
601
601
else finish(in.token match {
602
602
case CHARLIT => in.charVal
603
603
case INTLIT => in.intVal(isNegated).toInt
@@ -621,11 +621,11 @@ object Parsers {
621
621
in.nextToken()
622
622
while (in.token == STRINGPART ) {
623
623
segmentBuf += Thicket (
624
- literal(),
624
+ literal(inPattern = inPattern ),
625
625
atPos(in.offset) {
626
626
if (in.token == IDENTIFIER )
627
627
termIdent()
628
- else if (in.token == USCORE ) {
628
+ else if (in.token == USCORE && inPattern ) {
629
629
in.nextToken()
630
630
Ident (nme.WILDCARD )
631
631
}
@@ -637,12 +637,12 @@ object Parsers {
637
637
if (inPattern) Block (Nil , inBraces(pattern()))
638
638
else expr()
639
639
else {
640
- ctx.error(InterpolatedStringError ())
640
+ ctx.error(InterpolatedStringError (), source atPos Position (in.offset) )
641
641
EmptyTree
642
642
}
643
643
})
644
644
}
645
- if (in.token == STRINGLIT ) segmentBuf += literal()
645
+ if (in.token == STRINGLIT ) segmentBuf += literal(inPattern = inPattern )
646
646
InterpolatedString (interpolator, segmentBuf.toList)
647
647
}
648
648
@@ -1448,7 +1448,7 @@ object Parsers {
1448
1448
case XMLSTART =>
1449
1449
xmlLiteralPattern()
1450
1450
case _ =>
1451
- if (isLiteral) literal()
1451
+ if (isLiteral) literal(inPattern = true )
1452
1452
else {
1453
1453
syntaxErrorOrIncomplete(IllegalStartOfSimplePattern ())
1454
1454
errorTermTree
0 commit comments