diff options
author | Bung <crc32@qq.com> | 2022-10-13 08:44:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-12 20:44:45 -0400 |
commit | ea2f2775a7398c135408d8b7a444f8337f26ac89 (patch) | |
tree | 967142a5f558d60be96677f5b157be8f2ce7fb34 | |
parent | fa60378a7f992235efd766d656556a3e1e337008 (diff) | |
download | Nim-ea2f2775a7398c135408d8b7a444f8337f26ac89.tar.gz |
fix #18990 Regression in proc symbol resolution; Error: attempting to… (#20554)
fix #18990 Regression in proc symbol resolution; Error: attempting to call routine
-rw-r--r-- | compiler/semtypes.nim | 4 | ||||
-rw-r--r-- | tests/constr/a.nim | 2 | ||||
-rw-r--r-- | tests/constr/b.nim | 2 | ||||
-rw-r--r-- | tests/constr/t18990.nim | 3 |
4 files changed, 9 insertions, 2 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 60fc8e5c8..8b1abdd01 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -1298,7 +1298,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode, if hasDefault: def = a[^1] block determineType: - if genericParams.isGenericParams: + if genericParams != nil and genericParams.len > 0: def = semGenericStmt(c, def) if hasUnresolvedArgs(c, def): def.typ = makeTypeFromExpr(c, def.copyTree) @@ -1426,7 +1426,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode, result.flags.excl tfHasMeta result.n.typ = r - if genericParams.isGenericParams: + if genericParams != nil and genericParams.len > 0: for n in genericParams: if {sfUsed, sfAnon} * n.sym.flags == {}: result.flags.incl tfUnresolved diff --git a/tests/constr/a.nim b/tests/constr/a.nim new file mode 100644 index 000000000..03788fc57 --- /dev/null +++ b/tests/constr/a.nim @@ -0,0 +1,2 @@ +type A* = object + a: uint8 \ No newline at end of file diff --git a/tests/constr/b.nim b/tests/constr/b.nim new file mode 100644 index 000000000..437dd0550 --- /dev/null +++ b/tests/constr/b.nim @@ -0,0 +1,2 @@ +type B* = object +proc A*(a, b: float): B = discard \ No newline at end of file diff --git a/tests/constr/t18990.nim b/tests/constr/t18990.nim new file mode 100644 index 000000000..2f60f3c2c --- /dev/null +++ b/tests/constr/t18990.nim @@ -0,0 +1,3 @@ +import a, b +discard A(1f, 1f) # works +proc x(b = A(1f, 1f)) = discard # doesn't work \ No newline at end of file |