Fix floating points with underscores
This commit is contained in:
@@ -464,6 +464,13 @@ func TestKeyEqualNumber(t *testing.T) {
|
||||
token{Position{1, 7}, tokenInteger, "1_2_3_4_5"},
|
||||
token{Position{1, 16}, tokenEOF, ""},
|
||||
})
|
||||
|
||||
testFlow(t, "flt8 = 9_224_617.445_991_228_313", []token{
|
||||
token{Position{1, 1}, tokenKey, "flt8"},
|
||||
token{Position{1, 6}, tokenEqual, "="},
|
||||
token{Position{1, 8}, tokenFloat, "9_224_617.445_991_228_313"},
|
||||
token{Position{1, 33}, tokenEOF, ""},
|
||||
})
|
||||
}
|
||||
|
||||
func TestMultiline(t *testing.T) {
|
||||
|
||||
@@ -231,7 +231,8 @@ func (p *tomlParser) parseRvalue() interface{} {
|
||||
}
|
||||
return val
|
||||
case tokenFloat:
|
||||
val, err := strconv.ParseFloat(tok.val, 64)
|
||||
cleanedVal := strings.Replace(tok.val, "_", "", -1)
|
||||
val, err := strconv.ParseFloat(cleanedVal, 64)
|
||||
if err != nil {
|
||||
p.raiseError(tok, "%s", err)
|
||||
}
|
||||
|
||||
+11
-1
@@ -68,7 +68,7 @@ func TestSimpleNumbers(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestIntegersWithUnderscores(t *testing.T) {
|
||||
func TestNumbersWithUnderscores(t *testing.T) {
|
||||
tree, err := Load("a = 1_000")
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"a": int64(1000),
|
||||
@@ -83,6 +83,16 @@ func TestIntegersWithUnderscores(t *testing.T) {
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"a": int64(12345),
|
||||
})
|
||||
|
||||
tree, err = Load("flt8 = 9_224_617.445_991_228_313")
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"flt8": float64(9224617.445991228313),
|
||||
})
|
||||
|
||||
tree, err = Load("flt9 = 1e1_00")
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"flt9": float64(1e100),
|
||||
})
|
||||
}
|
||||
|
||||
func TestFloatsWithExponents(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user