From 7a07f2a78092b3381d44a86330eb2de364aafb95 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 9 Oct 2014 17:17:49 -0400 Subject: [PATCH] Add a few more debug statements --- src/librustc/middle/traits/select.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/librustc/middle/traits/select.rs b/src/librustc/middle/traits/select.rs index 64931b494357..305528a9af8f 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; }