mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-21 08:21:32 +00:00
next steps for closure iterators
This commit is contained in:
39
tests/parser/toprprec.nim
Normal file
39
tests/parser/toprprec.nim
Normal 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"
|
||||
|
||||
|
||||
|
||||
11
tests/parser/tprecedence.nim
Normal file
11
tests/parser/tprecedence.nim
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user