Fix cmpStrings in js mode (#7604)

This commit is contained in:
treeform
2018-04-15 08:34:03 -07:00
committed by Andreas Rumpf
parent 6795d9931b
commit b98cd3bf34
2 changed files with 11 additions and 2 deletions

View File

@@ -417,11 +417,11 @@ proc cmpStrings(a, b: string): int {.asmNoStackFrame, compilerProc.} =
if (`a` == `b`) return 0;
if (!`a`) return -1;
if (!`b`) return 1;
for (var i = 0; i < `a`.length-1; ++i) {
for (var i = 0; i < `a`.length - 1 && i < `b`.length - 1; i++) {
var result = `a`[i] - `b`[i];
if (result != 0) return result;
}
return 0;
return `a`.length - `b`.length;
"""
proc cmp(x, y: string): int =

View File

@@ -76,3 +76,12 @@ block: # String case of
case s
of "Привет!": discard
else: doAssert(false)
block: # String cmp
var a, b: string
doAssert(cmp(a, b) == 0)
doAssert(cmp("foo", "foo") == 0)
doAssert(cmp("foobar", "foo") == 3)
doAssert(cmp("foo", "foobar") == -3)
doAssert(cmp("fooz", "foog") == 19)
doAssert(cmp("foog", "fooz") == -19)