diff options
author | Araq <rumpf_a@web.de> | 2015-03-12 11:40:14 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-03-12 11:40:14 +0100 |
commit | 0a0126d49aecc7915ae115f267f99d9510c70bdb (patch) | |
tree | 037007d87b783f7e7174a874c810fc9ecac91058 | |
parent | 3aad16e337a18861d76df24f8137d2dbe1144ac2 (diff) | |
download | Nim-0a0126d49aecc7915ae115f267f99d9510c70bdb.tar.gz |
fixes #794 properly
-rw-r--r-- | compiler/transf.nim | 4 | ||||
-rw-r--r-- | tests/ccgbugs/tstringslice.nim | 15 |
2 files changed, 14 insertions, 5 deletions
diff --git a/compiler/transf.nim b/compiler/transf.nim index 7e56f09dc..325ce9d5e 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -399,7 +399,7 @@ proc transformConv(c: PTransf, n: PNode): PTransNode = if diff < 0: result = newTransNode(nkObjUpConv, n, 1) result[0] = transform(c, n.sons[1]) - elif diff > 0: + elif diff > 0 and diff != high(int): result = newTransNode(nkObjDownConv, n, 1) result[0] = transform(c, n.sons[1]) else: @@ -411,7 +411,7 @@ proc transformConv(c: PTransf, n: PNode): PTransNode = if diff < 0: result = newTransNode(nkObjUpConv, n, 1) result[0] = transform(c, n.sons[1]) - elif diff > 0: + elif diff > 0 and diff != high(int): result = newTransNode(nkObjDownConv, n, 1) result[0] = transform(c, n.sons[1]) else: diff --git a/tests/ccgbugs/tstringslice.nim b/tests/ccgbugs/tstringslice.nim index d4d1a2294..00c1adf74 100644 --- a/tests/ccgbugs/tstringslice.nim +++ b/tests/ccgbugs/tstringslice.nim @@ -1,9 +1,18 @@ discard """ - disabled: "true" + output: '''1 +1234 +1234 +2 +234 +234 +3 +34 +34 +4 +4 +4''' """ -# Now the compiler fails with OOM. yay. - # bug #794 type TRange = range[0..3] |