1 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 // aux-build:crate_a1.rs
12 // aux-build:crate_a2.rs
14 // This tests the extra note reported when a type error deals with
15 // seemingly identical types.
16 // The main use case of this error is when there are two crates
17 // (generally different versions of the same crate) with the same name
18 // causing a type mismatch. Here, we simulate that error using block-scoped
19 // aliased `extern crate` declarations.
22 let foo2 = {extern crate crate_a2 as a; a::Foo};
23 let bar2 = {extern crate crate_a2 as a; a::bar()};
25 extern crate crate_a1 as a;
27 //~^ ERROR mismatched types
28 //~| Perhaps two different versions of crate `crate_a1`
29 //~| expected struct `main::a::Foo`
30 //~| expected type `main::a::Foo`
31 //~| found type `main::a::Foo`
33 //~^ ERROR mismatched types
34 //~| Perhaps two different versions of crate `crate_a1`
35 //~| expected trait `main::a::Bar`
36 //~| expected type `std::boxed::Box<(dyn main::a::Bar + 'static)>`
37 //~| found type `std::boxed::Box<dyn main::a::Bar>`