diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2016-04-16 21:53:40 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2016-04-24 20:59:44 +0300 |
| commit | 923001ebb7980ec425e6df561575bccaf5f90240 (patch) | |
| tree | ce114d2be74aa23d512adf9e1420f468ec26cca9 | |
| parent | 8dbab5121e214a08690eefdaa3ee45bb2d1bbd5e (diff) | |
| download | rust-923001ebb7980ec425e6df561575bccaf5f90240.tar.gz rust-923001ebb7980ec425e6df561575bccaf5f90240.zip | |
Add tests
| -rw-r--r-- | src/test/compile-fail/qualified-path-params-2.rs | 31 | ||||
| -rw-r--r-- | src/test/compile-fail/qualified-path-params.rs | 33 | ||||
| -rw-r--r-- | src/test/compile-fail/use-keyword.rs | 23 | ||||
| -rw-r--r-- | src/test/run-pass/use-keyword-2.rs | 30 |
4 files changed, 117 insertions, 0 deletions
diff --git a/src/test/compile-fail/qualified-path-params-2.rs b/src/test/compile-fail/qualified-path-params-2.rs new file mode 100644 index 00000000000..5c661bfcdc0 --- /dev/null +++ b/src/test/compile-fail/qualified-path-params-2.rs @@ -0,0 +1,31 @@ +// Copyright 2016 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. + +// Check that qualified paths with type parameters +// fail during type checking and not during parsing + +struct S; + +trait Tr { + type A; +} + +impl Tr for S { + type A = S; +} + +impl S { + fn f<T>() {} +} + +type A = <S as Tr>::A::f<u8>; //~ ERROR type parameters are not allowed on this type +//~^ ERROR ambiguous associated type; specify the type using the syntax `<<S as Tr>::A as Trait>::f` + +fn main() {} diff --git a/src/test/compile-fail/qualified-path-params.rs b/src/test/compile-fail/qualified-path-params.rs new file mode 100644 index 00000000000..002080f4cb4 --- /dev/null +++ b/src/test/compile-fail/qualified-path-params.rs @@ -0,0 +1,33 @@ +// Copyright 2016 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. + +// Check that qualified paths with type parameters +// fail during type checking and not during parsing + +struct S; + +trait Tr { + type A; +} + +impl Tr for S { + type A = S; +} + +impl S { + fn f<T>() {} +} + +fn main() { + match 10 { + <S as Tr>::A::f::<u8> => {} //~ ERROR `f` is not an associated const + 0 ... <S as Tr>::A::f::<u8> => {} //~ ERROR only char and numeric types are allowed in range + } +} diff --git a/src/test/compile-fail/use-keyword.rs b/src/test/compile-fail/use-keyword.rs new file mode 100644 index 00000000000..040db025567 --- /dev/null +++ b/src/test/compile-fail/use-keyword.rs @@ -0,0 +1,23 @@ +// Copyright 2016 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. + +// Check that imports with nakes super and self don't fail during parsing +// FIXME: this shouldn't fail during name resolution either + +mod a { + mod b { + use self as A; //~ ERROR `self` imports are only allowed within a { } list + //~^ ERROR unresolved import `self`. There is no `self` in the crate root + use super as B; //~ ERROR unresolved import `super`. There is no `super` in the crate root + use super::{self as C}; //~ERROR unresolved import `super`. There is no `super` in the crate + } +} + +fn main() {} diff --git a/src/test/run-pass/use-keyword-2.rs b/src/test/run-pass/use-keyword-2.rs new file mode 100644 index 00000000000..60016f59594 --- /dev/null +++ b/src/test/run-pass/use-keyword-2.rs @@ -0,0 +1,30 @@ +// Copyright 2016 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 A; + +mod test { + pub use super :: A; + + pub use self :: A as B; +} + +impl A { + fn f() {} + fn g() { + Self :: f() + } +} + +fn main() { + let a: A = test::A; + let b: A = test::B; + let c: () = A::g(); +} |
