diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-08-02 11:05:47 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-08-02 11:05:47 +0200 |
commit | 6fea1a7bb6febed1d1aaf63dfbac1a8ec0072204 (patch) | |
tree | 49f10b6a35ee2fb3d8c8f2f0a4895f3cf5e270e7 | |
parent | 1b4116702b411c82ccec4b558768689b2a1a0964 (diff) | |
parent | 373717968eeb851e30a300923aa62e4c2aec519d (diff) | |
download | Nim-6fea1a7bb6febed1d1aaf63dfbac1a8ec0072204.tar.gz |
Merge pull request #2699 from SSPkrolik/newrefref
new now able to make distinction between ref and non-ref types, so we…
-rw-r--r-- | lib/system.nim | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/system.nim b/lib/system.nim index 260d7fbcd..dd1a0721a 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -176,10 +176,16 @@ proc new*[T](a: var ref T) {.magic: "New", noSideEffect.} ## creates a new object of type ``T`` and returns a safe (traced) ## reference to it in ``a``. -proc new*(T: typedesc): ref T = +proc new*(T: typedesc): auto = ## creates a new object of type ``T`` and returns a safe (traced) ## reference to it as result value - new(result) + when (T is ref): + var r: T + else: + var r: ref T + new(r) + return r + proc internalNew*[T](a: var ref T) {.magic: "New", noSideEffect.} ## leaked implementation detail. Do not use. |