diff options
Diffstat (limited to 'src/hir/path.cpp')
-rw-r--r-- | src/hir/path.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/hir/path.cpp b/src/hir/path.cpp index f0590e38..8e522aa9 100644 --- a/src/hir/path.cpp +++ b/src/hir/path.cpp @@ -356,3 +356,34 @@ namespace { throw ""; } +Ordering HIR::Path::ord(const ::HIR::Path& x) const +{ + ORD( (unsigned)m_data.tag(), (unsigned)x.m_data.tag() ); + TU_MATCH(::HIR::Path::Data, (this->m_data, x.m_data), (tpe, xpe), + (Generic, + return ::ord(tpe, xpe); + ), + (UfcsInherent, + ORD(*tpe.type, *xpe.type); + ORD(tpe.item, xpe.item); + return ::ord(tpe.params, xpe.params); + ), + (UfcsKnown, + ORD(*tpe.type, *xpe.type); + ORD(tpe.trait, xpe.trait); + ORD(tpe.item, xpe.item); + return ::ord(tpe.params, xpe.params); + ), + (UfcsUnknown, + ORD(*tpe.type, *xpe.type); + ORD(tpe.item, xpe.item); + return ::ord(tpe.params, xpe.params); + ) + ) + throw ""; +} + +bool ::HIR::Path::operator==(const Path& x) const { + return this->ord(x) == ::OrdEqual; +} + |