diff options
author | alandonovan <adonovan@google.com> | 2020-06-19 10:36:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-19 10:36:48 -0400 |
commit | 50ca820fafb940caeda09b96864b9215f8b84c04 (patch) | |
tree | 96128b89e91932c14638ca441b54ef1793abee2f | |
parent | c6daab680f283fdf16a79c99d8e86a1562400761 (diff) | |
download | starlark-go-50ca820fafb940caeda09b96864b9215f8b84c04.tar.gz |
starlark: fix tests for 386 (#283)
The recent int change didn't compile on 386. Fixed.
Thanks to user @anyktx for pointing this out.
Also, tests of string * int and tuple * int printed a bad
error message containing an integer overflow. Now fixed.
-rw-r--r-- | starlark/eval.go | 6 | ||||
-rw-r--r-- | starlark/int_generic.go | 2 | ||||
-rw-r--r-- | starlark/testdata/string.star | 2 | ||||
-rw-r--r-- | starlark/testdata/tuple.star | 6 |
4 files changed, 9 insertions, 7 deletions
diff --git a/starlark/eval.go b/starlark/eval.go index de492ca..e7e827d 100644 --- a/starlark/eval.go +++ b/starlark/eval.go @@ -1027,7 +1027,8 @@ func tupleRepeat(elems Tuple, n Int) (Tuple, error) { // Inv: i > 0, len > 0 sz := len(elems) * i if sz < 0 || sz >= maxAlloc { // sz < 0 => overflow - return nil, fmt.Errorf("excessive repeat (%d elements)", sz) + // Don't print sz. + return nil, fmt.Errorf("excessive repeat (%d * %d elements)", len(elems), i) } res := make([]Value, sz) // copy elems into res, doubling each time @@ -1053,7 +1054,8 @@ func stringRepeat(s String, n Int) (String, error) { // Inv: i > 0, len > 0 sz := len(s) * i if sz < 0 || sz >= maxAlloc { // sz < 0 => overflow - return "", fmt.Errorf("excessive repeat (%d elements)", sz) + // Don't print sz. + return "", fmt.Errorf("excessive repeat (%d * %d elements)", len(s), i) } return String(strings.Repeat(string(s), i)), nil } diff --git a/starlark/int_generic.go b/starlark/int_generic.go index a472a4c..70f927f 100644 --- a/starlark/int_generic.go +++ b/starlark/int_generic.go @@ -19,7 +19,7 @@ type intImpl struct { // small is defined only if big is nil. // small is sign-extended to 64 bits for ease of subsequent arithmetic. func (i Int) get() (small int64, big *big.Int) { - return i.small_, i.big_ + return i.impl.small_, i.impl.big_ } // Precondition: math.MinInt32 <= x && x <= math.MaxInt32 diff --git a/starlark/testdata/string.star b/starlark/testdata/string.star index 8390cd5..07ff5ef 100644 --- a/starlark/testdata/string.star +++ b/starlark/testdata/string.star @@ -25,7 +25,7 @@ assert.eq(1 * "abc", "abc") assert.eq(5 * "abc", "abcabcabcabcabc") assert.fails(lambda: 1.0 * "abc", "unknown.*float \\* str") assert.fails(lambda : "abc" * (1000000 * 1000000), "repeat count 1000000000000 too large") -assert.fails(lambda : "abc" * 1000000 * 1000000, "excessive repeat .3000000000000 elements") +assert.fails(lambda : "abc" * 1000000 * 1000000, "excessive repeat \\(3000000 \\* 1000000 elements") # len assert.eq(len("Hello, 世界!"), 14) diff --git a/starlark/testdata/tuple.star b/starlark/testdata/tuple.star index 4d28470..f306133 100644 --- a/starlark/testdata/tuple.star +++ b/starlark/testdata/tuple.star @@ -36,7 +36,7 @@ assert.eq(tuple(), ()) assert.eq(tuple("abc".elems()), ("a", "b", "c")) assert.eq(tuple(["a", "b", "c"]), ("a", "b", "c")) assert.eq(tuple([1]), (1,)) -assert.fails(lambda : tuple(1), "got int, want iterable") +assert.fails(lambda: tuple(1), "got int, want iterable") # tuple * int, int * tuple abc = tuple("abc".elems()) @@ -48,8 +48,8 @@ assert.eq(0 * abc, ()) assert.eq(-1 * abc, ()) assert.eq(1 * abc, abc) assert.eq(3 * abc, ("a", "b", "c", "a", "b", "c", "a", "b", "c")) -assert.fails(lambda : abc * (1000000 * 1000000), "repeat count 1000000000000 too large") -assert.fails(lambda : abc * 1000000 * 1000000, "excessive repeat .3000000000000 elements") +assert.fails(lambda: abc * (1000000 * 1000000), "repeat count 1000000000000 too large") +assert.fails(lambda: abc * 1000000 * 1000000, "excessive repeat \\(3000000 \\* 1000000 elements") # TODO(adonovan): test use of tuple as sequence # (for loop, comprehension, library functions). |