Utilities related to import and symbol resolution.
Experimental API, subject to change.
Procs
proc privateAccess(t: typedesc) {.magic: "PrivateAccess", ...raises: [], tags: [],
forbids: [].}
Enables access to private fields of t in current scope.
Example: cmd: -d:nimImportutilsExample
# here we're importing a module containing:
# type
# Foo = object
# f0: int # private
# Goo*[T] = object
# g0: int # private
# proc initFoo*(): auto = Foo()
var f = initFoo()
block:
assert not compiles(f.f0)
privateAccess(f.type)
f.f0 = 1 # accessible in this scope
block:
assert f.f0 == 1 # still in scope
assert not compiles(f.f0)
# this also works with generics
privateAccess(Goo)
assert Goo[float](g0: 1).g0 == 1