mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-10 15:04:59 +00:00
fixes #9403
This commit is contained in:
@@ -1912,7 +1912,7 @@ proc genOrd(p: BProc, e: PNode, d: var TLoc) =
|
||||
|
||||
proc genSomeCast(p: BProc, e: PNode, d: var TLoc) =
|
||||
const
|
||||
ValueTypes = {tyTuple, tyObject, tyArray, tyOpenArray, tyVarargs}
|
||||
ValueTypes = {tyTuple, tyObject, tyArray, tyOpenArray, tyVarargs, tyUncheckedArray}
|
||||
# we use whatever C gives us. Except if we have a value-type, we need to go
|
||||
# through its address:
|
||||
var a: TLoc
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
discard """
|
||||
output: '''12'''
|
||||
output: '''12
|
||||
4'''
|
||||
"""
|
||||
|
||||
{.emit: """
|
||||
@@ -26,3 +27,21 @@ p(@[1])
|
||||
q(@[1])
|
||||
|
||||
main()
|
||||
|
||||
# bug #9403
|
||||
|
||||
type
|
||||
MyObj = ref object
|
||||
len: int
|
||||
val: UncheckedArray[uint64]
|
||||
|
||||
proc spot(x: MyObj): int64 =
|
||||
result = cast[UncheckedArray[int64]](x.val)[0]
|
||||
|
||||
proc newMyObj(len: int): MyObj =
|
||||
unsafeNew(result, sizeof(result[]) + len * sizeof(uint64))
|
||||
result.len = len
|
||||
result.val[0] = 4u64
|
||||
result.val[1] = 8u64
|
||||
|
||||
echo spot(newMyObj(2))
|
||||
|
||||
Reference in New Issue
Block a user