fixes #89
This commit is contained in:
parent
1a2ccd6a23
commit
23340695d0
3 changed files with 16 additions and 4 deletions
|
|
@ -83,7 +83,10 @@ proc openArrayLoc(p: BProc, n: PNode): PRope =
|
||||||
of tyOpenArray:
|
of tyOpenArray:
|
||||||
result = ropef("$1, $1Len0", [rdLoc(a)])
|
result = ropef("$1, $1Len0", [rdLoc(a)])
|
||||||
of tyString, tySequence:
|
of tyString, tySequence:
|
||||||
result = ropef("$1->data, $1->$2", [a.rdLoc, lenField()])
|
if skipTypes(n.typ, abstractInst).kind == tyVar:
|
||||||
|
result = ropef("(*$1)->data, (*$1)->$2", [a.rdLoc, lenField()])
|
||||||
|
else:
|
||||||
|
result = ropef("$1->data, $1->$2", [a.rdLoc, lenField()])
|
||||||
of tyArray, tyArrayConstr:
|
of tyArray, tyArrayConstr:
|
||||||
result = ropef("$1, $2", [rdLoc(a), toRope(lengthOrd(a.t))])
|
result = ropef("$1, $2", [rdLoc(a), toRope(lengthOrd(a.t))])
|
||||||
else: InternalError("openArrayLoc: " & typeToString(a.t))
|
else: InternalError("openArrayLoc: " & typeToString(a.t))
|
||||||
|
|
|
||||||
|
|
@ -603,8 +603,11 @@ proc genericHashAux(dest: Pointer, mt: PNimType, shallow: bool,
|
||||||
result = h
|
result = h
|
||||||
if x != nil:
|
if x != nil:
|
||||||
let s = cast[NimString](x)
|
let s = cast[NimString](x)
|
||||||
let y = cast[pointer](cast[int](x) -% 2*sizeof(int))
|
when true:
|
||||||
result = result !& hash(x, s.len + 2*sizeof(int))
|
result = result !& hash(x, s.len)
|
||||||
|
else:
|
||||||
|
let y = cast[pointer](cast[int](x) -% 2*sizeof(int))
|
||||||
|
result = result !& hash(y, s.len + 2*sizeof(int))
|
||||||
of tySequence:
|
of tySequence:
|
||||||
var x = cast[ppointer](dest)
|
var x = cast[ppointer](dest)
|
||||||
var dst = cast[taddress](cast[ppointer](dest)[])
|
var dst = cast[taddress](cast[ppointer](dest)[])
|
||||||
|
|
@ -627,8 +630,9 @@ proc genericHashAux(dest: Pointer, mt: PNimType, shallow: bool,
|
||||||
if shallow:
|
if shallow:
|
||||||
result = h !& hash(dest, mt.size)
|
result = h !& hash(dest, mt.size)
|
||||||
else:
|
else:
|
||||||
|
result = h
|
||||||
var s = cast[ppointer](dest)[]
|
var s = cast[ppointer](dest)[]
|
||||||
if s != nil: result = genericHashAux(s, mt.base, shallow, h)
|
if s != nil: result = genericHashAux(s, mt.base, shallow, result)
|
||||||
else:
|
else:
|
||||||
result = h !& hash(dest, mt.size) # hash raw bits
|
result = h !& hash(dest, mt.size) # hash raw bits
|
||||||
|
|
||||||
|
|
|
||||||
5
tests/compile/tsortcall.nim
Normal file
5
tests/compile/tsortcall.nim
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import algorithm
|
||||||
|
|
||||||
|
proc foosort(ships: var seq[int]) = sort(ships, system.cmp[int])
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue