From c3a9ac4d352a84fb47da0a4d5fc6f963b651bbec Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Mon, 30 Jul 2018 10:51:14 +0200 Subject: Try conversion to static[T] in generic instantation (#8443) Fixes #8439 --- compiler/semcall.nim | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'compiler/semcall.nim') diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 67fe99232..aa5394a71 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -505,7 +505,15 @@ proc explicitGenericSym(c: PContext, n: PNode, s: PSym): PNode = for i in 1..sonsLen(n)-1: let formal = s.ast.sons[genericParamsPos].sons[i-1].typ - let arg = n[i].typ + var arg = n[i].typ + # try transforming the argument into a static one before feeding it into + # typeRel + if formal.kind == tyStatic and arg.kind != tyStatic: + let evaluated = c.semTryConstExpr(c, n[i]) + if evaluated != nil: + arg = newTypeS(tyStatic, c) + arg.sons = @[evaluated.typ] + arg.n = evaluated let tm = typeRel(m, formal, arg) if tm in {isNone, isConvertible}: return nil var newInst = generateInstance(c, s, m.bindings, n.info) -- cgit 1.4.1-2-gfad0