diff options
author | Michał Zieliński <michal@zielinscy.org.pl> | 2014-01-26 17:06:21 +0100 |
---|---|---|
committer | Michał Zieliński <michal@zielinscy.org.pl> | 2014-01-26 17:06:21 +0100 |
commit | e0e0b409e49b53e9c95de6fcb0372707b3869de6 (patch) | |
tree | f4128f64551d3de5fd2e21ab53686bf370ee21a8 /tests/parser/toprprec.nim | |
parent | ad1a0c51e265eaaa977dd35654f9a3136983e2fa (diff) | |
parent | 5d712e0d3f9f5b8e486720c8bedd749656b527d8 (diff) | |
download | Nim-e0e0b409e49b53e9c95de6fcb0372707b3869de6.tar.gz |
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
Conflicts: lib/pure/osproc.nim
Diffstat (limited to 'tests/parser/toprprec.nim')
-rw-r--r-- | tests/parser/toprprec.nim | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/parser/toprprec.nim b/tests/parser/toprprec.nim new file mode 100644 index 000000000..ce33934b5 --- /dev/null +++ b/tests/parser/toprprec.nim @@ -0,0 +1,39 @@ +discard """ + file: "toprprec.nim" + output: "done" +""" +# Test operator precedence: + +template `@` (x: expr): expr {.immediate.} = self.x +template `@!` (x: expr): expr {.immediate.} = x +template `===` (x: expr): expr {.immediate.} = 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" + + + |