Fix type inference with static literals.

Fixes #3977
This commit is contained in:
LemonBoy
2017-04-21 22:28:34 +02:00
committed by zah
parent ae342f84de
commit 03653ab61e
2 changed files with 13 additions and 1 deletions

View File

@@ -498,7 +498,7 @@ proc semVarOrLet(c: PContext, n: PNode, symkind: TSymKind): PNode =
def = fitNode(c, typ, def, def.info)
#changeType(def.skipConv, typ, check=true)
else:
typ = skipIntLit(def.typ)
typ = def.typ.skipTypes({tyStatic}).skipIntLit
if typ.kind in tyUserTypeClasses and typ.isResolvedUserTypeClass:
typ = typ.lastSon
if hasEmpty(typ):

12
tests/generics/t3977.nim Normal file
View File

@@ -0,0 +1,12 @@
discard """
output: '''42'''
"""
type
Foo[N: static[int]] = object
proc foo[N](x: Foo[N]) =
echo N
var f1: Foo[42]
f1.foo