fixes another effect inference bug [backport:1.6] (#19100)

* fixes another effect inference bug [backport:1.6]
This commit is contained in:
Andreas Rumpf 2021-11-07 16:38:02 +01:00 • committed by GitHub
commit fce89cb60a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 85 additions and 11 deletions

View file

@ -733,7 +733,7 @@ when defined(windows) or defined(nimdoc):
proc acceptAddr*(socket: AsyncFD, flags = {SocketFlag.SafeDisconn},
inheritable = defined(nimInheritHandles)):
owned(Future[tuple[address: string, client: AsyncFD]]) =
owned(Future[tuple[address: string, client: AsyncFD]]) {.gcsafe.} =
## Accepts a new connection. Returns a future containing the client socket
## corresponding to that connection and the remote address of the client.
## The future will complete when the connection is successfully accepted.
@ -800,7 +800,7 @@ when defined(windows) or defined(nimdoc):
var ol = newCustom()
ol.data = CompletionData(fd: socket, cb:
proc (fd: AsyncFD, bytesCount: DWORD, errcode: OSErrorCode) =
proc (fd: AsyncFD, bytesCount: DWORD, errcode: OSErrorCode) {.gcsafe.} =
if not retFuture.finished:
if errcode == OSErrorCode(-1):
completeAccept()

View file

@ -437,7 +437,7 @@ macro `%*`*(x: untyped): untyped =
## `%` for every element.
result = toJsonImpl(x)
proc `==`*(a, b: JsonNode): bool =
proc `==`*(a, b: JsonNode): bool {.noSideEffect.} =
## Check two nodes for equality
if a.isNil:
if b.isNil: return true
@ -464,12 +464,16 @@ proc `==`*(a, b: JsonNode): bool =
if a.fields.len != b.fields.len: return false
for key, val in a.fields:
if not b.fields.hasKey(key): return false
if b.fields[key] != val: return false
when defined(nimHasEffectsOf):
{.noSideEffect.}:
if b.fields[key] != val: return false
else:
if b.fields[key] != val: return false
result = true
proc hash*(n: OrderedTable[string, JsonNode]): Hash {.noSideEffect.}
proc hash*(n: JsonNode): Hash =
proc hash*(n: JsonNode): Hash {.noSideEffect.} =
## Compute the hash for a JSON node
case n.kind
of JArray: