1234567891011121314151617181920212223242526272829303132333435363738 |
- discard """
- output: "done"
- """
- # Test operator precedence:
- template `@@` (x: untyped): untyped =
- `self`.x
- template `@!` (x: untyped): untyped = x
- template `===` (x: untyped): untyped = x
- type
- TO = object
- x: int
- TA = tuple[a, b: int, obj: TO]
- proc init(self: var TA): string =
- @@a = 3
- === @@b = 4
- @@obj.x = 4
- @! === result = "abc"
- result = @@b.`$`
- assert 3+5*5-2 == 28- -26-28
- proc `^-` (x, y: int): int =
- # now right-associative!
- result = x - y
- assert 34 ^- 6 ^- 2 == 30
- assert 34 - 6 - 2 == 26
- var s: TA
- assert init(s) == "4"
- echo "done"
|