diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2021-09-02 17:15:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-02 17:15:11 +0200 |
commit | a7cae2bda24871c55348173816a43144b9e668a5 (patch) | |
tree | 9c94f84b2c0c5fe7696a080086dcad3be6118647 | |
parent | 69cabaa81cf69593a8a42554fe70cce53ec8663d (diff) | |
download | Nim-a7cae2bda24871c55348173816a43144b9e668a5.tar.gz |
fixes #16325 [backport:1.4] (#18784)
-rw-r--r-- | compiler/sigmatch.nim | 3 | ||||
-rw-r--r-- | tests/overload/tproc_types_dont_like_subtypes.nim | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 465a9a51d..9cf18277f 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -595,8 +595,7 @@ proc procParamTypeRel(c: var TCandidate, f, a: PType): TTypeRelation = # if f is metatype. result = typeRel(c, f, a) - # v--- is this correct? - if result <= isIntConv or inconsistentVarTypes(f, a): + if result <= isSubrange or inconsistentVarTypes(f, a): result = isNone #if result == isEqual: diff --git a/tests/overload/tproc_types_dont_like_subtypes.nim b/tests/overload/tproc_types_dont_like_subtypes.nim new file mode 100644 index 000000000..d322f41be --- /dev/null +++ b/tests/overload/tproc_types_dont_like_subtypes.nim @@ -0,0 +1,20 @@ +discard """ + errormsg: "got <B, proc (b: B){.closure, gcsafe, locks: 0.}>" + line: 20 +""" + +type + A = ref object of RootObj + B = ref object of A + + P = proc (a: A) + +# bug #16325 + +proc doThings(a: A, p: P) = + p(a) + +var x = proc (b: B) {.closure.} = + echo "B" + +doThings(B(), x) |