mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-03 02:18:00 +00:00
createDir is now callable at compile time (#20824)
This commit is contained in:
@@ -26,7 +26,7 @@ when declared(math.signbit):
|
||||
from std/envvars import getEnv, existsEnv, delEnv, putEnv, envPairs
|
||||
from std/os import getAppFilename
|
||||
from std/private/oscommon import dirExists, fileExists
|
||||
from std/private/osdirs import walkDir
|
||||
from std/private/osdirs import walkDir, createDir
|
||||
|
||||
from std/times import cpuTime
|
||||
from std/hashes import hash
|
||||
@@ -49,6 +49,10 @@ template osop(op) {.dirty.} =
|
||||
|
||||
template oscommonop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.oscommon." & astToStr(op), `op Wrapper`)
|
||||
|
||||
template osdirsop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.osdirs." & astToStr(op), `op Wrapper`)
|
||||
|
||||
template envvarsop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.envvars." & astToStr(op), `op Wrapper`)
|
||||
|
||||
@@ -105,7 +109,17 @@ template wrap2svoid(op, modop) {.dirty.} =
|
||||
op(getString(a, 0), getString(a, 1))
|
||||
modop op
|
||||
|
||||
template wrapDangerous(op, modop) {.dirty.} =
|
||||
template wrapDangerous1svoid(op, modop) {.dirty.} =
|
||||
if vmopsDanger notin c.config.features and (defined(nimsuggest) or c.config.cmd == cmdCheck):
|
||||
proc `op Wrapper`(a: VmArgs) {.nimcall.} =
|
||||
discard
|
||||
modop op
|
||||
else:
|
||||
proc `op Wrapper`(a: VmArgs) {.nimcall.} =
|
||||
op(getString(a, 0))
|
||||
modop op
|
||||
|
||||
template wrapDangerous2svoid(op, modop) {.dirty.} =
|
||||
if vmopsDanger notin c.config.features and (defined(nimsuggest) or c.config.cmd == cmdCheck):
|
||||
proc `op Wrapper`(a: VmArgs) {.nimcall.} =
|
||||
discard
|
||||
@@ -233,7 +247,8 @@ proc registerAdditionalOps*(c: PCtx) =
|
||||
wrap1svoid(delEnv, envvarsop)
|
||||
wrap1s(dirExists, oscommonop)
|
||||
wrap1s(fileExists, oscommonop)
|
||||
wrapDangerous(writeFile, ioop)
|
||||
wrapDangerous2svoid(writeFile, ioop)
|
||||
wrapDangerous1svoid(createDir, osdirsop)
|
||||
wrap1s(readFile, ioop)
|
||||
wrap2si(readLines, ioop)
|
||||
systemop getCurrentExceptionMsg
|
||||
|
||||
Reference in New Issue
Block a user