} else {
4
};
+
+ let normalize = |candidate| self.tcx.global_tcx().infer_ctxt().enter(|ref infcx| {
+ let normalized = infcx
+ .at(&ObligationCause::dummy(), ty::ParamEnv::empty())
+ .normalize(candidate)
+ .ok();
+ match normalized {
+ Some(normalized) => format!("\n {:?}", normalized.value),
+ None => format!("\n {:?}", candidate),
+ }
+ });
+
err.help(&format!("the following implementations were found:{}{}",
- &impl_candidates[0..end].iter().map(|candidate| {
- format!("\n {:?}", candidate)
- }).collect::<String>(),
+ &impl_candidates[0..end].iter().map(normalize).collect::<String>(),
if impl_candidates.len() > 5 {
format!("\nand {} others", impl_candidates.len() - 4)
} else {
ConstVal::Value(Value::ByVal(PrimVal::Bytes(sz))) => {
write!(f, "{}", sz)?;
}
- ConstVal::Unevaluated(_def_id, substs) => {
- write!(f, "<unevaluated{:?}>", &substs[..])?;
+ ConstVal::Unevaluated(_def_id, _substs) => {
+ write!(f, "_")?;
}
_ => {
write!(f, "{:?}", sz)?;
LL | type A = [u8; 4]::AssocTy;
| ^^^^^^^^^^^^^^^^ ambiguous associated type
|
- = note: specify the type using the syntax `<[u8; <unevaluated[]>] as Trait>::AssocTy`
+ = note: specify the type using the syntax `<[u8; _] as Trait>::AssocTy`
error[E0223]: ambiguous associated type
--> $DIR/bad-assoc-ty.rs:15:10
--- /dev/null
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// https://github.com/rust-lang/rust/issues/49208
+
+trait Foo {
+ fn foo();
+}
+
+impl Foo for [(); 1] {
+ fn foo() {}
+}
+
+fn main() {
+ <[(); 0] as Foo>::foo() //~ ERROR E0277
+}
--- /dev/null
+error[E0277]: the trait bound `[(); 0]: Foo` is not satisfied
+ --> $DIR/unevaluated_fixed_size_array_len.rs:22:5
+ |
+LL | <[(); 0] as Foo>::foo() //~ ERROR E0277
+ | ^^^^^^^^^^^^^^^^^^^^^ the trait `Foo` is not implemented for `[(); 0]`
+ |
+ = help: the following implementations were found:
+ <[(); 1] as Foo>
+note: required by `Foo::foo`
+ --> $DIR/unevaluated_fixed_size_array_len.rs:14:5
+ |
+LL | fn foo();
+ | ^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.