From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/internal/internal-unstable.rs | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/test/ui/internal/internal-unstable.rs (limited to 'src/test/ui/internal/internal-unstable.rs') diff --git a/src/test/ui/internal/internal-unstable.rs b/src/test/ui/internal/internal-unstable.rs new file mode 100644 index 000000000..b8987d3e1 --- /dev/null +++ b/src/test/ui/internal/internal-unstable.rs @@ -0,0 +1,56 @@ +// aux-build:internal_unstable.rs + +#![feature(allow_internal_unstable)] +#[allow(dead_code)] + +#[macro_use] +extern crate internal_unstable; + +struct Baz { + #[allow_internal_unstable] + //^ WARN `#[allow_internal_unstable]` is ignored on struct fields and match arms + baz: u8, +} + +macro_rules! foo { + ($e: expr, $f: expr) => {{ + $e; + $f; + internal_unstable::unstable(); //~ ERROR use of unstable + }} +} + +#[allow_internal_unstable(function)] +macro_rules! bar { + ($e: expr) => {{ + foo!($e, + internal_unstable::unstable()); + internal_unstable::unstable(); + }} +} + +fn main() { + // ok, the instability is contained. + call_unstable_allow!(); + construct_unstable_allow!(0); + |x: internal_unstable::Foo| { call_method_allow!(x) }; + |x: internal_unstable::Bar| { access_field_allow!(x) }; + |x: internal_unstable::Bar| { access_field_allow2!(x) }; // regression test for #77088 + + // bad. + pass_through_allow!(internal_unstable::unstable()); //~ ERROR use of unstable + + pass_through_noallow!(internal_unstable::unstable()); //~ ERROR use of unstable + + + + println!("{:?}", internal_unstable::unstable()); //~ ERROR use of unstable + + bar!(internal_unstable::unstable()); //~ ERROR use of unstable + + match true { + #[allow_internal_unstable] + //^ WARN `#[allow_internal_unstable]` is ignored on struct fields and match arms + _ => {} + } +} -- cgit v1.2.3