refactor envvars, oserrors; register vmops (#20592)

* refactor envvars, oserrors; register vmops

* remove type definitions
This commit is contained in:
ringabout 2022-10-19 01:44:26 +08:00 • committed by GitHub
commit b07526b2c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 347 deletions

View file

@ -22,8 +22,8 @@ when declared(math.signbit):
# ditto
from std/math as math3 import signbit
from std/os import getEnv, existsEnv, delEnv, putEnv, envPairs,
dirExists, fileExists, walkDir, getAppFilename, raiseOSError, osLastError
from std/envvars import getEnv, existsEnv, delEnv, putEnv, envPairs
from std/os import dirExists, fileExists, walkDir, getAppFilename
from std/times import cpuTime
from std/hashes import hash
@ -44,6 +44,9 @@ template mathop(op) {.dirty.} =
template osop(op) {.dirty.} =
registerCallback(c, "stdlib.os." & astToStr(op), `op Wrapper`)
template envvarsop(op) {.dirty.} =
registerCallback(c, "stdlib.envvars." & astToStr(op), `op Wrapper`)
template timesop(op) {.dirty.} =
registerCallback(c, "stdlib.times." & astToStr(op), `op Wrapper`)
@ -219,10 +222,10 @@ proc registerAdditionalOps*(c: PCtx) =
registerCallback(c, "stdlib.math.mod", `mod Wrapper`)
when defined(nimcore):
wrap2s(getEnv, osop)
wrap1s(existsEnv, osop)
wrap2svoid(putEnv, osop)
wrap1svoid(delEnv, osop)
wrap2s(getEnv, envvarsop)
wrap1s(existsEnv, envvarsop)
wrap2svoid(putEnv, envvarsop)
wrap1svoid(delEnv, envvarsop)
wrap1s(dirExists, osop)
wrap1s(fileExists, osop)
wrapDangerous(writeFile, ioop)
@ -350,7 +353,7 @@ proc registerAdditionalOps*(c: PCtx) =
let x = a.getFloat(1)
addFloatSprintf(p.strVal, x)
wrapIterator("stdlib.os.envPairsImplSeq"): envPairs()
wrapIterator("stdlib.envvars.envPairsImplSeq"): envPairs()
registerCallback c, "stdlib.marshal.toVM", proc(a: VmArgs) =
let typ = a.getNode(0).typ