@@ -64,6 +64,16 @@ VisibilityResolver::resolve_visibility (const HIR::Visibility &visibility,
64
64
}
65
65
}
66
66
67
+ void
68
+ VisibilityResolver::resolve_and_update (const HIR::VisItem *item)
69
+ {
70
+ ModuleVisibility module_vis;
71
+ if (!resolve_visibility (item->get_visibility (), module_vis))
72
+ return ; // we will already have emitted errors
73
+
74
+ mappings.insert_visibility (item->get_mappings ().get_defid (), module_vis);
75
+ }
76
+
67
77
DefId
68
78
VisibilityResolver::peek_module ()
69
79
{
@@ -101,19 +111,27 @@ VisibilityResolver::visit (HIR::UseDeclaration &use_decl)
101
111
102
112
void
103
113
VisibilityResolver::visit (HIR::Function &func)
104
- {}
114
+ {
115
+ resolve_and_update (&func);
116
+ }
105
117
106
118
void
107
119
VisibilityResolver::visit (HIR::TypeAlias &type_alias)
108
- {}
120
+ {
121
+ resolve_and_update (&type_alias);
122
+ }
109
123
110
124
void
111
125
VisibilityResolver::visit (HIR::StructStruct &struct_item)
112
- {}
126
+ {
127
+ resolve_and_update (&struct_item);
128
+ }
113
129
114
130
void
115
131
VisibilityResolver::visit (HIR::TupleStruct &tuple_struct)
116
- {}
132
+ {
133
+ resolve_and_update (&tuple_struct);
134
+ }
117
135
118
136
void
119
137
VisibilityResolver::visit (HIR::Enum &enum_item)
@@ -133,11 +151,15 @@ VisibilityResolver::visit (HIR::Union &union_item)
133
151
134
152
void
135
153
VisibilityResolver::visit (HIR::ConstantItem &const_item)
136
- {}
154
+ {
155
+ resolve_and_update (&const_item);
156
+ }
137
157
138
158
void
139
159
VisibilityResolver::visit (HIR::StaticItem &static_item)
140
- {}
160
+ {
161
+ resolve_and_update (&static_item);
162
+ }
141
163
142
164
void
143
165
VisibilityResolver::visit (HIR::Trait &trait)
@@ -153,7 +175,28 @@ VisibilityResolver::visit (HIR::Trait &trait)
153
175
154
176
void
155
177
VisibilityResolver::visit (HIR::ImplBlock &impl)
156
- {}
178
+ {
179
+ for (auto &item : impl.get_impl_items ())
180
+ {
181
+ HIR::VisItem *vis_item;
182
+ switch (item->get_impl_item_type ())
183
+ {
184
+ case HIR::ImplItem::FUNCTION:
185
+ vis_item = static_cast <HIR::Function *> (item.get ());
186
+ break ;
187
+ case HIR::ImplItem::TYPE_ALIAS:
188
+ vis_item = static_cast <HIR::TypeAlias *> (item.get ());
189
+ break ;
190
+ case HIR::ImplItem::CONSTANT:
191
+ vis_item = static_cast <HIR::ConstantItem *> (item.get ());
192
+ break ;
193
+ default :
194
+ gcc_unreachable ();
195
+ return ;
196
+ }
197
+ vis_item->accept_vis (*this );
198
+ }
199
+ }
157
200
158
201
void
159
202
VisibilityResolver::visit (HIR::ExternBlock &block)
0 commit comments