rust/tests/ui/rfcs/rfc-2565-param-attrs/param-attrs-cfg.rs
许杰友 Jieyou Xu (Joe) edafbaffb2
Adjust UI tests for unit_bindings
- Either explicitly annotate `let x: () = expr;` where `x` has unit
  type, or remove the unit binding to leave only `expr;` instead.
- Fix disjoint-capture-in-same-closure test
2023-06-12 20:24:48 +08:00

122 lines
3.3 KiB
Rust

// compile-flags: --cfg something
// edition:2018
#![feature(async_closure)]
#![deny(unused_variables)]
extern "C" {
fn ffi(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
#[cfg_attr(something, cfg(nothing))] c: i32,
#[cfg_attr(nothing, cfg(nothing))] ...
);
}
type FnType = fn(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
#[cfg_attr(nothing, cfg(nothing))] c: i32,
#[cfg_attr(something, cfg(nothing))] d: i32,
);
async fn foo_async(
#[cfg(something)] a: i32,
//~^ ERROR unused variable: `a`
#[cfg(nothing)] b: i32,
) {}
fn foo(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
struct RefStruct {}
impl RefStruct {
async fn bar_async(
&self,
#[cfg(something)] a: i32,
//~^ ERROR unused variable: `a`
#[cfg(nothing)] b: i32,
) {}
fn bar(
&self,
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
fn issue_64682_associated_fn(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
}
trait RefTrait {
fn bar(
&self,
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
fn issue_64682_associated_fn(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
}
impl RefTrait for RefStruct {
fn bar(
&self,
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
fn issue_64682_associated_fn(
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
) {}
}
fn main() {
let _: unsafe extern "C" fn(_, ...) = ffi;
let _: fn(_, _) = foo;
let _: FnType = |_, _| {};
let a = async move |
#[cfg(something)] a: i32,
//~^ ERROR unused variable: `a`
#[cfg(nothing)] b: i32,
| {};
let c = |
#[cfg(nothing)] a: i32,
#[cfg(something)] b: i32,
//~^ ERROR unused variable: `b`
#[cfg_attr(nothing, cfg(nothing))] c: i32,
//~^ ERROR unused variable: `c`
#[cfg_attr(something, cfg(nothing))] d: i32,
| {};
a(1);
c(1, 2);
}