diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-27 14:06:48 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-27 14:06:48 +0000 |
commit | fe780f29977ccb09c5bce008e9d5bbf245d1cb38 (patch) | |
tree | 7e933cead59c63999ec2f87998aa0d8355c58ecb /parse.y | |
parent | 3356c312cddcc95af59e648c4ad946ec969d9813 (diff) | |
download | ruby-fe780f29977ccb09c5bce008e9d5bbf245d1cb38.tar.gz |
parse.y: refine error message
* parse.y (parser_number_literal_suffix): refine error message for
extra dot and digits.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -5594,6 +5594,8 @@ parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *e #define lex_eol_p() (lex_p >= lex_pend) #define peek(c) peek_n((c), 0) #define peek_n(c,n) (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n]) +#define peekc() peekc_n(0) +#define peekc_n(n) (lex_p+(n) < lex_pend ? (unsigned char)lex_p[n] : -1) static inline int parser_nextc(struct parser_params *parser) @@ -6453,6 +6455,14 @@ parser_number_literal_suffix(struct parser_params *parser, int mask) return 0; } pushback(c); + if (c == '.') { + c = peekc_n(1); + if (ISDIGIT(c)) { + yyerror("unexpected fraction part after numeric literal"); + lex_p += 2; + while (parser_is_identchar()) nextc(); + } + } break; } return result; |