mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
follow up https://github.com/nim-lang/Nim/pull/22851 follow up https://github.com/nim-lang/Nim/pull/22873
42 lines
1.3 KiB
Nim
42 lines
1.3 KiB
Nim
#
|
|
#
|
|
# Nim's Runtime Library
|
|
# (c) Copyright 2019 Nim contributors
|
|
#
|
|
# See the file "copying.txt", included in this
|
|
# distribution, for details about the copyright.
|
|
#
|
|
|
|
## Unstable API.
|
|
|
|
when defined(hotcodereloading):
|
|
import
|
|
std/macros
|
|
|
|
template beforeCodeReload*(body: untyped) =
|
|
hcrAddEventHandler(true, proc = body) {.executeOnReload.}
|
|
|
|
template afterCodeReload*(body: untyped) =
|
|
hcrAddEventHandler(false, proc = body) {.executeOnReload.}
|
|
|
|
macro hasModuleChanged*(module: typed): untyped =
|
|
if module.kind != nnkSym or module.symKind != nskModule:
|
|
error "hasModuleChanged expects a module symbol", module
|
|
return newCall(bindSym"hcrHasModuleChanged", newLit(module.signatureHash))
|
|
|
|
proc hasAnyModuleChanged*(): bool = hcrReloadNeeded()
|
|
|
|
when not defined(js):
|
|
template performCodeReload* =
|
|
when isMainModule:
|
|
{.warning: "Code residing in the main module will not be changed from calling a code-reload".}
|
|
hcrPerformCodeReload()
|
|
else:
|
|
template performCodeReload* = discard
|
|
else:
|
|
template beforeCodeReload*(body: untyped) = discard
|
|
template afterCodeReload*(body: untyped) = discard
|
|
template hasModuleChanged*(module: typed): bool = false
|
|
proc hasAnyModuleChanged*(): bool = false
|
|
template performCodeReload*() = discard
|