aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-07-08 15:08:08 +0100
committerPhilip Herron <philip.herron@embecosm.com>2022-07-15 12:01:38 +0100
commite3f135ef0beb51b77cae7c6af40c5a1c4dfe7722 (patch)
treea61253ca546547316530bbc77ea4cc303d00419d /gcc/rust/resolve
parentf51284b598863eb0cbeb2984fd1499a672f2191d (diff)
downloadgcc-e3f135ef0beb51b77cae7c6af40c5a1c4dfe7722.zip
gcc-e3f135ef0beb51b77cae7c6af40c5a1c4dfe7722.tar.gz
gcc-e3f135ef0beb51b77cae7c6af40c5a1c4dfe7722.tar.bz2
Add new interface to mappings class crate_num_to_nodeid and node_is_crate
In order to load and resolve extern crates we need to support detection of node_id is a crate in order to support paths outside of the current crate.
Diffstat (limited to 'gcc/rust/resolve')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-path.cc3
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-type.cc3
2 files changed, 4 insertions, 2 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-path.cc b/gcc/rust/resolve/rust-ast-resolve-path.cc
index a03bfb4..27f32aa 100644
--- a/gcc/rust/resolve/rust-ast-resolve-path.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-path.cc
@@ -199,7 +199,8 @@ ResolvePath::resolve_path (AST::PathInExpression *expr)
bool did_resolve_segment = resolved_node_id != UNKNOWN_NODEID;
if (did_resolve_segment)
{
- if (mappings->node_is_module (resolved_node_id))
+ if (mappings->node_is_module (resolved_node_id)
+ || mappings->node_is_crate (resolved_node_id))
{
module_scope_id = resolved_node_id;
}
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc
index 8e85889..04183a4 100644
--- a/gcc/rust/resolve/rust-ast-resolve-type.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-type.cc
@@ -220,7 +220,8 @@ ResolveRelativeTypePath::go (AST::TypePath &path, NodeId &resolved_node_id)
bool did_resolve_segment = resolved_node_id != UNKNOWN_NODEID;
if (did_resolve_segment)
{
- if (mappings->node_is_module (resolved_node_id))
+ if (mappings->node_is_module (resolved_node_id)
+ || mappings->node_is_crate (resolved_node_id))
{
module_scope_id = resolved_node_id;
}