summary refs log tree commit diff stats
path: root/tests/template
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-03-07 02:30:51 +0100
committerAraq <rumpf_a@web.de>2015-03-07 15:43:36 +0100
commitd58212ccc5b51f8f0714d2dfa0624e2df9904b9b (patch)
treec6bad1fad00f437a08b9787f9a1b26ae91421d36 /tests/template
parentc914532c26f08cbd3e74d5aaee80a1232656669c (diff)
downloadNim-d58212ccc5b51f8f0714d2dfa0624e2df9904b9b.tar.gz
fixes #1940; code breakage! stricter template evaluation
Diffstat (limited to 'tests/template')
-rw-r--r--tests/template/texponential_eval.nim47
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 "==="