diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-08 07:27:57 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-03-08 07:28:32 -0700 |
commit | cd9a314824b2b87207a8ba7a8003639989d2406b (patch) | |
tree | 8cf783cf73fec36e1d9fb62bca1c9c51395df36a /gdb/ada-lang.h | |
parent | cf12b17fd05811e08235fd4aaca5306bd78c7527 (diff) | |
download | gdb-cd9a314824b2b87207a8ba7a8003639989d2406b.zip gdb-cd9a314824b2b87207a8ba7a8003639989d2406b.tar.gz gdb-cd9a314824b2b87207a8ba7a8003639989d2406b.tar.bz2 |
Split out some Ada type resolution code
This splits some Ada type resolution code out of resolve_subexp into
new functions that can be reused.
gdb/ChangeLog
2021-03-08 Tom Tromey <tom@tromey.com>
* ada-lang.h (ada_find_operator_symbol, ada_resolve_funcall)
(ada_resolve_variable): Declare.
* ada-lang.c (ada_find_operator_symbol, ada_resolve_funcall)
(ada_resolve_variable): New functions.
(resolve_subexp): Update.
Diffstat (limited to 'gdb/ada-lang.h')
-rw-r--r-- | gdb/ada-lang.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h index c380733..679aeb4 100644 --- a/gdb/ada-lang.h +++ b/gdb/ada-lang.h @@ -379,4 +379,42 @@ extern void print_ada_task_info (struct ui_out *uiout, const char *taskno_str, struct inferior *inf); +/* Look for a symbol for an overloaded operator for the operation OP. + PARSE_COMPLETION is nonzero if currently parsing for completion. + NARGS and ARGVEC describe the arguments to the call. Returns a + "null" block_symbol if no such operator is found. */ + +extern block_symbol ada_find_operator_symbol (enum exp_opcode op, + int parse_completion, + int nargs, value *argvec[]); + +/* Resolve a function call, selecting among possible function symbols. + SYM and BLOCK are passed to ada_lookup_symbol_list. CONTEXT_TYPE + describes the calling context. PARSE_COMPLETION is nonzero if + currently parsing for completion. NARGS and ARGVEC describe the + arguments to the call. This returns the chosen symbol and will + update TRACKER accordingly. */ + +extern block_symbol ada_resolve_funcall (struct symbol *sym, + const struct block *block, + struct type *context_type, + int parse_completion, + int nargs, value *argvec[], + innermost_block_tracker *tracker); + +/* Resolve a symbol reference, selecting among possible values. SYM + and BLOCK are passed to ada_lookup_symbol_list. CONTEXT_TYPE + describes the calling context. PARSE_COMPLETION is nonzero if + currently parsing for completion. If DEPROCEDURE_P is nonzero, + then a symbol that names a zero-argument function will be passed + through ada_resolve_function. This returns the chosen symbol and + will update TRACKER accordingly. */ + +extern block_symbol ada_resolve_variable (struct symbol *sym, + const struct block *block, + struct type *context_type, + int parse_completion, + int deprocedure_p, + innermost_block_tracker *tracker); + #endif |