From 17d67ab82827d10203646066d4d203d1da26a75a Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 16 Apr 2012 16:31:15 +0200 Subject: [PATCH] fixes #105 --- compiler/ccgtypes.nim | 6 ++- icons/koch_icon.o | Bin 5768 -> 0 bytes icons/nimrod_icon.o | Bin 30830 -> 0 bytes tests/compile/tsortdev.nim | 81 ------------------------------------- tests/run/tsortdev.nim | 59 +++++++++++++++++++++++++++ tests/testdata/string | 1 - todo.txt | 1 - 7 files changed, 63 insertions(+), 85 deletions(-) delete mode 100644 icons/koch_icon.o delete mode 100644 icons/nimrod_icon.o delete mode 100755 tests/compile/tsortdev.nim create mode 100755 tests/run/tsortdev.nim delete mode 100644 tests/testdata/string diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index 3578b1f5ec..a7ad44db6c 100755 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -269,7 +269,9 @@ proc genProcParams(m: BModule, t: PType, rettype, params: var PRope, var arr = param.typ if arr.kind == tyVar: arr = arr.sons[0] var j = 0 - while arr.Kind == tyOpenArray: + while arr.Kind == tyOpenArray: + # this fixes the 'sort' bug: + if param.typ.kind == tyVar: param.loc.s = OnUnknown # need to pass hidden parameter: appff(params, ", NI $1Len$2", ", @NI $1Len$2", [param.loc.r, j.toRope]) inc(j) @@ -288,7 +290,7 @@ proc genProcParams(m: BModule, t: PType, rettype, params: var PRope, if tfVarargs in t.flags: if params != nil: app(params, ", ") app(params, "...") - if (params == nil) and (gCmd != cmdCompileToLLVM): app(params, "void)") + if params == nil and gCmd != cmdCompileToLLVM: app(params, "void)") else: app(params, ")") params = con("(", params) diff --git a/icons/koch_icon.o b/icons/koch_icon.o deleted file mode 100644 index b780f4d88f310028a4837b9b5d6e16868df635e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5768 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 WbSo|>oR}Gq?+^xQW(M8+$^Za3WF`s# diff --git a/tests/compile/tsortdev.nim b/tests/compile/tsortdev.nim deleted file mode 100755 index 1b7705d812..0000000000 --- a/tests/compile/tsortdev.nim +++ /dev/null @@ -1,81 +0,0 @@ -discard """ - disabled: false -""" - -import math, algorithm - -proc sorted[T](a: openArray[T], order: TSortOrder): bool = - result = true - for i in 0 .. < a.high: - if cmp(a[i], a[i+1]) * order > 0: - echo "Out of order: ", a[i], " ", a[i+1] - result = false - -proc bubbleSort[T](a: var openArray[T], - cmp: proc (x, y: T): int, - order = TSortOrder.Ascending) = - while true: - var sorted = true - for i in 0 .. a.len-2: - if cmp(a[i], a[i+1]) * order > 0: - swap(a[i], a[i+1]) - sorted = false - if sorted: break - -when isMainModule: - proc main() = - const order = Ascending - var data: seq[string] = @[] - - var L = random(59) - for i in 0..2: - #echo "loop: ", i - #newSeq(data, L) - setLen(data, L) - for j in 0 .. L-1: - data[j] = $(math.random(90) - 10) - assert getRefcount(data[j]) == 1 - {.watchpoint: data.} - var copy = data - for j in 0 .. L-1: - assert getRefcount(copy[j]) == 1 - assert(cast[pointer](copy[j]) != cast[pointer](data[j])) - - bubblesort(data, system.cmp, order) - if not sorted(data, order): - quit "bubblesort failed" - - sort(copy, cmp, order) - for j in 0 .. L-1: - let rc = getRefcount(data[j]) - if rc != 1: - echo "RC IST ", rc, " j: ", j - assert getRefcount(data[j]) == 1 - when false: - if copy.len != data.len: - quit "lengths differ!" - for i in 0 .. copy.high: - if copy[i] != data[i]: - quit "algorithms differ!" - when false: - for i in 0..10_000: - var data: seq[int] - var L = random(59) - newSeq(data, L) - for j in 0 .. L-1: - data[j] = (math.random(90) - 10) - var copy = data - sort(data, cmp[int], order) - if not sorted(data, order): - quit "sort for seq[int] failed" - bubblesort(copy, system.cmp[int], order) - if copy.len != data.len: - quit "lengths differ!" - for i in 0 .. copy.high: - if copy[i] != data[i]: - quit "algorithms differ!" - - main() - -echo "done" - diff --git a/tests/run/tsortdev.nim b/tests/run/tsortdev.nim new file mode 100755 index 0000000000..d7d42d22c8 --- /dev/null +++ b/tests/run/tsortdev.nim @@ -0,0 +1,59 @@ +discard """ + output: "done" +""" + +import algorithm, strutils + +proc cmpPlatforms(a, b: string): int = + if a == b: return 0 + var dashes = a.split('-') + var dashes2 = b.split('-') + if dashes[0] == dashes2[0]: + if dashes[1] == dashes2[1]: return system.cmp(a,b) + case dashes[1] + of "x86": + return 1 + of "x86_64": + if dashes2[1] == "x86": return -1 + else: return 1 + of "ppc64": + if dashes2[1] == "x86" or dashes2[1] == "x86_64": return -1 + else: return 1 + else: + return system.cmp(dashes[1], dashes2[1]) + else: + case dashes[0] + of "linux": + return 1 + of "windows": + if dashes2[0] == "linux": return -1 + else: return 1 + of "macosx": + if dashes2[0] == "linux" or dashes2[0] == "windows": return -1 + else: return 1 + else: + if dashes2[0] == "linux" or dashes2[0] == "windows" or + dashes2[0] == "macosx": return -1 + else: + return system.cmp(a, b) + +proc sorted[T](a: openArray[T]): bool = + result = true + for i in 0 .. < a.high: + if cmpPlatforms(a[i], a[i+1]) > 0: + echo "Out of order: ", a[i], " ", a[i+1] + result = false + +proc main() = + var testData = @["netbsd-x86_64", "windows-x86", "linux-x86_64", "linux-x86", + "linux-ppc64", "macosx-x86-1058", "macosx-x86-1068"] + + sort(testData, cmpPlatforms) + + doAssert sorted(testData) + +for i in 0..1_000: + main() + +echo "done" + diff --git a/tests/testdata/string b/tests/testdata/string deleted file mode 100644 index 41bfe81b82..0000000000 --- a/tests/testdata/string +++ /dev/null @@ -1 +0,0 @@ -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \ No newline at end of file diff --git a/todo.txt b/todo.txt index 2ba5a2ff0c..7e037605c0 100755 --- a/todo.txt +++ b/todo.txt @@ -45,7 +45,6 @@ Bugs without ``-d:release`` leaks memory? - bug: object {.pure, final.} does not work again! - bug: {.error: "msg".} produces invalid pragma message -- bug: tsortdev does not run with native GC!! - bug: pragma statements in combination with symbol files are evaluated twice but this can lead to compilation errors