This commit is contained in:
Araq 2012-01-29 02:13:53 +01:00
commit 23340695d0
3 changed files with 16 additions and 4 deletions

View file

@ -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))

View file

@ -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

View file

@ -0,0 +1,5 @@
import algorithm
proc foosort(ships: var seq[int]) = sort(ships, system.cmp[int])