next steps for closure iterators

This commit is contained in:
Araq
2014-01-22 17:32:38 +01:00
parent 85a5bfe605
commit 37229df7fc
28 changed files with 164 additions and 71 deletions

39
tests/parser/toprprec.nim Normal file
View File

@@ -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"

View File

@@ -0,0 +1,11 @@
discard """
output: "true"
"""
# Test the new predence rules
proc `\+` (x, y: int): int = result = x + y
proc `\*` (x, y: int): int = result = x * y
echo 5 \+ 1 \* 9 == 14