next steps towards term rewriting macros; simple examples work
This commit is contained in:
parent
1786e30991
commit
1d14cb1ad8
17 changed files with 124 additions and 56 deletions
28
tests/reject/tdisallowif.nim
Normal file
28
tests/reject/tdisallowif.nim
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
discard """
|
||||
line: 24
|
||||
errormsg: "usage of 'disallowIf' is a user-defined error"
|
||||
"""
|
||||
|
||||
template optZero{x+x}(x: int): int = x*3
|
||||
template andthen{x*3}(x: int): int = x*4
|
||||
template optSubstr1{x = substr(x, a, b)}(x: string, a, b: int) = setlen(x, b+1)
|
||||
|
||||
template disallowIf{
|
||||
if cond: action
|
||||
else: action2
|
||||
}(cond: bool, action, action2: stmt) {.error.} = action
|
||||
|
||||
var y = 12
|
||||
echo y+y
|
||||
|
||||
var s: array[0..2, string]
|
||||
s[0] = "hello"
|
||||
s[0] = substr(s[0], 0, 2)
|
||||
|
||||
echo s[0]
|
||||
|
||||
if true:
|
||||
echo "do it"
|
||||
echo "more branches"
|
||||
else:
|
||||
nil
|
||||
Loading…
Add table
Add a link
Reference in a new issue