diff --git a/bug_test.go b/bug_test.go index 1c63cb4..6a2d216 100644 --- a/bug_test.go +++ b/bug_test.go @@ -675,3 +675,17 @@ func Test_S15_1_2_2_A2_T10(t *testing.T) { `, true) }) } + +func Test_S15_1_2_3_A2_T10(t *testing.T) { + tt(t, func() { + test, _ := test() + + test(` + parseFloat("\u180E" + "1.1") === parseFloat("1.1"); + `, true) + + test(` + parseFloat("\u180E" + "\u180E" + "\u180E" + "1.1") === parseFloat("1.1"); + `, true) + }) +} diff --git a/builtin.go b/builtin.go index b918498..256ee3c 100644 --- a/builtin.go +++ b/builtin.go @@ -153,7 +153,8 @@ var parseFloat_matchValid = regexp.MustCompile(`[0-9eE\+\-\.]|Infinity`) func builtinGlobal_parseFloat(call FunctionCall) Value { // Caveat emptor: This implementation does NOT match the specification - input := strings.TrimSpace(call.Argument(0).string()) + input := strings.Trim(call.Argument(0).string(), builtinString_trim_whitespace) + if parseFloat_matchBadSpecial.MatchString(input) { return NaNValue() }