// TODO: Use newtype pattern for Usage and Definition
void map_usage (Usage usage, Definition definition);
- tl::optional<NodeId> lookup (NodeId usage);
+ tl::optional<NodeId> lookup (NodeId usage) const;
private:
/* Map of "usage" nodes which have been resolved to a "definition" node */
#include "rust-hir-pattern.h"
#include "rust-hir-type-check-expr.h"
#include "rust-type-util.h"
+#include "rust-immutable-name-resolution-context.h"
+
+// for flag_name_resolution_2_0
+#include "options.h"
namespace Rust {
namespace Resolver {
NodeId ref_node_id = UNKNOWN_NODEID;
bool maybe_item = false;
- maybe_item
- |= resolver->lookup_resolved_name (pattern.get_mappings ().get_nodeid (),
- &ref_node_id);
- maybe_item
- |= resolver->lookup_resolved_type (pattern.get_mappings ().get_nodeid (),
- &ref_node_id);
+
+ if (flag_name_resolution_2_0)
+ {
+ auto &nr_ctx
+ = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+ if (auto id = nr_ctx.lookup (pattern.get_mappings ().get_nodeid ()))
+ {
+ ref_node_id = *id;
+ maybe_item = true;
+ }
+ }
+ else
+ {
+ maybe_item |= resolver->lookup_resolved_name (
+ pattern.get_mappings ().get_nodeid (), &ref_node_id);
+ maybe_item |= resolver->lookup_resolved_type (
+ pattern.get_mappings ().get_nodeid (), &ref_node_id);
+ }
+
bool path_is_const_item = false;
if (maybe_item)