Skip to content

Commit ea37f3f

Browse files
Merge pull request #6696 from dotty-staging/fix-#6676
Fix #6676: Add missing buffer bound check
2 parents d3433a6 + 116b7ce commit ea37f3f

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,10 @@ object Parsers {
799799
private def interpolatedString(inPattern: Boolean = false): Tree = atSpan(in.offset) {
800800
val segmentBuf = new ListBuffer[Tree]
801801
val interpolator = in.name
802-
val isTripleQuoted = in.buf(in.charOffset) == '"' && in.buf(in.charOffset + 1) == '"'
802+
val isTripleQuoted =
803+
in.charOffset + 1 < in.buf.length &&
804+
in.buf(in.charOffset) == '"' &&
805+
in.buf(in.charOffset + 1) == '"'
803806
in.nextToken()
804807
def nextSegment(literalOffset: Offset) =
805808
segmentBuf += Thicket(

compiler/test-resources/repl/i6676

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
scala> xml"
2+
1 | xml"
3+
| ^
4+
| unclosed string literal
5+
1 | xml"
6+
| ^
7+
| ';' expected, but eof found
8+
scala> xml""
9+
1 | xml""
10+
| ^
11+
|value xml is not a member of StringContext - did you mean StringContext.s?
12+
scala> xml"""
13+
1 | xml"""
14+
| ^
15+
| unclosed multi-line string literal
16+
1 | xml"""
17+
| ^
18+
| unclosed multi-line string literal
19+
scala> s"
20+
1 | s"
21+
| ^
22+
| unclosed string literal
23+
1 | s"
24+
| ^
25+
| ';' expected, but eof found

0 commit comments

Comments
 (0)