summary refs log tree commit diff
path: root/src/librustc_incremental
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2016-10-27 05:17:42 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2016-11-28 04:18:10 +0200
commit16b5c2cfef811feebe2797bcb7e01d2b6ff12db1 (patch)
treee2a17a7e621aff09521fb522bdde1599b1194f18 /src/librustc_incremental
parent34d1352f0eb7e7511e34b1e7640e854ffaf3f137 (diff)
downloadrust-16b5c2cfef811feebe2797bcb7e01d2b6ff12db1.tar.gz
rust-16b5c2cfef811feebe2797bcb7e01d2b6ff12db1.zip
rustc: desugar UFCS as much as possible during HIR lowering.
Diffstat (limited to 'src/librustc_incremental')
-rw-r--r--src/librustc_incremental/calculate_svh/svh_visitor.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/librustc_incremental/calculate_svh/svh_visitor.rs b/src/librustc_incremental/calculate_svh/svh_visitor.rs
index fd0856393fc..ec405311012 100644
--- a/src/librustc_incremental/calculate_svh/svh_visitor.rs
+++ b/src/librustc_incremental/calculate_svh/svh_visitor.rs
@@ -185,6 +185,7 @@ enum SawAbiComponent<'a> {
     SawImplItem(SawTraitOrImplItemComponent),
     SawStructField,
     SawVariant,
+    SawQPath,
     SawPath(bool),
     SawPathSegment,
     SawPathParameters,
@@ -259,7 +260,7 @@ enum SawExprComponent<'a> {
     SawExprAssign,
     SawExprAssignOp(hir::BinOp_),
     SawExprIndex,
-    SawExprPath(Option<usize>),
+    SawExprPath,
     SawExprAddrOf(hir::Mutability),
     SawExprRet,
     SawExprInlineAsm(&'a hir::InlineAsm),
@@ -333,7 +334,7 @@ fn saw_expr<'a>(node: &'a Expr_,
         ExprField(_, name)       => (SawExprField(name.node.as_str()), false),
         ExprTupField(_, id)      => (SawExprTupField(id.node), false),
         ExprIndex(..)            => (SawExprIndex, true),
-        ExprPath(ref qself, _)   => (SawExprPath(qself.as_ref().map(|q| q.position)), false),
+        ExprPath(_)              => (SawExprPath, false),
         ExprAddrOf(m, _)         => (SawExprAddrOf(m), false),
         ExprBreak(id, _)         => (SawExprBreak(id.map(|id| id.node.as_str())), false),
         ExprAgain(id)            => (SawExprAgain(id.map(|id| id.node.as_str())), false),
@@ -411,7 +412,7 @@ fn saw_pat(node: &PatKind) -> SawPatComponent {
         PatKind::Binding(bindingmode, ..) => SawPatBinding(bindingmode),
         PatKind::Struct(..) => SawPatStruct,
         PatKind::TupleStruct(..) => SawPatTupleStruct,
-        PatKind::Path(..) => SawPatPath,
+        PatKind::Path(_) => SawPatPath,
         PatKind::Tuple(..) => SawPatTuple,
         PatKind::Box(..) => SawPatBox,
         PatKind::Ref(_, mutability) => SawPatRef(mutability),
@@ -447,7 +448,7 @@ fn saw_ty(node: &Ty_) -> SawTyComponent {
       TyBareFn(ref barefnty) => SawTyBareFn(barefnty.unsafety, barefnty.abi),
       TyNever => SawTyNever,
       TyTup(..) => SawTyTup,
-      TyPath(..) => SawTyPath,
+      TyPath(_) => SawTyPath,
       TyObjectSum(..) => SawTyObjectSum,
       TyPolyTraitRef(..) => SawTyPolyTraitRef,
       TyImplTrait(..) => SawTyImplTrait,
@@ -655,6 +656,13 @@ impl<'a, 'hash, 'tcx> visit::Visitor<'tcx> for StrictVersionHashVisitor<'a, 'has
         visit::walk_struct_field(self, s)
     }
 
+    fn visit_qpath(&mut self, qpath: &'tcx QPath, id: NodeId, span: Span) {
+        debug!("visit_qpath: st={:?}", self.st);
+        SawQPath.hash(self.st);
+        self.hash_discriminant(qpath);
+        visit::walk_qpath(self, qpath, id, span)
+    }
+
     fn visit_path(&mut self, path: &'tcx Path, _: ast::NodeId) {
         debug!("visit_path: st={:?}", self.st);
         SawPath(path.global).hash(self.st);