From 34143ee12285c55d0773ea8ebda38b95351c6592 Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 10 Dec 2016 02:30:57 +0100 Subject: fixes serious codegen regression that caused Nimble to misbehave --- tests/ccgbugs/tmarkerproc_regression.nim | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/ccgbugs/tmarkerproc_regression.nim (limited to 'tests') diff --git a/tests/ccgbugs/tmarkerproc_regression.nim b/tests/ccgbugs/tmarkerproc_regression.nim new file mode 100644 index 000000000..261f746fc --- /dev/null +++ b/tests/ccgbugs/tmarkerproc_regression.nim @@ -0,0 +1,47 @@ +discard """ + output: "done" +""" + +type + Version* = distinct string + Special* = distinct string + + VersionRangeEnum* = enum + verLater, # > V + verEarlier, # < V + verEqLater, # >= V -- Equal or later + verEqEarlier, # <= V -- Equal or earlier + verIntersect, # > V & < V + verEq, # V + verAny, # * + verSpecial # #head + + VersionRange* = ref VersionRangeObj + VersionRangeObj = object + case kind*: VersionRangeEnum + of verLater, verEarlier, verEqLater, verEqEarlier, verEq: + ver*: Version + of verSpecial: + spe*: Special + of verIntersect: + verILeft, verIRight: VersionRange + of verAny: + nil + +proc foo(x: string): VersionRange = + new(result) + result.kind = verEq + result.ver = Version(x) + +proc main = + var a: array[5000, VersionRange] + for i in 0 ..< 5000: + a[i] = foo($i & "some longer text here " & $i) + GC_fullcollect() + for i in 0 ..< 5000: + let expected = $i & "some longer text here " & $i + if a[i].ver.string != expected: + quit "bug!" + echo "done" + +main() -- cgit 1.4.1-2-gfad0