Fix double dollar escapes

pull/659/head
Johannes Coetzee 2023-07-20 14:20:54 +07:00
parent aa5907747b
commit 3aa86705b4
2 changed files with 14 additions and 3 deletions

@ -42,6 +42,8 @@ works even in multiline strings, ${name}
val string5 = s"$works${without}$spaces"
val string6 = s"$a$b"
val string7 = s"$$ $a"
--------------------------------------------------------------------------------
(compilation_unit
@ -98,7 +100,14 @@ val string6 = s"$a$b"
(interpolation
(dollar_identifier))
(interpolation
(dollar_identifier))))))
(dollar_identifier)))))
(val_definition
(identifier)
(interpolated_string_expression
(identifier)
(interpolated_string
(interpolation
(dollar_identifier))))))
================================================================================

@ -1512,18 +1512,20 @@ module.exports = grammar({
_interpolated_multiline_string_start: $ => '"""',
_dollar_escape: $ => seq('$', '$'),
interpolation: $ => seq("$", choice($.dollar_identifier, $.block)),
interpolated_string: $ =>
choice(
seq(
$._interpolated_string_start,
repeat(seq($._interpolated_string_middle, $.interpolation)),
repeat(seq($._interpolated_string_middle, choice($._dollar_escape, $.interpolation))),
$._interpolated_string_end,
),
seq(
$._interpolated_multiline_string_start,
repeat(seq($._interpolated_multiline_string_middle, $.interpolation)),
repeat(seq($._interpolated_multiline_string_middle, choice($._dollar_escape, $.interpolation))),
$._interpolated_multiline_string_end,
),
),