diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-03-09 18:42:15 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-09 11:42:15 +0100 |
commit | 320311182c904cf4672457b8b02a60303856cb38 (patch) | |
tree | 7163d8fbfe737d7ca49a95cbd7c0ac25a44a2837 /tests/errmsgs | |
parent | f80a5a30b4a73efb3a7da162f57a259dd69e02c2 (diff) | |
download | Nim-320311182c904cf4672457b8b02a60303856cb38.tar.gz |
fixes #22284; fixes #22282; don't override original parameters of inferred lambdas (#23368)
fixes #22284 fixes #22282 ``` Error: j(uRef, proc (config: F; sources: auto) {.raises: [].} = discard ) can raise an unlisted exception: Exception ``` The problem is that `n.typ.n` contains the effectList which shouldn't appear in the parameter of a function defintion. We could not simply use `n.typ.n` as `n[paramsPos]`. The effect lists should be stripped away anyway.
Diffstat (limited to 'tests/errmsgs')
-rw-r--r-- | tests/errmsgs/t22284.nim | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/errmsgs/t22284.nim b/tests/errmsgs/t22284.nim new file mode 100644 index 000000000..827155e6b --- /dev/null +++ b/tests/errmsgs/t22284.nim @@ -0,0 +1,25 @@ +discard """ + errormsg: "j(uRef, proc (config: F; sources: auto) {.raises: [].} = discard ) can raise an unlisted exception: Exception" +""" + +import std/macros + +macro h(): untyped = + result = newTree(nnkStmtList) + result.add quote do: + new int + +type F = object + +proc j[SecondarySources]( + uRef: ref SecondarySources, + u: proc (config: F, sources: ref SecondarySources)): F = + u(result, uRef) + +template programMain(body: untyped) = + proc main {.raises: [].} = body # doesn't SIGSEGV without this {.raises: [].} + main() + +programMain: + var uRef = h() + discard j(uRef, u = proc(config: F, sources: auto) {.raises: [].} = discard) \ No newline at end of file |