aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-item.h
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-02-02 15:05:19 +0000
committerPhilip Herron <philip.herron@embecosm.com>2022-02-02 16:47:19 +0000
commit4d1ca35582e69e8677bd96775edbf03b6eec6ab8 (patch)
tree4baa7da3f520efec9d02c4d0c44a8b07268a6f5d /gcc/rust/resolve/rust-ast-resolve-item.h
parentf7f14de056eb3887e70f29b0f29da4025f746559 (diff)
downloadgcc-4d1ca35582e69e8677bd96775edbf03b6eec6ab8.zip
gcc-4d1ca35582e69e8677bd96775edbf03b6eec6ab8.tar.gz
gcc-4d1ca35582e69e8677bd96775edbf03b6eec6ab8.tar.bz2
Apply the is_marked_for_strip check to the rest of the crate
We need to apply this to all levels of the crate: Item impl-item trait-item Stmt
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-item.h')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-item.h53
1 files changed, 42 insertions, 11 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-item.h b/gcc/rust/resolve/rust-ast-resolve-item.h
index cff3dbb..5d32c00 100644
--- a/gcc/rust/resolve/rust-ast-resolve-item.h
+++ b/gcc/rust/resolve/rust-ast-resolve-item.h
@@ -38,6 +38,9 @@ public:
static void go (AST::TraitItem *item, const CanonicalPath &prefix,
const CanonicalPath &canonical_prefix)
{
+ if (item->is_marked_for_strip ())
+ return;
+
ResolveTraitItems resolver (prefix, canonical_prefix);
item->accept_vis (resolver);
};
@@ -303,8 +306,13 @@ public:
ResolveWhereClause::Resolve (struct_decl.get_where_clause ());
for (AST::TupleField &field : struct_decl.get_fields ())
- ResolveType::go (field.get_field_type ().get (),
- struct_decl.get_node_id ());
+ {
+ if (field.get_field_type ()->is_marked_for_strip ())
+ continue;
+
+ ResolveType::go (field.get_field_type ().get (),
+ struct_decl.get_node_id ());
+ }
resolver->get_type_scope ().pop ();
}
@@ -360,7 +368,12 @@ public:
item.get_node_id (), cpath);
for (auto &field : item.get_tuple_fields ())
- ResolveType::go (field.get_field_type ().get (), item.get_node_id ());
+ {
+ if (field.get_field_type ()->is_marked_for_strip ())
+ continue;
+
+ ResolveType::go (field.get_field_type ().get (), item.get_node_id ());
+ }
}
void visit (AST::EnumItemStruct &item) override
@@ -373,7 +386,12 @@ public:
item.get_node_id (), cpath);
for (auto &field : item.get_struct_fields ())
- ResolveType::go (field.get_field_type ().get (), item.get_node_id ());
+ {
+ if (field.get_field_type ()->is_marked_for_strip ())
+ continue;
+
+ ResolveType::go (field.get_field_type ().get (), item.get_node_id ());
+ }
}
void visit (AST::EnumItemDiscriminant &item) override
@@ -412,8 +430,13 @@ public:
ResolveWhereClause::Resolve (struct_decl.get_where_clause ());
for (AST::StructField &field : struct_decl.get_fields ())
- ResolveType::go (field.get_field_type ().get (),
- struct_decl.get_node_id ());
+ {
+ if (field.get_field_type ()->is_marked_for_strip ())
+ continue;
+
+ ResolveType::go (field.get_field_type ().get (),
+ struct_decl.get_node_id ());
+ }
resolver->get_type_scope ().pop ();
}
@@ -442,8 +465,13 @@ public:
ResolveWhereClause::Resolve (union_decl.get_where_clause ());
for (AST::StructField &field : union_decl.get_variants ())
- ResolveType::go (field.get_field_type ().get (),
- union_decl.get_node_id ());
+ {
+ if (field.get_field_type ()->is_marked_for_strip ())
+ continue;
+
+ ResolveType::go (field.get_field_type ().get (),
+ union_decl.get_node_id ());
+ }
resolver->get_type_scope ().pop ();
}
@@ -486,9 +514,6 @@ public:
void visit (AST::Function &function) override
{
- if (function.is_marked_for_strip ())
- return;
-
auto decl = ResolveFunctionItemToCanonicalPath::resolve (function);
auto path = prefix.append (decl);
auto cpath = canonical_prefix.append (decl);
@@ -884,6 +909,9 @@ public:
static void go (AST::InherentImplItem *item, const CanonicalPath &prefix,
const CanonicalPath &canonical_prefix)
{
+ if (item->is_marked_for_strip ())
+ return;
+
ResolveImplItems resolver (prefix, canonical_prefix);
item->accept_vis (resolver);
};
@@ -891,6 +919,9 @@ public:
static void go (AST::TraitImplItem *item, const CanonicalPath &prefix,
const CanonicalPath &canonical_prefix)
{
+ if (item->is_marked_for_strip ())
+ return;
+
ResolveImplItems resolver (prefix, canonical_prefix);
item->accept_vis (resolver);
};