Move rust_language::lookup_symbol_nonlocal
authorTom Tromey <tromey@adacore.com>
Fri, 4 Aug 2023 20:00:33 +0000 (14:00 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 5 Sep 2023 17:02:34 +0000 (11:02 -0600)
This moves rust_language::lookup_symbol_nonlocal to rust-lang.c.
There's no need to have it in rust-lang.h and moving it lets us avoid
adding new includes in a later patch.

gdb/rust-lang.c
gdb/rust-lang.h

index 0b4a7d47c957412e96ce12046d89d588a4cced98..57bef01d3438f727b18f064ac1556b93fbcfc565 100644 (file)
@@ -1675,6 +1675,43 @@ rust_language::is_string_type_p (struct type *type) const
              && strcmp (type->name (), "&str") == 0));
 }
 
+/* See language.h.  */
+
+struct block_symbol
+rust_language::lookup_symbol_nonlocal
+     (const char *name, const struct block *block,
+      const domain_enum domain) const
+{
+  struct block_symbol result = {};
+
+  const char *scope = block == nullptr ? "" : block->scope ();
+  symbol_lookup_debug_printf
+    ("rust_lookup_symbol_non_local (%s, %s (scope %s), %s)",
+     name, host_address_to_string (block), scope,
+     domain_name (domain));
+
+  /* Look up bare names in the block's scope.  */
+  std::string scopedname;
+  if (name[cp_find_first_component (name)] == '\0')
+    {
+      if (scope[0] != '\0')
+       {
+         scopedname = std::string (scope) + "::" + name;
+         name = scopedname.c_str ();
+       }
+      else
+       name = NULL;
+    }
+
+  if (name != NULL)
+    {
+      result = lookup_symbol_in_static_block (name, block, domain);
+      if (result.symbol == NULL)
+       result = lookup_global_symbol (name, block, domain);
+    }
+  return result;
+}
+
 /* Single instance of the Rust language class.  */
 
 static rust_language rust_language_defn;
index efe721c570700d0fb8288fa0b41308bebf446a13..85c93a9dcec3dc33fe1cdcca826f523a8e6cda0f 100644 (file)
@@ -144,37 +144,7 @@ public:
 
   struct block_symbol lookup_symbol_nonlocal
        (const char *name, const struct block *block,
-        const domain_enum domain) const override
-  {
-    struct block_symbol result = {};
-
-    const char *scope = block == nullptr ? "" : block->scope ();
-    symbol_lookup_debug_printf
-      ("rust_lookup_symbol_non_local (%s, %s (scope %s), %s)",
-       name, host_address_to_string (block), scope,
-       domain_name (domain));
-
-    /* Look up bare names in the block's scope.  */
-    std::string scopedname;
-    if (name[cp_find_first_component (name)] == '\0')
-      {
-       if (scope[0] != '\0')
-         {
-           scopedname = std::string (scope) + "::" + name;
-           name = scopedname.c_str ();
-         }
-       else
-         name = NULL;
-      }
-
-    if (name != NULL)
-      {
-       result = lookup_symbol_in_static_block (name, block, domain);
-       if (result.symbol == NULL)
-         result = lookup_global_symbol (name, block, domain);
-      }
-    return result;
-  }
+        const domain_enum domain) const override;
 
   /* See language.h.  */