Ensure channels don't leak exception effects (#25318)

The forward declarations cause `Exception` to be inferred - also,
`llrecv` is an internal implementation detail and the type of the
received item is controlled by generics, thus the ValueError raised
there seems out of place for the generic api.

(cherry picked from commit 91febf1f4c)
This commit is contained in:
Jacek Sieka
2025-12-01 22:59:26 +01:00
committed by narimiran
parent 800384176e
commit 75f01bd49f
13 changed files with 64 additions and 45 deletions

View File

@@ -118,21 +118,21 @@ when not defined(js):
template `rawType=`(x: var Any, p: PNimType) =
x.rawTypePtr = cast[pointer](p)
proc genericAssign(dest, src: pointer, mt: PNimType) {.importCompilerProc.}
proc genericAssign(dest, src: pointer, mt: PNimType) {.importCompilerProc, raises: [].}
when not defined(gcDestructors):
proc genericShallowAssign(dest, src: pointer, mt: PNimType) {.importCompilerProc.}
proc incrSeq(seq: PGenSeq, elemSize, elemAlign: int): PGenSeq {.importCompilerProc.}
proc newObj(typ: PNimType, size: int): pointer {.importCompilerProc.}
proc newSeq(typ: PNimType, len: int): pointer {.importCompilerProc.}
proc objectInit(dest: pointer, typ: PNimType) {.importCompilerProc.}
proc genericShallowAssign(dest, src: pointer, mt: PNimType) {.importCompilerProc, raises: [].}
proc incrSeq(seq: PGenSeq, elemSize, elemAlign: int): PGenSeq {.importCompilerProc, raises: [].}
proc newObj(typ: PNimType, size: int): pointer {.importCompilerProc, raises: [].}
proc newSeq(typ: PNimType, len: int): pointer {.importCompilerProc, raises: [].}
proc objectInit(dest: pointer, typ: PNimType) {.importCompilerProc, raises: [].}
else:
proc nimNewObj(size, align: int): pointer {.importCompilerProc.}
proc newSeqPayload(cap, elemSize, elemAlign: int): pointer {.importCompilerProc.}
proc nimNewObj(size, align: int): pointer {.importCompilerProc, raises: [].}
proc newSeqPayload(cap, elemSize, elemAlign: int): pointer {.importCompilerProc, raises: [].}
proc prepareSeqAddUninit(len: int; p: pointer; addlen, elemSize, elemAlign: int): pointer {.
importCompilerProc.}
importCompilerProc, raises: [].}
proc zeroNewElements(len: int; p: pointer; addlen, elemSize, elemAlign: int) {.
importCompilerProc.}
importCompilerProc, raises: [].}
include system/ptrarith