2020-01-29 17:18:54 -06:00
|
|
|
// Ensures that all `fn` forms can have all the function qualifiers syntactically.
|
|
|
|
|
|
|
|
// check-pass
|
|
|
|
// edition:2018
|
|
|
|
|
|
|
|
#![feature(const_extern_fn)]
|
|
|
|
//^ FIXME(Centril): move check to ast_validation.
|
|
|
|
|
|
|
|
fn main() {}
|
|
|
|
|
|
|
|
#[cfg(FALSE)]
|
|
|
|
fn syntax() {
|
|
|
|
async fn f();
|
|
|
|
unsafe fn f();
|
|
|
|
const fn f();
|
|
|
|
extern "C" fn f();
|
|
|
|
const /* async */ unsafe extern "C" fn f();
|
|
|
|
//^ FIXME(Centril): `async` should be legal syntactically.
|
|
|
|
|
|
|
|
trait X {
|
|
|
|
async fn f();
|
|
|
|
unsafe fn f();
|
|
|
|
const fn f();
|
|
|
|
extern "C" fn f();
|
2020-01-30 01:31:31 -06:00
|
|
|
const async unsafe extern "C" fn f();
|
2020-01-29 17:18:54 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
impl X for Y {
|
|
|
|
async fn f();
|
|
|
|
unsafe fn f();
|
|
|
|
const fn f();
|
|
|
|
extern "C" fn f();
|
2020-01-30 01:31:31 -06:00
|
|
|
const async unsafe extern "C" fn f();
|
2020-01-29 17:18:54 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
impl Y {
|
|
|
|
async fn f();
|
|
|
|
unsafe fn f();
|
|
|
|
const fn f();
|
|
|
|
extern "C" fn f();
|
2020-01-30 01:31:31 -06:00
|
|
|
const async unsafe extern "C" fn f();
|
2020-01-29 17:18:54 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
extern {
|
|
|
|
async fn f();
|
|
|
|
unsafe fn f();
|
|
|
|
const fn f();
|
|
|
|
extern "C" fn f();
|
2020-01-30 01:31:31 -06:00
|
|
|
const async unsafe extern "C" fn f();
|
2020-01-29 17:18:54 -06:00
|
|
|
}
|
|
|
|
}
|