]> git.lizzy.rs Git - rust.git/blob - src/test/compile-fail/type-mismatch-same-crate-name.rs
69ef31e90e47caebfbd455baeeda0e2a56d58ac6
[rust.git] / src / test / compile-fail / type-mismatch-same-crate-name.rs
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.
4 //
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.
10
11 // aux-build:crate_a1.rs
12 // aux-build:crate_a2.rs
13
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.
20
21 fn main() {
22     let foo2 = {extern crate crate_a2 as a; a::Foo};
23     let bar2 = {extern crate crate_a2 as a; a::bar()};
24     {
25         extern crate crate_a1 as a;
26         a::try_foo(foo2); //~ ERROR mismatched types
27                           //~^ HELP run
28                           //~^^ NOTE Perhaps two different versions of crate `main`
29         a::try_bar(bar2); //~ ERROR mismatched types
30                           //~^ HELP run
31                           //~^^ NOTE Perhaps two different versions of crate `main`
32     }
33 }