diff options
-rw-r--r-- | compiler/ast.nim | 3 | ||||
-rw-r--r-- | tests/statictypes/tstatictypes.nim | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/compiler/ast.nim b/compiler/ast.nim index 40fd40209..b57ee542d 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -1841,7 +1841,8 @@ proc isInfixAs*(n: PNode): bool = return n.kind == nkInfix and n[0].kind == nkIdent and n[0].ident.s == "as" proc findUnresolvedStatic*(n: PNode): PNode = - if n.kind == nkSym and n.typ.kind == tyStatic and n.typ.n == nil: + # n.typ == nil: see issue #14802 + if n.kind == nkSym and n.typ != nil and n.typ.kind == tyStatic and n.typ.n == nil: return n for son in n: diff --git a/tests/statictypes/tstatictypes.nim b/tests/statictypes/tstatictypes.nim index 1aab6e124..2a8d09dbf 100644 --- a/tests/statictypes/tstatictypes.nim +++ b/tests/statictypes/tstatictypes.nim @@ -216,3 +216,10 @@ block: # #12713 proc test(c: static string) = discard #Remove this and it compiles proc test(c: Cell) = discard test Cell() + +block: # issue #14802 + template fn(s: typed): untyped = + proc bar() = discard + 12 + const myConst = static(fn(1)) + doAssert myConst == 12 |