summary refs log tree commit diff stats
path: root/tests/macros/tquotedo.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/macros/tquotedo.nim')
-rw-r--r--tests/macros/tquotedo.nim51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/macros/tquotedo.nim b/tests/macros/tquotedo.nim
new file mode 100644
index 000000000..6acb8ef4e
--- /dev/null
+++ b/tests/macros/tquotedo.nim
@@ -0,0 +1,51 @@
+discard """
+output: '''
+123
+Hallo Welt
+Hallo Welt
+1
+()
+'''
+"""
+
+import macros
+
+macro mac(): untyped =
+  quote do:
+    proc test(): int =
+      (proc(): int = result = 123)()
+
+mac()
+echo test()
+
+macro foobar(arg: untyped): untyped =
+  result = arg
+  result.add quote do:
+    `result`
+
+foobar:
+  echo "Hallo Welt"
+
+# bug #3744
+import macros
+macro t(): untyped =
+  return quote do:
+    proc tp(): int =
+      result = 1
+t()
+
+echo tp()
+
+
+# https://github.com/nim-lang/Nim/issues/9866
+type
+  # Foo = int # works
+  Foo = object # fails
+
+macro dispatchGen(): untyped =
+  var shOpt: Foo
+  result = quote do:
+    let baz = `shOpt`
+    echo `shOpt`
+
+dispatchGen()