Skip to content

Commit

Permalink
Use name resolution 2.0 in TraitResolver
Browse files Browse the repository at this point in the history
gcc/rust/ChangeLog:

	* typecheck/rust-hir-trait-resolve.cc: Add includes.
	(TraitResolver::resolve_path_to_trait):
	Use name resolution 2.0 resolver when enabled.

Signed-off-by: Owen Avery <[email protected]>
  • Loading branch information
powerboat9 authored and CohenArthur committed Oct 28, 2024
1 parent c220250 commit 8a6d24d
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions gcc/rust/typecheck/rust-hir-trait-resolve.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
#include "rust-hir-type-check-expr.h"
#include "rust-substitution-mapper.h"
#include "rust-type-util.h"
#include "rust-immutable-name-resolution-context.h"

// used for flag_name_resolution_2_0
#include "options.h"

namespace Rust {
namespace Resolver {
Expand Down Expand Up @@ -110,8 +114,24 @@ TraitResolver::resolve_path_to_trait (const HIR::TypePath &path,
HIR::Trait **resolved) const
{
NodeId ref;
if (!resolver->lookup_resolved_type (path.get_mappings ().get_nodeid (),
&ref))
bool ok;
if (flag_name_resolution_2_0)
{
auto &nr_ctx
= Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();

auto ref_opt = nr_ctx.lookup (path.get_mappings ().get_nodeid ());

if ((ok = ref_opt.has_value ()))
ref = *ref_opt;
}
else
{
ok = resolver->lookup_resolved_type (path.get_mappings ().get_nodeid (),
&ref);
}

if (!ok)
{
rust_error_at (path.get_locus (), "Failed to resolve path to node-id");
return false;
Expand Down

0 comments on commit 8a6d24d

Please sign in to comment.