| ... | @@ -1229,6 +1229,10 @@ void tokenize(Buf *buf, Tokenization *out) { | ... | @@ -1229,6 +1229,10 @@ void tokenize(Buf *buf, Tokenization *out) { |
| 1229 | break; | 1229 | break; |
| 1230 | } | 1230 | } |
| 1231 | if (is_exponent_signifier(c, t.radix)) { | 1231 | if (is_exponent_signifier(c, t.radix)) { |
| | 1232 | if (t.is_trailing_underscore) { |
| | 1233 | invalid_char_error(&t, c); |
| | 1234 | break; |
| | 1235 | } |
| 1232 | if (t.radix != 16 && t.radix != 10) { | 1236 | if (t.radix != 16 && t.radix != 10) { |
| 1233 | invalid_char_error(&t, c); | 1237 | invalid_char_error(&t, c); |
| 1234 | } | 1238 | } |
| ... | @@ -1296,6 +1300,10 @@ void tokenize(Buf *buf, Tokenization *out) { | ... | @@ -1296,6 +1300,10 @@ void tokenize(Buf *buf, Tokenization *out) { |
| 1296 | break; | 1300 | break; |
| 1297 | } | 1301 | } |
| 1298 | if (is_exponent_signifier(c, t.radix)) { | 1302 | if (is_exponent_signifier(c, t.radix)) { |
| | 1303 | if (t.is_trailing_underscore) { |
| | 1304 | invalid_char_error(&t, c); |
| | 1305 | break; |
| | 1306 | } |
| 1299 | t.state = TokenizeStateFloatExponentUnsigned; | 1307 | t.state = TokenizeStateFloatExponentUnsigned; |
| 1300 | t.radix = 10; // exponent is always base 10 | 1308 | t.radix = 10; // exponent is always base 10 |
| 1301 | break; | 1309 | break; |