From 03ff28135c263a434bc0fa902d33c315434449a8 Mon Sep 17 00:00:00 2001 From: Luke Gallagher Date: Thu, 16 Apr 2015 22:48:31 +1000 Subject: Add feature gate tests As part of the audit for #22820 the following feature gate tests have been added: * `negate_unsigned` * `on_unimplemented` * `optin_builtin_traits` * `plugin` * `rustc_attrs` * `slice_patterns` --- .../compile-fail/feature-gate-negate-unsigned.rs | 17 ++++++++++++++ .../compile-fail/feature-gate-on-unimplemented.rs | 19 ++++++++++++++++ .../feature-gate-optin-builtin-traits.rs | 26 ++++++++++++++++++++++ src/test/compile-fail/feature-gate-plugin.rs | 16 +++++++++++++ src/test/compile-fail/feature-gate-rustc-attrs.rs | 21 +++++++++++++++++ .../compile-fail/feature-gate-slice-patterns.rs | 18 +++++++++++++++ 6 files changed, 117 insertions(+) create mode 100644 src/test/compile-fail/feature-gate-negate-unsigned.rs create mode 100644 src/test/compile-fail/feature-gate-on-unimplemented.rs create mode 100644 src/test/compile-fail/feature-gate-optin-builtin-traits.rs create mode 100644 src/test/compile-fail/feature-gate-plugin.rs create mode 100644 src/test/compile-fail/feature-gate-rustc-attrs.rs create mode 100644 src/test/compile-fail/feature-gate-slice-patterns.rs (limited to 'src/test') diff --git a/src/test/compile-fail/feature-gate-negate-unsigned.rs b/src/test/compile-fail/feature-gate-negate-unsigned.rs new file mode 100644 index 00000000000..7dc654fe1c8 --- /dev/null +++ b/src/test/compile-fail/feature-gate-negate-unsigned.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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that negating unsigned integers is gated by `negate_unsigned` feature +// gate + +const MAX: usize = -1; +//~^ ERROR unary negation of unsigned integers may be removed in the future + +fn main() {} diff --git a/src/test/compile-fail/feature-gate-on-unimplemented.rs b/src/test/compile-fail/feature-gate-on-unimplemented.rs new file mode 100644 index 00000000000..5d32bba6a76 --- /dev/null +++ b/src/test/compile-fail/feature-gate-on-unimplemented.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that `#[rustc_on_unimplemented]` is gated by `on_unimplemented` feature +// gate. + +#[rustc_on_unimplemented = "test error `{Self}` with `{Bar}`"] +//~^ ERROR the `#[rustc_on_unimplemented]` attribute is an experimental feature +trait Foo +{} + +fn main() {} diff --git a/src/test/compile-fail/feature-gate-optin-builtin-traits.rs b/src/test/compile-fail/feature-gate-optin-builtin-traits.rs new file mode 100644 index 00000000000..59d7473a741 --- /dev/null +++ b/src/test/compile-fail/feature-gate-optin-builtin-traits.rs @@ -0,0 +1,26 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that default and negative trait implementations are gated by +// `optin_builtin_traits` feature gate + +struct DummyStruct; + +trait DummyTrait { + fn dummy(&self) {} +} + +impl DummyTrait for .. {} +//~^ ERROR default trait implementations are experimental and possibly buggy + +impl !DummyTrait for DummyStruct {} +//~^ ERROR negative trait bounds are not yet fully implemented; use marker types for now + +fn main() {} diff --git a/src/test/compile-fail/feature-gate-plugin.rs b/src/test/compile-fail/feature-gate-plugin.rs new file mode 100644 index 00000000000..3b5d7626ce3 --- /dev/null +++ b/src/test/compile-fail/feature-gate-plugin.rs @@ -0,0 +1,16 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that `#![plugin(...)]` attribute is gated by `plugin` feature gate + +#![plugin(foo)] +//~^ ERROR compiler plugins are experimental and possibly buggy + +fn main() {} diff --git a/src/test/compile-fail/feature-gate-rustc-attrs.rs b/src/test/compile-fail/feature-gate-rustc-attrs.rs new file mode 100644 index 00000000000..dab44b655fc --- /dev/null +++ b/src/test/compile-fail/feature-gate-rustc-attrs.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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-tidy-linelength + +// Test that `#[rustc_*]` attributes are gated by `rustc_attrs` feature gate. + +#[rustc_variance] //~ ERROR the `#[rustc_variance]` attribute is an experimental feature +#[rustc_error] //~ ERROR the `#[rustc_error]` attribute is an experimental feature +#[rustc_move_fragments] //~ ERROR the `#[rustc_move_fragments]` attribute is an experimental feature +#[rustc_foo] +//~^ ERROR unless otherwise specified, attributes with the prefix `rustc_` are reserved for internal compiler diagnostics + +fn main() {} diff --git a/src/test/compile-fail/feature-gate-slice-patterns.rs b/src/test/compile-fail/feature-gate-slice-patterns.rs new file mode 100644 index 00000000000..625cb2d3515 --- /dev/null +++ b/src/test/compile-fail/feature-gate-slice-patterns.rs @@ -0,0 +1,18 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that slice pattern syntax is gated by `slice_patterns` feature gate + +fn main() { + let x = [1, 2, 3, 4, 5]; + match x { + [1, 2, xs..] => {} //~ ERROR slice pattern syntax is experimental + } +} -- cgit 1.4.1-3-g733a5 From 0cae31513b775261f8ac957637899ce2cc838bc8 Mon Sep 17 00:00:00 2001 From: Luke Gallagher Date: Fri, 24 Apr 2015 09:14:53 +1000 Subject: Add feature gate tests As part of the audit for #22820 the following feature gate tests have been added: * `rustc_diagnostic_macros` /cc #19624 --- .../feature-gate-rustc-diagnostic-macros.rs | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test/compile-fail/feature-gate-rustc-diagnostic-macros.rs (limited to 'src/test') diff --git a/src/test/compile-fail/feature-gate-rustc-diagnostic-macros.rs b/src/test/compile-fail/feature-gate-rustc-diagnostic-macros.rs new file mode 100644 index 00000000000..8286d833e8d --- /dev/null +++ b/src/test/compile-fail/feature-gate-rustc-diagnostic-macros.rs @@ -0,0 +1,23 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that diagnostic macros are gated by `rustc_diagnostic_macros` feature +// gate + +__register_diagnostic!(E0001); +//~^ ERROR macro undefined: '__register_diagnostic!' + +fn main() { + __diagnostic_used!(E0001); + //~^ ERROR macro undefined: '__diagnostic_used!' +} + +__build_diagnostic_array!(DIAGNOSTICS); +//~^ ERROR macro undefined: '__build_diagnostic_array!' -- cgit 1.4.1-3-g733a5 From f1b40d733eb65d5aed9fdd88f6e696a349f54723 Mon Sep 17 00:00:00 2001 From: Luke Gallagher Date: Mon, 20 Apr 2015 20:48:23 +1000 Subject: Remove duplicate feature gate tests As part of the audit for #22820 the following duplicate feature gate tests were removed: * `box_patterns` * `simd_ffi` These tests for `box_patterns` and `simd_ffi` were added in #23578, however there were existing tests in #20723 and #21233 respectively. --- src/test/compile-fail/gated-box-patterns.rs | 21 --------------------- src/test/compile-fail/gated-simd-ffi.rs | 27 --------------------------- 2 files changed, 48 deletions(-) delete mode 100644 src/test/compile-fail/gated-box-patterns.rs delete mode 100644 src/test/compile-fail/gated-simd-ffi.rs (limited to 'src/test') diff --git a/src/test/compile-fail/gated-box-patterns.rs b/src/test/compile-fail/gated-box-patterns.rs deleted file mode 100644 index d82d0dec72b..00000000000 --- a/src/test/compile-fail/gated-box-patterns.rs +++ /dev/null @@ -1,21 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Test that patterns including the box syntax are gated by `box_patterns` feature gate. - -fn main() { - let x = Box::new(1); - - match x { - box 1 => (), - //~^ box pattern syntax is experimental - _ => () - }; -} diff --git a/src/test/compile-fail/gated-simd-ffi.rs b/src/test/compile-fail/gated-simd-ffi.rs deleted file mode 100644 index 883e1be04b2..00000000000 --- a/src/test/compile-fail/gated-simd-ffi.rs +++ /dev/null @@ -1,27 +0,0 @@ -// 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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// Test that the use of smid types in the ffi is gated by `smid_ffi` feature gate. - -#![feature(simd)] - -#[repr(C)] -#[derive(Copy, Clone)] -#[simd] -pub struct f32x4(f32, f32, f32, f32); - -#[allow(dead_code)] -extern { - fn foo(x: f32x4); - //~^ ERROR use of SIMD type `f32x4` in FFI is highly experimental and may result in invalid code - //~| HELP add #![feature(simd_ffi)] to the crate attributes to enable -} - -fn main() {} -- cgit 1.4.1-3-g733a5