gdb: Convert language_data::la_range_check to a method

Convert language_data::la_range_check member variable to a virtual
method language_defn::range_checking_on_by_default.

Where the previous member variable was of type 'enum range_check', the
new member function returns a boolean that selects between range
checking being on or off.  This removes the possibility of a language
having its default be the third enum state, range_check_warn, which
no language currently used.

This all makes sense I think, the language's true/false provides the
default when the global 'set check range' is set to 'auto'.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (ada_language_data): Remove la_range_check
	initializer.
	* c-lang.c (c_language_data): Likewise.
	(cplus_language_data): Likewise.
	(asm_language_data): Likewise.
	(minimal_language_data): Likewise.
	* d-lang.c (d_language_data): Likewise.
	* f-lang.c (f_language_data): Likewise.
	(f_language::range_checking_on_by_default): New member function.
	* go-lang.c (go_language_data): Remove la_range_check initializer.
	* language.c (enum range_mode): Moved here from language.h.
	(range_mode): Made static.
	(show_range_command): Update to use
	range_checking_on_by_default.
	(set_range_command): Likewise.
	(set_range_case): Likewise.
	(unknown_language_data): Remove la_range_check initializer.
	(auto_language_data): Likewise.
	* language.h (range_mode): Delete.  Enum definition moved to
	language.c.
	(language_data): Remove la_range_check field.
	(language_defn::range_checking_on_by_default): New member
	function.
	* m2-lang.c (m2_language_data): Remove la_range_check initializer.
	(m2_language::range_checking_on_by_default): New member function.
	* objc-lang.c (objc_language_data): Remove la_range_check
	initializer.
	* opencl-lang.c (opencl_language_data): Likewise.
	* p-lang.c (pascal_language_data): Likewise.
	(pascal_language::range_checking_on_by_default): New member
	function.
	* rust-lang.c (rust_language_data): Remove la_range_check
	initializer.
	(rust_language::range_checking_on_by_default): New member
	function.
This commit is contained in:
Andrew Burgess 2020-07-12 10:15:32 +01:00
parent bf92aec588
commit efdf6a733d
13 changed files with 83 additions and 33 deletions

View file

@ -42,16 +42,6 @@ class innermost_block_tracker;
#define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */
/* range_mode ==
range_mode_auto: range_check set automatically to default of language.
range_mode_manual: range_check set manually by user. */
extern enum range_mode
{
range_mode_auto, range_mode_manual
}
range_mode;
/* range_check ==
range_check_on: Ranges are checked in GDB expressions, producing errors.
range_check_warn: Ranges are checked, producing warnings.
@ -188,10 +178,6 @@ extern const char *default_word_break_characters (void);
struct language_data
{
/* Default range checking. */
enum range_check la_range_check;
/* Default case sensitivity. */
enum case_sensitivity la_case_sensitivity;
@ -572,6 +558,13 @@ struct language_defn : language_data
virtual bool store_sym_names_in_linkage_form_p () const
{ return false; }
/* Default range checking preference. The return value from this
function provides the automatic setting for 'set check range'. As a
consequence a user is free to override this setting if they want. */
virtual bool range_checking_on_by_default () const
{ return false; }
protected:
/* This is the overridable part of the GET_SYMBOL_NAME_MATCHER method.