Change parameters to language_defn::post_parser

In the expression rewrite, Ada type resolution will be done at parse
time rather than in a post-parse pass.  At this point,
language_defn::post_parser will be removed.  However, for this to
work, the information available to post_parser must be made available
during the actual parse.

This patch refactors this code slightly to make this possible.  In
particular, "void_context_p" is passed to the parser_state
constructor, and the parser state is then passed to the post_parser
method.

gdb/ChangeLog
2020-12-16  Tom Tromey  <tom@tromey.com>

	* rust-exp.y (rust_lex_tests): Update.
	* parser-defs.h (parser_state): Add void_p parameter.
	<void_context_p>: New member.
	* parse.c (parse_exp_in_context): Update.
	* language.h (language_defn::post_parser): Remove void_context_p,
	completing, tracker parameters.  Add parser state.
	* ada-lang.c (ada_language::post_parser): Update.
This commit is contained in:
Tom Tromey 2020-12-16 15:49:40 -07:00
parent f81baa0863
commit c5c412054e
6 changed files with 28 additions and 16 deletions

View file

@ -1113,7 +1113,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
parser_state ps (lang, get_current_arch (), expression_context_block,
expression_context_pc, comma, *stringptr,
cstate != nullptr, tracker);
cstate != nullptr, tracker, void_context_p);
scoped_restore_current_language lang_saver;
set_language (lang->la_language);
@ -1147,7 +1147,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
if (out_subexp)
*out_subexp = subexp;
lang->post_parser (&result, void_context_p, ps.parse_completion, tracker);
lang->post_parser (&result, &ps);
if (expressiondebug)
dump_prefix_expression (result.get (), gdb_stdlog);