From 36b806b3d6e32c960c7bc312ac3182de31c9bd5b Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Wed, 27 Aug 2025 21:20:16 -0400 Subject: [PATCH] nr1.0: Remove support in checking phases gcc/rust/ChangeLog: * checks/errors/rust-const-checker.cc: Remove inclusion of "options.h". (ConstChecker::ConstChecker): Initialize 2.0 resolver. (ConstChecker::visit): Assume nr2.0 is enabled. * checks/errors/rust-const-checker.h: Adjust includes. (ConstChecker::resolver): Change type to 2.0 resolver. * checks/errors/rust-unsafe-checker.cc: Remove inclusion of "options.h". (UnsafeChecker::UnsafeChecker): Initialize 2.0 resolver. (UnsafeChecker::visit): Assume nr2.0 is enabled. * checks/errors/rust-unsafe-checker.h: Adjust includes. (UnsafeChecker::resolver): Change type to 2.0 resolver. * checks/lints/rust-lint-marklive.cc (MarkLive::visit_path_segment): Assume nr2.0 is enabled. (MarkLive::visit): Likewise. (MarkLive::find_ref_node_id): Likewise. * checks/lints/rust-lint-marklive.h: Include "rust-immutable-name-resolution-context.h". (MarkLive::resolver): Change type to 2.0 resolver, as a reference instead of a pointer. (MarkLive::MarkLive): Initialize 2.0 resolver. Signed-off-by: Owen Avery --- gcc/rust/checks/errors/rust-const-checker.cc | 20 ++---- gcc/rust/checks/errors/rust-const-checker.h | 4 +- gcc/rust/checks/errors/rust-unsafe-checker.cc | 46 +++----------- gcc/rust/checks/errors/rust-unsafe-checker.h | 4 +- gcc/rust/checks/lints/rust-lint-marklive.cc | 61 ++++--------------- gcc/rust/checks/lints/rust-lint-marklive.h | 6 +- 6 files changed, 31 insertions(+), 110 deletions(-) diff --git a/gcc/rust/checks/errors/rust-const-checker.cc b/gcc/rust/checks/errors/rust-const-checker.cc index 782d6940bbee..cc842fa5500d 100644 --- a/gcc/rust/checks/errors/rust-const-checker.cc +++ b/gcc/rust/checks/errors/rust-const-checker.cc @@ -24,14 +24,11 @@ #include "rust-system.h" #include "rust-immutable-name-resolution-context.h" -// for flag_name_resolution_2_0 -#include "options.h" - namespace Rust { namespace HIR { ConstChecker::ConstChecker () - : resolver (*Resolver::Resolver::get ()), + : resolver (Resolver2_0::ImmutableNameResolutionContext::get ().resolver ()), mappings (Analysis::Mappings::get ()) {} @@ -358,18 +355,9 @@ ConstChecker::visit (CallExpr &expr) NodeId ast_node_id = expr.get_fnexpr ().get_mappings ().get_nodeid (); NodeId ref_node_id; - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); - - if (auto id = nr_ctx.lookup (ast_node_id)) - ref_node_id = *id; - else - return; - } - // We don't care about types here - else if (!resolver.lookup_resolved_name (ast_node_id, &ref_node_id)) + if (auto id = resolver.lookup (ast_node_id)) + ref_node_id = *id; + else return; if (auto definition_id = mappings.lookup_node_to_hir (ref_node_id)) diff --git a/gcc/rust/checks/errors/rust-const-checker.h b/gcc/rust/checks/errors/rust-const-checker.h index d464b7b9fce5..be475f77fabe 100644 --- a/gcc/rust/checks/errors/rust-const-checker.h +++ b/gcc/rust/checks/errors/rust-const-checker.h @@ -22,7 +22,7 @@ #include "rust-hir-visitor.h" #include "rust-hir-type-check.h" #include "rust-stacked-contexts.h" -#include "rust-name-resolver.h" +#include "rust-name-resolution-context.h" namespace Rust { namespace HIR { @@ -72,7 +72,7 @@ class ConstChecker : public HIRFullVisitor std::vector> ¶m, ConstGenericCtx context); StackedContexts const_context; - Resolver::Resolver &resolver; + const Resolver2_0::NameResolutionContext &resolver; Analysis::Mappings &mappings; virtual void visit (Lifetime &lifetime) override; diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.cc b/gcc/rust/checks/errors/rust-unsafe-checker.cc index 607d20fa11f7..9dc21383cf48 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.cc +++ b/gcc/rust/checks/errors/rust-unsafe-checker.cc @@ -25,15 +25,12 @@ #include "rust-system.h" #include "rust-immutable-name-resolution-context.h" -// for flag_name_resolution_2_0 -#include "options.h" - namespace Rust { namespace HIR { UnsafeChecker::UnsafeChecker () : context (*Resolver::TypeCheckContext::get ()), - resolver (*Resolver::Resolver::get ()), + resolver (Resolver2_0::ImmutableNameResolutionContext::get ().resolver ()), mappings (Analysis::Mappings::get ()) {} @@ -220,23 +217,10 @@ UnsafeChecker::visit (PathInExpression &path) NodeId ast_node_id = path.get_mappings ().get_nodeid (); NodeId ref_node_id; - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); - - auto resolved = nr_ctx.lookup (ast_node_id); - - if (!resolved.has_value ()) - return; - - ref_node_id = resolved.value (); - } + if (auto resolved = resolver.lookup (ast_node_id)) + ref_node_id = resolved.value (); else - { - if (!resolver.lookup_resolved_name (ast_node_id, &ref_node_id)) - return; - } + return; if (auto definition_id = mappings.lookup_node_to_hir (ref_node_id)) { @@ -434,26 +418,10 @@ UnsafeChecker::visit (CallExpr &expr) NodeId ast_node_id = expr.get_fnexpr ().get_mappings ().get_nodeid (); NodeId ref_node_id; - // There are no unsafe types, and functions are defined in the name resolver. - // If we can't find the name, then we're dealing with a type and should return - // early. - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); - - auto resolved = nr_ctx.lookup (ast_node_id); - - if (!resolved.has_value ()) - return; - - ref_node_id = resolved.value (); - } + if (auto resolved = resolver.lookup (ast_node_id)) + ref_node_id = resolved.value (); else - { - if (!resolver.lookup_resolved_name (ast_node_id, &ref_node_id)) - return; - } + return; if (auto definition_id = mappings.lookup_node_to_hir (ref_node_id)) { diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.h b/gcc/rust/checks/errors/rust-unsafe-checker.h index 420668f46ed8..4a303b6ce4a5 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.h +++ b/gcc/rust/checks/errors/rust-unsafe-checker.h @@ -20,7 +20,7 @@ #define RUST_UNSAFE_CHECKER_H #include "rust-hir-visitor.h" -#include "rust-name-resolver.h" +#include "rust-name-resolution-context.h" #include "rust-hir-type-check.h" #include "rust-stacked-contexts.h" @@ -54,7 +54,7 @@ class UnsafeChecker : public HIRFullVisitor StackedContexts unsafe_context; Resolver::TypeCheckContext &context; - Resolver::Resolver &resolver; + const Resolver2_0::NameResolutionContext &resolver; Analysis::Mappings &mappings; virtual void visit (Lifetime &lifetime) override; diff --git a/gcc/rust/checks/lints/rust-lint-marklive.cc b/gcc/rust/checks/lints/rust-lint-marklive.cc index af7535a9826e..077f704c9d77 100644 --- a/gcc/rust/checks/lints/rust-lint-marklive.cc +++ b/gcc/rust/checks/lints/rust-lint-marklive.cc @@ -163,21 +163,10 @@ MarkLive::visit_path_segment (HIR::PathExprSegment seg) // // We should mark them alive all and ignoring other kind of segments. // If the segment we dont care then just return false is fine - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); - - if (auto id = nr_ctx.lookup (ast_node_id)) - ref_node_id = *id; - else - return false; - } - else if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id)) - { - if (!resolver->lookup_resolved_type (ast_node_id, &ref_node_id)) - return false; - } + if (auto id = resolver.lookup (ast_node_id)) + ref_node_id = *id; + else + return false; if (auto hid = mappings.lookup_node_to_hir (ref_node_id)) { mark_hir_id (*hid); @@ -250,21 +239,13 @@ MarkLive::visit (HIR::TupleIndexExpr &expr) void MarkLive::visit (HIR::TypeAlias &alias) { - NodeId ast_node_id = UNKNOWN_NODEID; - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); + NodeId ast_node_id; - if (auto id = nr_ctx.lookup ( - alias.get_type_aliased ().get_mappings ().get_nodeid ())) - ast_node_id = *id; - } + if (auto id = resolver.lookup ( + alias.get_type_aliased ().get_mappings ().get_nodeid ())) + ast_node_id = *id; else - { - resolver->lookup_resolved_type ( - alias.get_type_aliased ().get_mappings ().get_nodeid (), &ast_node_id); - } + rust_unreachable (); if (auto hid = mappings.lookup_node_to_hir (ast_node_id)) mark_hir_id (*hid); @@ -285,27 +266,9 @@ MarkLive::mark_hir_id (HirId id) void MarkLive::find_ref_node_id (NodeId ast_node_id, NodeId &ref_node_id) { - if (flag_name_resolution_2_0) - { - auto &nr_ctx - = Resolver2_0::ImmutableNameResolutionContext::get ().resolver (); - - nr_ctx.lookup (ast_node_id).map ([&ref_node_id] (NodeId resolved) { - ref_node_id = resolved; - }); - } - else - { - if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id)) - { - if (!resolver->lookup_resolved_type (ast_node_id, &ref_node_id)) - { - bool ok - = resolver->lookup_resolved_misc (ast_node_id, &ref_node_id); - rust_assert (ok); - } - } - } + auto resolved = resolver.lookup (ast_node_id); + rust_assert (resolved.has_value ()); + ref_node_id = resolved.value (); } } // namespace Analysis diff --git a/gcc/rust/checks/lints/rust-lint-marklive.h b/gcc/rust/checks/lints/rust-lint-marklive.h index 86d96fc93673..6a842781fc12 100644 --- a/gcc/rust/checks/lints/rust-lint-marklive.h +++ b/gcc/rust/checks/lints/rust-lint-marklive.h @@ -23,6 +23,7 @@ #include "rust-hir-map.h" #include "rust-lint-marklive-base.h" #include "rust-name-resolver.h" +#include "rust-immutable-name-resolution-context.h" namespace Rust { namespace Analysis { @@ -277,11 +278,12 @@ class MarkLive : public MarkLiveBase std::set liveSymbols; std::set scannedSymbols; Analysis::Mappings &mappings; - Resolver::Resolver *resolver; + const Resolver2_0::NameResolutionContext &resolver; Resolver::TypeCheckContext *tyctx; MarkLive (std::vector worklist) : worklist (worklist), mappings (Analysis::Mappings::get ()), - resolver (Resolver::Resolver::get ()), + resolver ( + Resolver2_0::ImmutableNameResolutionContext::get ().resolver ()), tyctx (Resolver::TypeCheckContext::get ()){}; void mark_hir_id (HirId);