gdb: Convert language_data::la_case_sensitivity to a method
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 12 Jul 2020 14:09:52 +0000 (15:09 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 16 Sep 2020 10:04:03 +0000 (11:04 +0100)
Convert language_data::la_case_sensitivity member variable to a virtual
method language_defn::case_sensitivity.

This is mostly straight forward.  The only slight problem is that I
ended up deleting this comment from ada-lang.c:

  /* Yes, Ada is case-insensitive, but that's not quite what this
     means.  */

However, as the comment (which has existed since Ada support was first
added to GDB) doesn't explain _why_ Ada sets case sensitivity to on
despite being a generally case insensitive language, this doesn't
really help me much.

If I understood _why_ the setting doesn't quite mean what it seems to
mean (at least as far as Ada is concerned) then I would extend the
comment on language_defn::case_sensitivity (in language.h) to include
the detail, and note how this impacts Ada.  But as it stands I've just
deleted the comment for now.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data): Remove la_case_sensitivity
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::case_sensitivity): New member function.
* go-lang.c (go_language_data): Remove la_case_sensitivity
initializer.
* language.c (enum case_mode): Moved here from language.h.
(case_mode): Make static.
(show_case_command): Update for case_sensitivity being a method.
(set_case_command): Likewise.
(set_range_case): Likewise.
(unknown_language_data): Remove la_case_sensitivity initializer.
(auto_language_data): Likewise.
* language.h (case_mode): Delete, move enum declaration to
language.c.
(language_data): Delete la_case_sensitivity field.
(language_defn::case_sensitivity): New member function.
* m2-lang.c (m2_language_data): Remove la_case_sensitivity
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.

13 files changed:
gdb/ChangeLog
gdb/ada-lang.c
gdb/c-lang.c
gdb/d-lang.c
gdb/f-lang.c
gdb/go-lang.c
gdb/language.c
gdb/language.h
gdb/m2-lang.c
gdb/objc-lang.c
gdb/opencl-lang.c
gdb/p-lang.c
gdb/rust-lang.c

index b46e89c412804c1f8da7905ef45003c2c68c53a1..134010d4ac53fa4dd90694416f0fff8cab49cd9c 100644 (file)
@@ -1,3 +1,34 @@
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * ada-lang.c (ada_language_data): Remove la_case_sensitivity
+       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::case_sensitivity): New member function.
+       * go-lang.c (go_language_data): Remove la_case_sensitivity
+       initializer.
+       * language.c (enum case_mode): Moved here from language.h.
+       (case_mode): Make static.
+       (show_case_command): Update for case_sensitivity being a method.
+       (set_case_command): Likewise.
+       (set_range_case): Likewise.
+       (unknown_language_data): Remove la_case_sensitivity initializer.
+       (auto_language_data): Likewise.
+       * language.h (case_mode): Delete, move enum declaration to
+       language.c.
+       (language_data): Delete la_case_sensitivity field.
+       (language_defn::case_sensitivity): New member function.
+       * m2-lang.c (m2_language_data): Remove la_case_sensitivity
+       initializer.
+       * objc-lang.c (objc_language_data): Likewise.
+       * opencl-lang.c (opencl_language_data): Likewise.
+       * p-lang.c (pascal_language_data): Likewise.
+       * rust-lang.c (rust_language_data): Likewise.
+
 2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * ada-lang.c (ada_language_data): Remove la_range_check
index 0a0dc21d59903e2e5e75cef2057166dcaa3c4272..bb850c16055865c8f592e9c18f371f0c7af403a6 100644 (file)
@@ -13708,8 +13708,6 @@ ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
 
 extern const struct language_data ada_language_data =
 {
-  case_sensitive_on,            /* Yes, Ada is case-insensitive, but
-                                   that's not quite what this means.  */
   array_row_major,
   macro_expansion_no,
   &ada_exp_descriptor,
index 88af4585b21c6635a2a0eaf48a7b34b24e8e0cca..c1aa02fb67fed76d8d541ef328465b5a483704e1 100644 (file)
@@ -875,7 +875,6 @@ const struct exp_descriptor exp_descriptor_c =
 
 extern const struct language_data c_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_c,
@@ -984,7 +983,6 @@ enum cplus_primitive_types {
 
 extern const struct language_data cplus_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_c,
@@ -1191,7 +1189,6 @@ static cplus_language cplus_language_defn;
 
 extern const struct language_data asm_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_c,
@@ -1261,7 +1258,6 @@ static asm_language asm_language_defn;
 
 extern const struct language_data minimal_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_c,
index 4cbe9d8fa6a778b3f01c31dc406348621cafe41c..176593f276d32234866786cabe23375380da3a19 100644 (file)
@@ -128,7 +128,6 @@ enum d_primitive_types {
 
 extern const struct language_data d_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_c,
index dc5c0859a14943ef982014c225a0158c930267f2..a938d2b8b4c84d15eca33fec6bcaed29ba0ce79f 100644 (file)
@@ -486,7 +486,6 @@ static const struct exp_descriptor exp_descriptor_f =
 
 extern const struct language_data f_language_data =
 {
-  case_sensitive_off,
   array_column_major,
   macro_expansion_no,
   &exp_descriptor_f,
@@ -726,6 +725,11 @@ public:
   bool range_checking_on_by_default () const override
   { return true; }
 
+  /* See language.h.  */
+
+  enum case_sensitivity case_sensitivity () const override
+  { return case_sensitive_off; }
+
 protected:
 
   /* See language.h.  */
index f5abd518e2249c42efae4238910ec098390a584c..7ac7e9455fa0427bab41d0ef8c9dbbd984ecfbe0 100644 (file)
@@ -508,7 +508,6 @@ enum go_primitive_types {
 
 extern const struct language_data go_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_c,
index 56b3b2eb306047dad908d52778a63a88f0db1986..41fdf357f1a1b4bbc0584c4b1345a24e8eae6215 100644 (file)
@@ -58,6 +58,15 @@ enum range_mode
     range_mode_auto, range_mode_manual
   };
 
+/* case_mode ==
+   case_mode_auto:   case_sensitivity set upon selection of scope.
+   case_mode_manual: case_sensitivity set only by user.  */
+
+enum case_mode
+  {
+    case_mode_auto, case_mode_manual
+  };
+
 /* The current (default at startup) state of type and range checking.
    (If the modes are set to "auto", though, these are changed based
    on the default language at startup, and then again based on the
@@ -65,7 +74,7 @@ enum range_mode
 
 static enum range_mode range_mode = range_mode_auto;
 enum range_check range_check = range_check_off;
-enum case_mode case_mode = case_mode_auto;
+static enum case_mode case_mode = case_mode_auto;
 enum case_sensitivity case_sensitivity = case_sensitive_on;
 
 /* The current language and language_mode (see language.h).  */
@@ -296,7 +305,7 @@ show_case_command (struct ui_file *file, int from_tty,
                      _("Case sensitivity in name search is \"%s\".\n"),
                      value);
 
-  if (case_sensitivity != current_language->la_case_sensitivity)
+  if (case_sensitivity != current_language->case_sensitivity ())
     warning (_("the current case sensitivity setting does not match "
               "the language.\n"));
 }
@@ -329,7 +338,7 @@ set_case_command (const char *ignore, int from_tty, struct cmd_list_element *c)
                       case_sensitive);
      }
 
-   if (case_sensitivity != current_language->la_case_sensitivity)
+   if (case_sensitivity != current_language->case_sensitivity ())
      warning (_("the current case sensitivity setting does not match "
                "the language.\n"));
 }
@@ -346,7 +355,7 @@ set_range_case (void)
                   ? range_check_on : range_check_off);
 
   if (case_mode == case_mode_auto)
-    case_sensitivity = current_language->la_case_sensitivity;
+    case_sensitivity = current_language->case_sensitivity ();
 }
 
 /* Set current language to (enum language) LANG.  Returns previous
@@ -789,7 +798,6 @@ unknown_language_arch_info (struct gdbarch *gdbarch,
 
 extern const struct language_data unknown_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_standard,
@@ -925,7 +933,6 @@ static unknown_language unknown_language_defn;
 
 extern const struct language_data auto_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_standard,
index ffdcdbc21f8adb55c626e412665f209326c189d0..b6d1d15c23f41bc7626b81b535fb96d69bb9311f 100644 (file)
@@ -53,16 +53,6 @@ extern enum range_check
   }
 range_check;
 
-/* case_mode ==
-   case_mode_auto:   case_sensitivity set upon selection of scope.
-   case_mode_manual: case_sensitivity set only by user.  */
-
-extern enum case_mode
-  {
-    case_mode_auto, case_mode_manual
-  }
-case_mode;
-
 /* array_ordering ==
    array_row_major:     Arrays are in row major order.
    array_column_major:  Arrays are in column major order.  */
@@ -178,9 +168,6 @@ extern const char *default_word_break_characters (void);
 
 struct language_data
   {
-    /* Default case sensitivity.  */
-    enum case_sensitivity la_case_sensitivity;
-
     /* Multi-dimensional array ordering.  */
     enum array_ordering la_array_ordering;
 
@@ -565,6 +552,13 @@ struct language_defn : language_data
   virtual bool range_checking_on_by_default () const
   { return false; }
 
+  /* Is this language case sensitive?  The return value from this function
+     provides the automativ setting for 'set case-sensitive', as a
+     consequence, a user is free to override this setting if they want.  */
+
+  virtual enum case_sensitivity case_sensitivity () const
+  { return case_sensitive_on; }
+
 protected:
 
   /* This is the overridable part of the GET_SYMBOL_NAME_MATCHER method.
index 785436c4f22bafa4d210fcf6f02e8d3633e2c37f..94fa01243b34e3f0d071709e48355b8015dc8262 100644 (file)
@@ -199,7 +199,6 @@ const struct exp_descriptor exp_descriptor_modula2 =
 
 extern const struct language_data m2_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_modula2,
index 1788910c8d5d02cba9714756a0d47b23ab6cf411..45936c9caec93b0f747c6a2e883b60241111720a 100644 (file)
@@ -323,7 +323,6 @@ static const struct op_print objc_op_print_tab[] =
 
 extern const struct language_data objc_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_standard,
index 2ad93213a27d95391e03436b5d779c49c8b236b0..2a184fd3858b53eea60c56caf37b177ac19bf04e 100644 (file)
@@ -1006,7 +1006,6 @@ const struct exp_descriptor exp_descriptor_opencl =
 /* Constant data representing the OpenCL language.  */
 extern const struct language_data opencl_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_c,
   &exp_descriptor_opencl,
index 2325aca96b53362866ac6a5515e3fd528da9c34c..fcc0eb90f5c75c34000cd86a6bf7579b6f724b19 100644 (file)
@@ -252,7 +252,6 @@ enum pascal_primitive_types {
 
 extern const struct language_data pascal_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_standard,
index 4489cabc6490b6fb72700aaacfb64f4b99181208..7b76e27f84cad86b82114a0e60e910a8252d9b36 100644 (file)
@@ -1901,7 +1901,6 @@ static const struct exp_descriptor exp_descriptor_rust =
 
 extern const struct language_data rust_language_data =
 {
-  case_sensitive_on,
   array_row_major,
   macro_expansion_no,
   &exp_descriptor_rust,