summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/core/macros.nim8
-rw-r--r--tests/macros/t7723.nim19
2 files changed, 22 insertions, 5 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 5e4b9d8c9..971c00012 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -1275,7 +1275,7 @@ proc boolVal*(n: NimNode): bool {.compileTime, noSideEffect.} =
   if n.kind == nnkIntLit: n.intVal != 0
   else: n == bindSym"true" # hacky solution for now
 
-macro expandMacros*(body: typed): untyped =
+macro expandMacros*(body: typed): typed =
   ## Expands one level of macro - useful for debugging.
   ## Can be used to inspect what happens when a macro call is expanded,
   ## without altering its result.
@@ -1294,10 +1294,8 @@ macro expandMacros*(body: typed): untyped =
   ## will actually dump `x + y`, but at the same time will print at
   ## compile time the expansion of the ``dump`` macro, which in this
   ## case is ``debugEcho ["x + y", " = ", x + y]``.
-  template inner(x: untyped): untyped = x
-
-  result = getAst(inner(body))
-  echo result.toStrLit
+  echo body.toStrLit
+  result = body
 
 proc customPragmaNode(n: NimNode): NimNode =
   expectKind(n, {nnkSym, nnkDotExpr, nnkBracketExpr, nnkTypeOfExpr, nnkCheckedFieldExpr})
diff --git a/tests/macros/t7723.nim b/tests/macros/t7723.nim
new file mode 100644
index 000000000..e1d0a8a8d
--- /dev/null
+++ b/tests/macros/t7723.nim
@@ -0,0 +1,19 @@
+discard """
+  msg: '''
+proc init(foo128049: int; bar128051: typedesc[int]): int =
+  foo128049
+'''
+"""
+
+import macros
+
+macro foo1(): untyped =
+  result = newStmtList()
+  result.add quote do:
+    proc init(foo: int, bar: typedesc[int]): int =
+      foo
+
+expandMacros:
+  foo1()
+
+doAssert init(1, int) == 1