forked from Mirror/wren
Simple string interpolation.
This allows "%(...)" inside a string literal to interpolate the stringified result of an expression. It doesn't support custom interpolators or format strings, but we can consider extending that later.
This commit is contained in:
2
test/language/interpolation/empty.wren
Normal file
2
test/language/interpolation/empty.wren
Normal file
@ -0,0 +1,2 @@
|
||||
// expect error line 3
|
||||
" %() "
|
||||
15
test/language/interpolation/interpolation.wren
Normal file
15
test/language/interpolation/interpolation.wren
Normal file
@ -0,0 +1,15 @@
|
||||
// Full string.
|
||||
System.print("%(1 + 2)") // expect: 3
|
||||
|
||||
// Multiple in one string.
|
||||
System.print("str%(1 + 2)(%(3 + 4)\%%(5 + 6)") // expect: str3(7%11
|
||||
|
||||
// Nested.
|
||||
System.print("[%("{%("in" + "ner")}")]") // expect: [{inner}]
|
||||
|
||||
// Ignore newlines in template.
|
||||
System.print("[%(
|
||||
|
||||
"template"
|
||||
|
||||
)]") // expect: [template]
|
||||
@ -0,0 +1 @@
|
||||
System.print("%(123.badMethod)") // expect runtime error: Num does not implement 'badMethod'.
|
||||
8
test/language/interpolation/switch_fiber.wren
Normal file
8
test/language/interpolation/switch_fiber.wren
Normal file
@ -0,0 +1,8 @@
|
||||
var fiber = Fiber.new {
|
||||
System.print("in fiber")
|
||||
Fiber.yield("result")
|
||||
}
|
||||
|
||||
System.print("outer %(fiber.call()) string")
|
||||
// expect: in fiber
|
||||
// expect: outer result string
|
||||
2
test/language/interpolation/unterminated.wren
Normal file
2
test/language/interpolation/unterminated.wren
Normal file
@ -0,0 +1,2 @@
|
||||
" %(
|
||||
// expect error
|
||||
2
test/language/interpolation/unterminated_expression.wren
Normal file
2
test/language/interpolation/unterminated_expression.wren
Normal file
@ -0,0 +1,2 @@
|
||||
// expect error line 2
|
||||
" %(123"
|
||||
Reference in New Issue
Block a user