forked from Mirror/wren
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.
42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
class Foo {
|
|
construct new() {}
|
|
|
|
+(other) { "infix + %(other)" }
|
|
-(other) { "infix - %(other)" }
|
|
*(other) { "infix * %(other)" }
|
|
/(other) { "infix / %(other)" }
|
|
%(other) { "infix \% %(other)" }
|
|
<(other) { "infix < %(other)" }
|
|
>(other) { "infix > %(other)" }
|
|
<=(other) { "infix <= %(other)" }
|
|
>=(other) { "infix >= %(other)" }
|
|
==(other) { "infix == %(other)" }
|
|
!=(other) { "infix != %(other)" }
|
|
&(other) { "infix & %(other)" }
|
|
|(other) { "infix | %(other)" }
|
|
is(other) { "infix is %(other)" }
|
|
|
|
! { "prefix !" }
|
|
~ { "prefix ~" }
|
|
- { "prefix -" }
|
|
}
|
|
|
|
var foo = Foo.new()
|
|
System.print(foo + "a") // expect: infix + a
|
|
System.print(foo - "a") // expect: infix - a
|
|
System.print(foo * "a") // expect: infix * a
|
|
System.print(foo / "a") // expect: infix / a
|
|
System.print(foo % "a") // expect: infix % a
|
|
System.print(foo < "a") // expect: infix < a
|
|
System.print(foo > "a") // expect: infix > a
|
|
System.print(foo <= "a") // expect: infix <= a
|
|
System.print(foo >= "a") // expect: infix >= a
|
|
System.print(foo == "a") // expect: infix == a
|
|
System.print(foo != "a") // expect: infix != a
|
|
System.print(foo & "a") // expect: infix & a
|
|
System.print(foo | "a") // expect: infix | a
|
|
System.print(!foo) // expect: prefix !
|
|
System.print(~foo) // expect: prefix ~
|
|
System.print(-foo) // expect: prefix -
|
|
System.print(foo is "a") // expect: infix is a
|