diff options
author | alaviss <leorize+oss@disroot.org> | 2021-09-17 04:51:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-17 06:51:26 +0200 |
commit | 6cd219c3a38c5f1a0712b0b5d07a3ea4ab02ff74 (patch) | |
tree | 89dada4d28a47b0853d758836e68812abdd43546 | |
parent | f8e185fec0d8f9caddc196a713fba196b14f8b6b (diff) | |
download | Nim-6cd219c3a38c5f1a0712b0b5d07a3ea4ab02ff74.tar.gz |
semtypinst: don't wrap type nodes from expressions in static[T] (#18860)
-rw-r--r-- | compiler/semtypinst.nim | 2 | ||||
-rw-r--r-- | tests/generics/t18859.nim | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim index cb1ead027..2ca355e7d 100644 --- a/compiler/semtypinst.nim +++ b/compiler/semtypinst.nim @@ -548,7 +548,7 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType = result = n.typ.skipTypes({tyTypeDesc}) # result = n.typ.base else: - if n.typ.kind != tyStatic: + if n.typ.kind != tyStatic and n.kind != nkType: # XXX: In the future, semConstExpr should # return tyStatic values to let anyone make # use of this knowledge. The patching here diff --git a/tests/generics/t18859.nim b/tests/generics/t18859.nim new file mode 100644 index 000000000..ca6c3d10b --- /dev/null +++ b/tests/generics/t18859.nim @@ -0,0 +1,17 @@ +import macros + +macro symFromDesc(T: typedesc): untyped = + let typ = getType(T) + typ[1] + +template produceType(T: typedesc): untyped = + type + XT = object + x: symFromDesc(T) + + XT + +type + X[T] = produceType(T) + +var x: X[int] |