Current documentation for Decimal::fromString says:
// fromString supports following syntax EBNF:
// number ::= sign? digit+ ('.' digit*) (exponent-marker sign? digit+)?
// | sign? '.' digit+ (exponent-marker sign? digit+)?
// sign ::= '+' | '-'
// exponent-marker ::= 'e' | 'E'
// digit ::= '0' | '1' | ... | '9'
// Note: fromString doesn't support "infinity" and "nan".
static Decimal fromString(const String&);
However in the implementation:
1. It does not look possible to have "sign? '.'" at all.
2. The documentation says "sign? '.' digit+" but it looks like "sign? '.' digit*" is possible. If so what happens? What should happen?
What should this code actually be doing? Where did that EBNF come from?
There used to be a chromium test for this. We should consider adding a test for this and testing more cases.
Sounds like: "sign? digit+ ('.' digit+ )? (('e'|'E') sign? digit+)?"
Because it always says "A series of one or more characters in the range".
If that is the case, then the implicit fallthrough in the current implementation is wrong, and the documentation should not mention "digit*" anywhere. Also, where did the idea to support strings without a number before a '.' come from? Was it an older version of the spec? Should we continue to support that syntax?
So many questions!