diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-09-09 00:34:55 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-09-09 00:34:55 +0530 |
| commit | 00e70051dc6fc65eba67b9f7e2368adfdf08f0a9 (patch) | |
| tree | 25acec30ca516ee5d6d29e50945e6eaabc0ea67f /src | |
| parent | a3f05f6acec1de07d507f2e26af57522c2335ed7 (diff) | |
| download | rust-00e70051dc6fc65eba67b9f7e2368adfdf08f0a9.tar.gz rust-00e70051dc6fc65eba67b9f7e2368adfdf08f0a9.zip | |
Add test
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/auxiliary/crate_a1.rs | 21 | ||||
| -rw-r--r-- | src/test/auxiliary/crate_a2.rs | 17 | ||||
| -rw-r--r-- | src/test/compile-fail/type-mismatch-same-crate-name.rs | 33 |
3 files changed, 71 insertions, 0 deletions
diff --git a/src/test/auxiliary/crate_a1.rs b/src/test/auxiliary/crate_a1.rs new file mode 100644 index 00000000000..70f7cac94de --- /dev/null +++ b/src/test/auxiliary/crate_a1.rs @@ -0,0 +1,21 @@ +// Copyright 2015 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. + +pub struct Foo; + +pub trait Bar{} + +pub fn bar() -> Box<Bar> { + unimplemented!() +} + + +pub fn try_foo(x: Foo){} +pub fn try_bar(x: Box<Bar>){} diff --git a/src/test/auxiliary/crate_a2.rs b/src/test/auxiliary/crate_a2.rs new file mode 100644 index 00000000000..d801f25ba2e --- /dev/null +++ b/src/test/auxiliary/crate_a2.rs @@ -0,0 +1,17 @@ +// Copyright 2015 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. + +pub struct Foo; + +pub trait Bar{} + +pub fn bar() -> Box<Bar> { + unimplemented!() +} diff --git a/src/test/compile-fail/type-mismatch-same-crate-name.rs b/src/test/compile-fail/type-mismatch-same-crate-name.rs new file mode 100644 index 00000000000..69ef31e90e4 --- /dev/null +++ b/src/test/compile-fail/type-mismatch-same-crate-name.rs @@ -0,0 +1,33 @@ +// Copyright 2014 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. + +// aux-build:crate_a1.rs +// aux-build:crate_a2.rs + +// This tests the extra note reported when a type error deals with +// seemingly identical types. +// The main use case of this error is when there are two crates +// (generally different versions of the same crate) with the same name +// causing a type mismatch. Here, we simulate that error using block-scoped +// aliased `extern crate` declarations. + +fn main() { + let foo2 = {extern crate crate_a2 as a; a::Foo}; + let bar2 = {extern crate crate_a2 as a; a::bar()}; + { + extern crate crate_a1 as a; + a::try_foo(foo2); //~ ERROR mismatched types + //~^ HELP run + //~^^ NOTE Perhaps two different versions of crate `main` + a::try_bar(bar2); //~ ERROR mismatched types + //~^ HELP run + //~^^ NOTE Perhaps two different versions of crate `main` + } +} |
