Add lexer support for `TOKEN_INTERPOLATION` to split string literals at interpolation points, introduce `MAX_INTERPOLATION_NESTING` limit of 8, and compile interpolated strings by emitting calls to `String.interpolate_()`. Optimize list and map literal construction with new `addCore_` primitives to reduce stack churn. Update `String`, `List`, and `Map` `toString` methods in core library to use interpolation syntax, and migrate all benchmark and test files from explicit concatenation to interpolated strings.
22 lines
357 B
Plaintext
22 lines
357 B
Plaintext
class Foo {
|
|
construct new() {}
|
|
method(a, b) { "method %(a) %(b)" }
|
|
[a, b] { "subscript %(a) %(b)" }
|
|
}
|
|
|
|
var foo = Foo.new()
|
|
|
|
// Allow newlines after commas and before ")".
|
|
System.print(foo.method("a",
|
|
|
|
"b"
|
|
|
|
)) // expect: method a b
|
|
|
|
// Allow newlines after commas and before "]".
|
|
System.print(foo["a",
|
|
|
|
"b"
|
|
|
|
]) // expect: subscript a b
|