diff --git a/include/xo/reader/expect_symbol_xs.hpp b/include/xo/reader/expect_symbol_xs.hpp index 103b89aa..144bc3d0 100644 --- a/include/xo/reader/expect_symbol_xs.hpp +++ b/include/xo/reader/expect_symbol_xs.hpp @@ -19,6 +19,10 @@ namespace xo { expect_symbol_xs(); static std::unique_ptr expect_symbol_expression(); + + virtual void on_symbol_token(const token_type & tk, + exprstatestack * p_stack, + rp * p_emit_expr) override; }; } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/expect_symbol_xs.cpp b/src/reader/expect_symbol_xs.cpp index afc8bf6e..84faeaa3 100644 --- a/src/reader/expect_symbol_xs.cpp +++ b/src/reader/expect_symbol_xs.cpp @@ -16,6 +16,20 @@ namespace xo { : exprstate(exprstatetype::expect_symbol) {} + void + expect_symbol_xs::on_symbol_token(const token_type & tk, + exprstatestack * p_stack, + rp * p_emit_expr) + { + /* have to do pop first, before sending symbol to + * the o.g. symbol-requester + */ + std::unique_ptr self = p_stack->pop_exprstate(); + + p_stack->top_exprstate().on_symbol(tk.text(), + p_stack, p_emit_expr); + return; + } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index 9c083656..aa916b0d 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -198,22 +198,11 @@ namespace xo { case exprstatetype::defexpr: case exprstatetype::parenexpr: case exprstatetype::expect_rhs_expression: + case exprstatetype::expect_symbol: /* unreachable - redirected to define_xs etc */ assert(false); return; - case exprstatetype::expect_symbol: - { - /* have to do pop first, before sending symbol to - * the o.g. symbol-requester - */ - std::unique_ptr self = p_stack->pop_exprstate(); - - p_stack->top_exprstate().on_symbol(tk.text(), - p_stack, p_emit_expr); - return; - } - case exprstatetype::expect_type: { TypeDescr td = nullptr;