about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2014-10-09 17:17:49 -0400
committerNiko Matsakis <niko@alum.mit.edu>2014-10-09 17:19:53 -0400
commit7a07f2a78092b3381d44a86330eb2de364aafb95 (patch)
tree2dc35b4c21dc7c383eef41001161452aba16a44c
parent2bb0796ae27b3b1c0563f1779680e63b2ca322c3 (diff)
downloadrust-7a07f2a78092b3381d44a86330eb2de364aafb95.tar.gz
rust-7a07f2a78092b3381d44a86330eb2de364aafb95.zip
Add a few more debug statements
-rw-r--r--src/librustc/middle/traits/select.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/librustc/middle/traits/select.rs b/src/librustc/middle/traits/select.rs
index 64931b49435..305528a9af8 100644
--- a/src/librustc/middle/traits/select.rs
+++ b/src/librustc/middle/traits/select.rs
@@ -109,6 +109,7 @@ enum BuiltinBoundConditions {
     AmbiguousBuiltin
 }
 
+#[deriving(Show)]
 enum EvaluationResult {
     EvaluatedToOk,
     EvaluatedToErr,
@@ -246,7 +247,9 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
                obligation.repr(self.tcx()));
 
         let stack = self.push_stack(previous_stack.map(|x| x), obligation);
-        self.evaluate_stack(&stack)
+        let result = self.evaluate_stack(&stack);
+        debug!("result: {}", result);
+        result
     }
 
     fn evaluate_stack(&mut self,
@@ -259,6 +262,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
         // that does provide an impl.
         let input_types = &stack.skol_trait_ref.substs.types;
         if input_types.iter().any(|&t| ty::type_is_skolemized(t)) {
+            debug!("evaluate_stack({}) --> unbound argument, must be ambiguous",
+                   stack.skol_trait_ref.repr(self.tcx()));
             return EvaluatedToAmbig;
         }
 
@@ -286,6 +291,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
             .skip(1) // skip top-most frame
             .any(|prev| stack.skol_trait_ref == prev.skol_trait_ref)
         {
+            debug!("evaluate_stack({}) --> recursive",
+                   stack.skol_trait_ref.repr(self.tcx()));
             return EvaluatedToOk;
         }