mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-10 15:04:59 +00:00
fixes #106
This commit is contained in:
@@ -223,7 +223,7 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
|
||||
# little HACK to support the new 'var T' as return type:
|
||||
lineCg(p, cpsStmts, "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
|
||||
return
|
||||
var ty = skipTypes(dest.t, abstractVarRange)
|
||||
var ty = skipTypes(dest.t, abstractRange)
|
||||
case ty.kind
|
||||
of tyRef:
|
||||
genRefAssign(p, dest, src, flags)
|
||||
@@ -282,7 +282,7 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
|
||||
else:
|
||||
lineCg(p, cpsStmts, "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
|
||||
of tyPtr, tyPointer, tyChar, tyBool, tyEnum, tyCString,
|
||||
tyInt..tyUInt64, tyRange:
|
||||
tyInt..tyUInt64, tyRange, tyVar:
|
||||
lineCg(p, cpsStmts, "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
|
||||
else: InternalError("genAssignment(" & $ty.kind & ')')
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ proc resetLoc(p: BProc, loc: var TLoc) =
|
||||
genObjectInit(p, cpsStmts, loc.t, loc, true)
|
||||
|
||||
proc constructLoc(p: BProc, loc: TLoc, section = cpsStmts) =
|
||||
if not isComplexValueType(skipTypes(loc.t, abstractVarRange)):
|
||||
if not isComplexValueType(skipTypes(loc.t, abstractRange)):
|
||||
lineF(p, section, "$1 = 0;$n", [rdLoc(loc)])
|
||||
else:
|
||||
lineF(p, section, "memset((void*)$1, 0, sizeof($2));$n",
|
||||
|
||||
@@ -1,24 +1,36 @@
|
||||
discard """
|
||||
file: "tarray2.nim"
|
||||
output: "[16, 25, 36]"
|
||||
output: "[4, 5, 6]\n\n[16, 25, 36]\n\n[16, 25, 36]"
|
||||
"""
|
||||
# simple check for one dimensional arrays
|
||||
|
||||
type
|
||||
TMyArray = array[0..2, int]
|
||||
|
||||
proc mul(a, b: TMyarray): TMyArray =
|
||||
# simple check for one dimensional arrays
|
||||
|
||||
type
|
||||
TMyArray = array[0..2, int]
|
||||
|
||||
TObj = object
|
||||
arr: TMyarray
|
||||
|
||||
proc mul(a, b: TMyarray): TMyArray =
|
||||
result = a
|
||||
for i in 0..len(a)-1:
|
||||
result[i] = a[i] * b[i]
|
||||
|
||||
var
|
||||
x, y, z: TMyArray
|
||||
|
||||
x, y: TMyArray
|
||||
o: TObj
|
||||
|
||||
proc varArr1(x: var TMyArray): var TMyArray = x
|
||||
proc varArr2(x: var TObj): var TMyArray = x.arr
|
||||
|
||||
x = [ 4, 5, 6 ]
|
||||
echo repr(varArr1(x))
|
||||
|
||||
y = x
|
||||
echo repr(mul(x, y))
|
||||
|
||||
#OUT [16, 25, 36]
|
||||
o.arr = mul(x, y)
|
||||
echo repr(varArr2(o))
|
||||
|
||||
#OUT [16, 25, 36]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user