зеркало из https://github.com/github/ruby.git
[ruby/prism] Unexpected fractional component error messages
https://github.com/ruby/prism/commit/e893bc2230
This commit is contained in:
Родитель
5e6bb0857a
Коммит
d4fdc45953
|
@ -145,6 +145,7 @@ errors:
|
|||
- INVALID_MULTIBYTE_ESCAPE
|
||||
- INVALID_NUMBER_BINARY
|
||||
- INVALID_NUMBER_DECIMAL
|
||||
- INVALID_NUMBER_FRACTION
|
||||
- INVALID_NUMBER_HEXADECIMAL
|
||||
- INVALID_NUMBER_OCTAL
|
||||
- INVALID_NUMBER_UNDERSCORE_INNER
|
||||
|
|
|
@ -8851,6 +8851,16 @@ lex_numeric_prefix(pm_parser_t *parser, bool* seen_e) {
|
|||
type = lex_optional_float_suffix(parser, seen_e);
|
||||
}
|
||||
|
||||
// At this point we have a completed number, but we want to provide the user
|
||||
// with a good experience if they put an additional .xxx fractional
|
||||
// component on the end, so we'll check for that here.
|
||||
if (peek_offset(parser, 0) == '.' && pm_char_is_decimal_digit(peek_offset(parser, 1))) {
|
||||
const uint8_t *fraction_start = parser->current.end;
|
||||
const uint8_t *fraction_end = parser->current.end + 2;
|
||||
fraction_end += pm_strspn_decimal_digit(fraction_end, parser->end - fraction_end);
|
||||
pm_parser_err(parser, fraction_start, fraction_end, PM_ERR_INVALID_NUMBER_FRACTION);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
|
|
|
@ -224,6 +224,7 @@ static const pm_diagnostic_data_t diagnostic_messages[PM_DIAGNOSTIC_ID_MAX] = {
|
|||
[PM_ERR_INVALID_LOCAL_VARIABLE_WRITE] = { "identifier %.*s is not valid to set", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_BINARY] = { "invalid binary number; numeric literal without digits", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_DECIMAL] = { "invalid decimal number; numeric literal without digits", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_FRACTION] = { "unexpected fraction part after numeric literal", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_HEXADECIMAL] = { "invalid hexadecimal number; numeric literal without digits", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_OCTAL] = { "invalid octal number; numeric literal without digits", PM_ERROR_LEVEL_SYNTAX },
|
||||
[PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER] = { "invalid underscore placement in number", PM_ERROR_LEVEL_SYNTAX },
|
||||
|
|
Загрузка…
Ссылка в новой задаче