// along with GCC; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
+#include "rust-ast-resolve-toplevel.h"
#include "rust-ast-resolve-item.h"
#include "rust-ast-resolve-stmt.h"
#include "rust-ast-resolve-implitem.h"
}
}
+void
+ResolveStmt::visit (AST::Trait &trait)
+{
+ ResolveTopLevel::go (&trait, prefix, canonical_prefix);
+ ResolveItem::go (&trait, prefix, canonical_prefix);
+}
+
+void
+ResolveStmt::visit (AST::InherentImpl &impl_block)
+{
+ ResolveTopLevel::go (&impl_block, prefix, canonical_prefix);
+ ResolveItem::go (&impl_block, prefix, canonical_prefix);
+}
+
+void
+ResolveStmt::visit (AST::TraitImpl &impl_block)
+{
+ ResolveTopLevel::go (&impl_block, prefix, canonical_prefix);
+ ResolveItem::go (&impl_block, prefix, canonical_prefix);
+}
+
} // namespace Resolver
} // namespace Rust
}
void visit (AST::ExternBlock &extern_block) override;
+ void visit (AST::Trait &trait) override;
+ void visit (AST::InherentImpl &impl_block) override;
+ void visit (AST::TraitImpl &impl_block) override;
private:
ResolveStmt (const CanonicalPath &prefix,
context->insert_type (expr.get_method_name ().get_mappings (), lookup);
// set up the resolved name on the path
- resolver->insert_resolved_name (expr.get_mappings ().get_nodeid (),
- resolved_node_id);
+ if (resolver->get_name_scope ().decl_was_declared_here (resolved_node_id))
+ {
+ resolver->insert_resolved_name (expr.get_mappings ().get_nodeid (),
+ resolved_node_id);
+ }
+ else
+ {
+ resolver->insert_resolved_misc (expr.get_mappings ().get_nodeid (),
+ resolved_node_id);
+ }
// return the result of the function back
infered = function_ret_tyty;