diff options
-rw-r--r-- | compiler/semmagic.nim | 5 | ||||
-rw-r--r-- | tests/objects/tunsafenew.nim | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim index 9e484e214..751ca8fe7 100644 --- a/compiler/semmagic.nim +++ b/compiler/semmagic.nim @@ -586,7 +586,10 @@ proc magicsAfterOverloadResolution(c: PContext, n: PNode, else: result = plugin(c, n) of mNew: - result = addDefaultFieldForNew(c, n) + if n[0].sym.name.s == "unsafeNew": # special case for unsafeNew + result = n + else: + result = addDefaultFieldForNew(c, n) of mNewFinalize: result = semNewFinalize(c, n) of mDestroy: diff --git a/tests/objects/tunsafenew.nim b/tests/objects/tunsafenew.nim new file mode 100644 index 000000000..6c1b33cd9 --- /dev/null +++ b/tests/objects/tunsafenew.nim @@ -0,0 +1,10 @@ +discard """ + errormsg: "conversion from int literal(-1) to Natural is invalid" +""" + +type + Obj = object + case b: bool + else: discard +var o: ref Obj +unsafeNew(o, -1) \ No newline at end of file |