diff --git a/src/tokenizer.go b/src/tokenizer.go index 6b2ef72b..7f4aef48 100644 --- a/src/tokenizer.go +++ b/src/tokenizer.go @@ -73,7 +73,7 @@ func ParseRange(str *string) (Range, bool) { } begin, err1 := strconv.Atoi(ns[0]) end, err2 := strconv.Atoi(ns[1]) - if err1 != nil || err2 != nil || begin == 0 || end == 0 { + if err1 != nil || err2 != nil || begin == 0 || end == 0 || begin < 0 && end > 0 { return Range{}, false } return newRange(begin, end), true diff --git a/src/tokenizer_test.go b/src/tokenizer_test.go index 3119f797..39f32dc8 100644 --- a/src/tokenizer_test.go +++ b/src/tokenizer_test.go @@ -40,6 +40,18 @@ func TestParseRange(t *testing.T) { t.Errorf("%v", r) } } + { + i := "1..3..5" + if r, ok := ParseRange(&i); ok { + t.Errorf("%v", r) + } + } + { + i := "-3..3" + if r, ok := ParseRange(&i); ok { + t.Errorf("%v", r) + } + } } func TestTokenize(t *testing.T) {