Skip to content

Commit 2fff6ae

Browse files
committed
LegacyScanner: allow repeated number separators
Partial undo of #3593 where this logic was accidentally removed.
1 parent ba5f625 commit 2fff6ae

File tree

2 files changed

+7
-22
lines changed

2 files changed

+7
-22
lines changed

scalameta/tokenizers/shared/src/main/scala/scala/meta/internal/tokenizers/LegacyScanner.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -765,12 +765,12 @@ class LegacyScanner(input: Input, dialect: Dialect) {
765765
putChar(ch)
766766
nextChar()
767767
readDigits(base)
768-
} else if (wasSeparator) {
769-
val pos = if (ch == SU) begCharOffset else begCharOffset - 1
770-
syntaxError("trailing number separator", at = pos)
771768
} else if (isNumberSeparator()) {
772769
nextChar()
773770
readDigits(base, true)
771+
} else if (wasSeparator) {
772+
val pos = if (ch == SU) begCharOffset else begCharOffset - 1
773+
syntaxError("trailing number separator", at = pos)
774774
}
775775

776776
/**

tests/shared/src/test/scala/scala/meta/tests/tokenizers/TokenizerSuite.scala

+4-19
Original file line numberDiff line numberDiff line change
@@ -1141,8 +1141,11 @@ class TokenizerSuite extends BaseTokenizerSuite {
11411141
"1_024L",
11421142
"3_14e-2",
11431143
"3_14E-2_1",
1144+
"3_14E-1__2",
11441145
"0x_1234",
1145-
"0b_0101"
1146+
"0b_0101",
1147+
"123_456__789",
1148+
"0x__123_456__789"
11461149
).foreach { value =>
11471150
test(s"numeric literal separator ok scala213: $value") {
11481151
dialects.Scala213(value).tokenize.get // no exception
@@ -1198,12 +1201,6 @@ class TokenizerSuite extends BaseTokenizerSuite {
11981201
|3_14ef
11991202
| ^""".stripMargin
12001203
),
1201-
(
1202-
"3_14E-1__2",
1203-
"""|<input>:1: error: trailing number separator
1204-
|3_14E-1__2
1205-
| ^""".stripMargin
1206-
),
12071204
(
12081205
"3_14E-2_",
12091206
"""|<input>:1: error: trailing number separator
@@ -1233,18 +1230,6 @@ class TokenizerSuite extends BaseTokenizerSuite {
12331230
"""|<input>:1: error: trailing number separator
12341231
|3.1_4_dd
12351232
| ^""".stripMargin
1236-
),
1237-
(
1238-
"123_456__789",
1239-
"""|<input>:1: error: trailing number separator
1240-
|123_456__789
1241-
| ^""".stripMargin
1242-
),
1243-
(
1244-
"0x__123_456__789",
1245-
"""|<input>:1: error: trailing number separator
1246-
|0x__123_456__789
1247-
| ^""".stripMargin
12481233
)
12491234
).foreach { case (value, error) =>
12501235
test(s"numeric literal separator fail scala213: $value") {

0 commit comments

Comments
 (0)