Don't allow float to end with a dot
This commit is contained in:
@@ -413,6 +413,12 @@ func lexNumber(l *lexer) stateFn {
|
|||||||
for {
|
for {
|
||||||
next := l.next()
|
next := l.next()
|
||||||
if next == '.' {
|
if next == '.' {
|
||||||
|
if point_seen {
|
||||||
|
return l.errorf("cannot have two dots in one float")
|
||||||
|
}
|
||||||
|
if !isDigit(l.peek()) {
|
||||||
|
return l.errorf("float cannot end with a dot")
|
||||||
|
}
|
||||||
point_seen = true
|
point_seen = true
|
||||||
} else if isDigit(next) {
|
} else if isDigit(next) {
|
||||||
digit_seen = true
|
digit_seen = true
|
||||||
|
|||||||
@@ -268,6 +268,22 @@ func TestKeyEqualDate(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFloatEndingWithDot(t *testing.T) {
|
||||||
|
testFlow(t, "foo = 42.", []token{
|
||||||
|
token{tokenKey, "foo"},
|
||||||
|
token{tokenEqual, "="},
|
||||||
|
token{tokenError, "float cannot end with a dot"},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFloatWithTwoDots(t *testing.T) {
|
||||||
|
testFlow(t, "foo = 4.2.", []token{
|
||||||
|
token{tokenKey, "foo"},
|
||||||
|
token{tokenEqual, "="},
|
||||||
|
token{tokenError, "cannot have two dots in one float"},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestKeyEqualNumber(t *testing.T) {
|
func TestKeyEqualNumber(t *testing.T) {
|
||||||
testFlow(t, "foo = 42", []token{
|
testFlow(t, "foo = 42", []token{
|
||||||
token{tokenKey, "foo"},
|
token{tokenKey, "foo"},
|
||||||
|
|||||||
Reference in New Issue
Block a user