semtypinst: don't wrap type nodes from expressions in static[T] (#18860)

This commit is contained in:
alaviss 2021-09-17 04:51:26 +00:00 • committed by GitHub
commit 6cd219c3a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View file

@ -548,7 +548,7 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType =
result = n.typ.skipTypes({tyTypeDesc}) result = n.typ.skipTypes({tyTypeDesc})
# result = n.typ.base # result = n.typ.base
else: else:
if n.typ.kind != tyStatic: if n.typ.kind != tyStatic and n.kind != nkType:
# XXX: In the future, semConstExpr should # XXX: In the future, semConstExpr should
# return tyStatic values to let anyone make # return tyStatic values to let anyone make
# use of this knowledge. The patching here # use of this knowledge. The patching here

17
tests/generics/t18859.nim Normal file
View file

@ -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]