Adapt gcsafe pragma for RequestBroker sync requests and provider signatures as requirement

This commit is contained in:
NagyZoltanPeter 2025-12-15 14:19:20 +01:00
parent a308e83959
commit 130ebd7509
No known key found for this signature in database
GPG Key ID: 3E1F97CF4A7B6F42

View File

@ -212,7 +212,7 @@ proc makeProcType(
let raisesPragma = newTree(
nnkExprColonExpr, ident("raises"), newTree(nnkBracket, ident("CatchableError"))
)
let pragmas = newTree(nnkPragma, raisesPragma)
let pragmas = newTree(nnkPragma, raisesPragma, ident("gcsafe"))
newTree(nnkProcTy, formal, pragmas)
proc parseMode(modeNode: NimNode): RequestBrokerMode =
@ -499,7 +499,7 @@ proc generateRequestBroker(body: NimNode, mode: RequestBrokerMode): NimNode =
quote do:
proc request*(
_: typedesc[`typeIdent`]
): Result[`typeIdent`, string] {.raises: [].} =
): Result[`typeIdent`, string] {.gcsafe, raises: [].} =
let provider = `accessProcIdent`().`zeroArgFieldName`
if provider.isNil():
return err(
@ -564,7 +564,7 @@ proc generateRequestBroker(body: NimNode, mode: RequestBrokerMode): NimNode =
{.async: (raises: []), gcsafe.}
of rbSync:
quote:
{.raises: [].}
{.gcsafe, raises: [].}
var providerCall = newCall(providerSym)
for argName in argNameIdents:
providerCall.add(argName)