diff options
author | Clyybber <darkmine956@gmail.com> | 2019-12-19 20:36:59 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-12-19 20:36:59 +0100 |
commit | 10bd7d8fa04f1382ff3074e30acf6ba507c9586c (patch) | |
tree | 0c1ccbbd2f60741d4fcc723419b0b0a40db127a5 | |
parent | e041c184d2cb630a7b4117158b3a72769f892225 (diff) | |
download | Nim-10bd7d8fa04f1382ff3074e30acf6ba507c9586c.tar.gz |
system.reset is no longer magic (#12937)
It has now means setting x to default for new and old runtime alike
-rw-r--r-- | lib/system.nim | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/system.nim b/lib/system.nim index 583161f85..559f5fb89 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -264,17 +264,6 @@ when not defined(gcDestructors): ## **Note**: The `finalizer` refers to the type `T`, not to the object! ## This means that for each object of type `T` the finalizer will be called! -when defined(nimV2): - proc reset*[T](obj: var T) {.magic: "Destroy", noSideEffect.} - ## Old runtime target: Resets an object `obj` to its initial (binary zero) value. - ## - ## New runtime target: An alias for `=destroy`. -else: - proc reset*[T](obj: var T) {.magic: "Reset", noSideEffect.} - ## Old runtime target: Resets an object `obj` to its initial (binary zero) value. - ## - ## New runtime target: An alias for `=destroy`. - proc wasMoved*[T](obj: var T) {.magic: "WasMoved", noSideEffect.} = ## Resets an object `obj` to its initial (binary zero) value to signify ## it was "moved" and to signify its destructor should do nothing and @@ -1825,6 +1814,15 @@ when defined(nimHasDefault): proc default*(T: typedesc): T {.magic: "Default", noSideEffect.} ## returns the default value of the type ``T``. + proc reset*[T](obj: var T) {.noSideEffect.} = + ## Resets an object `obj` to its default value. + obj = default(typeof(obj)) +else: + when defined(nimV2): + proc reset*[T](obj: var T) {.magic: "Destroy", noSideEffect.} + else: + proc reset*[T](obj: var T) {.magic: "Reset", noSideEffect.} + proc setLen*[T](s: var seq[T], newlen: Natural) {. magic: "SetLengthSeq", noSideEffect.} ## Sets the length of seq `s` to `newlen`. ``T`` may be any sequence type. |