summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/vmdeps.nim11
-rw-r--r--tests/macros/t9194.nim20
2 files changed, 29 insertions, 2 deletions
diff --git a/compiler/vmdeps.nim b/compiler/vmdeps.nim
index eb6111165..52e4aab74 100644
--- a/compiler/vmdeps.nim
+++ b/compiler/vmdeps.nim
@@ -237,8 +237,15 @@ proc mapTypeToAstX(cache: IdentCache; t: PType; info: TLineInfo;
   of tyRange:
     result = newNodeIT(nkBracketExpr, if t.n.isNil: info else: t.n.info, t)
     result.add atomicType("range", mRange)
-    result.add t.n.sons[0].copyTree
-    result.add t.n.sons[1].copyTree
+    if inst:
+      let rng = newNodeX(nkInfix)
+      rng.add newIdentNode(getIdent(cache, ".."), info)
+      rng.add t.n.sons[0].copyTree
+      rng.add t.n.sons[1].copyTree
+      result.add rng
+    else:
+      result.add t.n.sons[0].copyTree
+      result.add t.n.sons[1].copyTree
   of tyPointer: result = atomicType("pointer", mPointer)
   of tyString: result = atomicType("string", mString)
   of tyCString: result = atomicType("cstring", mCString)
diff --git a/tests/macros/t9194.nim b/tests/macros/t9194.nim
new file mode 100644
index 000000000..ef58750aa
--- /dev/null
+++ b/tests/macros/t9194.nim
@@ -0,0 +1,20 @@
+discard """
+  output: '''
+range[0 .. 100]
+array[0 .. 100, int]
+'''
+"""
+
+import macros
+
+type
+  Foo1 = range[0 .. 100]
+  Foo2 = array[0 .. 100, int]
+
+macro get(T: typedesc): untyped =
+  # Get the X out of typedesc[X]
+  let tmp = getTypeImpl(T)
+  result = newStrLitNode(getTypeImpl(tmp[1]).repr)
+
+echo Foo1.get
+echo Foo2.get