diff options
author | Araq <rumpf_a@web.de> | 2015-03-07 02:30:51 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-03-07 15:43:36 +0100 |
commit | d58212ccc5b51f8f0714d2dfa0624e2df9904b9b (patch) | |
tree | c6bad1fad00f437a08b9787f9a1b26ae91421d36 /tests/template | |
parent | c914532c26f08cbd3e74d5aaee80a1232656669c (diff) | |
download | Nim-d58212ccc5b51f8f0714d2dfa0624e2df9904b9b.tar.gz |
fixes #1940; code breakage! stricter template evaluation
Diffstat (limited to 'tests/template')
-rw-r--r-- | tests/template/texponential_eval.nim | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/template/texponential_eval.nim b/tests/template/texponential_eval.nim new file mode 100644 index 000000000..32af9e8f7 --- /dev/null +++ b/tests/template/texponential_eval.nim @@ -0,0 +1,47 @@ +# bug #1940 + +discard """ + nimout: '''=== +merge (A) with (B) +merge (A B) with (C) +merge (A B C) with (D) +merge (A B C D) with (E) +merge (A B C D E) with (F) +===''' +""" + +type SqlStmt = tuple + sql: string + parts: int + +proc sql(q: string): SqlStmt = + result.sql = q + result.parts = 1 + +template `&%%`(x, y: SqlStmt): SqlStmt = + const a = x + const b = y + + static: + #echo "some merge" + echo "merge (", a.sql, ") with (", b.sql, ")" + + + const newSql = a.sql & " " & b.sql + const newParts = a.parts + b.parts + + SqlStmt((sql: newSql, parts: newParts)) + +static: + echo "===" + +let c =(sql("A") &%% + sql("B")) &%% + sql("C") &%% + sql("D") &%% + sql("E") &%% + sql("F") +echo c.sql + +static: + echo "===" |