Remove most usages of T_END_NUMBER

This commit is contained in:
2025-05-22 12:37:08 -04:00
parent 76e03e635b
commit c939bc3baa

View File

@@ -185,7 +185,7 @@ inline WeaselJsonStatus n_value(Parser3 *self) {
break; break;
case '0': case '0':
self->pop(); self->pop();
if (auto s = self->push({N_FRACTION, N_EXPONENT, T_END_NUMBER})) { if (auto s = self->push({N_FRACTION, N_EXPONENT})) {
return s; return s;
} }
self->callbacks->on_begin_number(self->data); self->callbacks->on_begin_number(self->data);
@@ -205,8 +205,7 @@ inline WeaselJsonStatus n_value(Parser3 *self) {
self->callbacks->on_begin_number(self->data); self->callbacks->on_begin_number(self->data);
self->dataBegin = self->buf; self->dataBegin = self->buf;
++self->buf; ++self->buf;
if (auto s = if (auto s = self->push({N_DIGITS2, N_FRACTION, N_EXPONENT})) {
self->push({N_DIGITS2, N_FRACTION, N_EXPONENT, T_END_NUMBER})) {
return s; return s;
} }
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -215,8 +214,7 @@ inline WeaselJsonStatus n_value(Parser3 *self) {
self->callbacks->on_begin_number(self->data); self->callbacks->on_begin_number(self->data);
self->dataBegin = self->buf; self->dataBegin = self->buf;
++self->buf; ++self->buf;
if (auto s = if (auto s = self->push({N_INTEGER2, N_FRACTION, N_EXPONENT})) {
self->push({N_INTEGER2, N_FRACTION, N_EXPONENT, T_END_NUMBER})) {
return s; return s;
} }
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -808,6 +806,7 @@ inline WeaselJsonStatus n_fraction(Parser3 *self) {
} }
} }
// Responsible for ensuring that on_end_number gets called
inline WeaselJsonStatus n_exponent(Parser3 *self) { inline WeaselJsonStatus n_exponent(Parser3 *self) {
if (self->len() == 0) { if (self->len() == 0) {
self->pop(); self->pop();
@@ -818,12 +817,14 @@ inline WeaselJsonStatus n_exponent(Parser3 *self) {
case 'E': case 'E':
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_SIGN, N_DIGITS})) { if (auto s = self->push({N_SIGN, N_DIGITS, T_END_NUMBER})) {
return s; return s;
} }
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
default: default:
self->pop(); self->pop();
self->flushNumber();
self->callbacks->on_end_number(self->data);
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
} }
} }