diff options
author | Tom Tromey <tom@tromey.com> | 2020-12-16 15:49:40 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-12-16 17:35:37 -0700 |
commit | c5c412054ebeb9e9c9dcbb36692b1d6235eb6106 (patch) | |
tree | 312afccbb667f8e41d5ceabd6c60ef3d6f29eb2b /gdb/ada-lang.c | |
parent | f81baa08635491ebf42c3c3609050399d8af21af (diff) | |
download | fsf-binutils-gdb-c5c412054ebeb9e9c9dcbb36692b1d6235eb6106.zip fsf-binutils-gdb-c5c412054ebeb9e9c9dcbb36692b1d6235eb6106.tar.gz fsf-binutils-gdb-c5c412054ebeb9e9c9dcbb36692b1d6235eb6106.tar.bz2 |
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.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 23d7a16..75ad333 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -14124,16 +14124,17 @@ public: A null CONTEXT_TYPE indicates that a non-void return type is preferred. May change (expand) *EXP. */ - void post_parser (expression_up *expp, bool void_context_p, int completing, - innermost_block_tracker *tracker) const override + void post_parser (expression_up *expp, struct parser_state *ps) + const override { struct type *context_type = NULL; int pc = 0; - if (void_context_p) + if (ps->void_context_p) context_type = builtin_type ((*expp)->gdbarch)->builtin_void; - resolve_subexp (expp, &pc, 1, context_type, completing, tracker); + resolve_subexp (expp, &pc, 1, context_type, ps->parse_completion, + ps->block_tracker); } /* See language.h. */ |