Add a lib/interval sharedEmptyRange global
diff --git a/lib/interval/interval.go b/lib/interval/interval.go
index c1a3c1b..c648ae2 100644
--- a/lib/interval/interval.go
+++ b/lib/interval/interval.go
@@ -39,7 +39,13 @@
)
var (
- one = big.NewInt(1)
+ minusOne = big.NewInt(-1)
+ one = big.NewInt(+1)
+
+ // sharedEmptyRange is an emtpy IntRange. Users should not modify it. It is
+ // not exported, directly or indirectly (by another function returning its
+ // elements).
+ sharedEmptyRange = IntRange{one, minusOne}
)
var smallBitMasks = [...]*big.Int{
@@ -308,13 +314,13 @@
// any negative or non-negative elements.
func (x IntRange) split2Ways() (neg IntRange, nonNeg IntRange) {
if x.Empty() {
- return makeEmptyRange(), makeEmptyRange()
+ return sharedEmptyRange, sharedEmptyRange
}
if x[0] != nil && x[0].Sign() >= 0 {
- return makeEmptyRange(), x
+ return sharedEmptyRange, x
}
if x[1] != nil && x[1].Sign() < 0 {
- return x, makeEmptyRange()
+ return x, sharedEmptyRange
}
neg[0] = x[0]
@@ -337,10 +343,10 @@
// negative or positive elements.
func (x IntRange) split() (neg IntRange, pos IntRange, negEmpty bool, hasZero bool, posEmpty bool) {
if x[0] != nil && x[0].Sign() > 0 {
- return makeEmptyRange(), x, true, false, x.Empty()
+ return sharedEmptyRange, x, true, false, x.Empty()
}
if x[1] != nil && x[1].Sign() < 0 {
- return x, makeEmptyRange(), x.Empty(), false, true
+ return x, sharedEmptyRange, x.Empty(), false, true
}
neg[0] = x[0]
diff --git a/lib/interval/interval_test.go b/lib/interval/interval_test.go
index dcd29c1..fad3597 100644
--- a/lib/interval/interval_test.go
+++ b/lib/interval/interval_test.go
@@ -283,8 +283,8 @@
tt.Errorf("%s.Empty(): got %t, want %t", tc.s, got, want)
} else if !got {
eqTestCases = append(eqTestCases, x)
- } else if !x.Eq(makeEmptyRange()) {
- tt.Errorf("%v eq %v: got %t, want %t", x, makeEmptyRange(), got, want)
+ } else if !x.Eq(sharedEmptyRange) {
+ tt.Errorf("%v eq %v: got %t, want %t", x, sharedEmptyRange, got, want)
}
if got, want := x.justZero(), tc.s == "[ 0, 0]"; got != want {
@@ -929,7 +929,7 @@
x := IntRange{x0, x1}
want := zero
if x.Empty() {
- want = makeEmptyRange()
+ want = sharedEmptyRange
}
if got, _ := x.And(zero); !got.Eq(want) {
@@ -949,7 +949,7 @@
x := IntRange{x0, x1}
want := minusOne
if x.Empty() {
- want = makeEmptyRange()
+ want = sharedEmptyRange
}
if got, _ := x.Or(minusOne); !got.Eq(want) {