diff options
Diffstat (limited to 'src/hir/visitor.hpp')
-rw-r--r-- | src/hir/visitor.hpp | 57 |
1 files changed, 8 insertions, 49 deletions
diff --git a/src/hir/visitor.hpp b/src/hir/visitor.hpp index 844603df..baf0c4a5 100644 --- a/src/hir/visitor.hpp +++ b/src/hir/visitor.hpp @@ -6,47 +6,6 @@ namespace HIR { -class PathChain -{ - const PathChain* prev; -public: - const ::std::string& name; - - PathChain(const PathChain& prev, const ::std::string& name): - prev(&prev), - name(name) - {} - PathChain(const ::std::string& name): - prev(nullptr), - name(name) - {} - - PathChain operator+(const ::std::string& name) const { - return PathChain(*this, name); - } - - ::HIR::SimplePath to_path() const { - if( prev ) { - return prev->to_path() + name; - } - else { - if( name != "" ) { - return ::HIR::SimplePath("", {name}); - } - else { - return ::HIR::SimplePath("", {}); - } - } - } - - friend ::std::ostream& operator<<(::std::ostream& os, const PathChain& x) { - if( x.prev ) - os << *x.prev << "::"; - os << x.name; - return os; - } -}; - class Visitor { public: @@ -54,21 +13,21 @@ public: virtual void visit_crate(::HIR::Crate& crate); - virtual void visit_module(PathChain p, ::HIR::Module& mod); + virtual void visit_module(ItemPath p, ::HIR::Module& mod); virtual void visit_type_impl(::HIR::TypeImpl& impl); virtual void visit_trait_impl(const ::HIR::SimplePath& trait_path, ::HIR::TraitImpl& impl); virtual void visit_marker_impl(const ::HIR::SimplePath& trait_path, ::HIR::MarkerImpl& impl); // - Type Items - virtual void visit_type_alias(PathChain p, ::HIR::TypeAlias& item); - virtual void visit_trait(PathChain p, ::HIR::Trait& item); - virtual void visit_struct(PathChain p, ::HIR::Struct& item); - virtual void visit_enum(PathChain p, ::HIR::Enum& item); + virtual void visit_type_alias(ItemPath p, ::HIR::TypeAlias& item); + virtual void visit_trait(ItemPath p, ::HIR::Trait& item); + virtual void visit_struct(ItemPath p, ::HIR::Struct& item); + virtual void visit_enum(ItemPath p, ::HIR::Enum& item); // - Value Items - virtual void visit_function(PathChain p, ::HIR::Function& item); - virtual void visit_static(PathChain p, ::HIR::Static& item); - virtual void visit_constant(PathChain p, ::HIR::Constant& item); + virtual void visit_function(ItemPath p, ::HIR::Function& item); + virtual void visit_static(ItemPath p, ::HIR::Static& item); + virtual void visit_constant(ItemPath p, ::HIR::Constant& item); // - Misc virtual void visit_params(::HIR::GenericParams& params); |