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;
26 a::try_foo(foo2); //~ ERROR mismatched types
28 //~^^ NOTE Perhaps two different versions of crate `main`
29 a::try_bar(bar2); //~ ERROR mismatched types
31 //~^^ NOTE Perhaps two different versions of crate `main`