2018-10-04 17:31:35 +04:00
|
|
|
// normalize-stderr-test: "existed:.*\(" -> "existed: $$FILE_NOT_FOUND_MSG ("
|
2018-08-10 12:27:46 +02:00
|
|
|
|
2014-01-18 01:53:10 +11:00
|
|
|
// test that errors in a (selection) of macros don't kill compilation
|
|
|
|
// immediately, so that we get more errors listed at a time.
|
|
|
|
|
2014-04-04 10:24:21 +11:00
|
|
|
#![feature(trace_macros, concat_idents)]
|
2021-07-17 01:05:57 -04:00
|
|
|
#![feature(stmt_expr_attributes, arbitrary_enum_discriminant)]
|
2014-01-18 01:53:10 +11:00
|
|
|
|
2021-12-11 00:11:26 +00:00
|
|
|
use std::arch::asm;
|
|
|
|
|
2021-07-17 01:05:57 -04:00
|
|
|
#[derive(Default)]
|
|
|
|
struct DefaultInnerAttrStruct {
|
|
|
|
#[default] //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
foo: (),
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
struct DefaultInnerAttrTupleStruct(#[default] ());
|
|
|
|
//~^ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
#[default] //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
struct DefaultOuterAttrStruct {}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
#[default] //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
enum DefaultOuterAttrEnum {
|
|
|
|
#[default]
|
|
|
|
Foo,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[rustfmt::skip] // needs some work to handle this case
|
|
|
|
#[repr(u8)]
|
|
|
|
#[derive(Default)]
|
|
|
|
enum AttrOnInnerExpression {
|
|
|
|
Foo = #[default] 0, //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
Bar([u8; #[default] 1]), //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
|
|
|
#[default]
|
|
|
|
Baz,
|
|
|
|
}
|
|
|
|
|
2021-06-29 20:22:52 -04:00
|
|
|
#[derive(Default)] //~ ERROR no default declared
|
|
|
|
enum NoDeclaredDefault {
|
|
|
|
Foo,
|
|
|
|
Bar,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)] //~ ERROR multiple declared defaults
|
|
|
|
enum MultipleDefaults {
|
|
|
|
#[default]
|
|
|
|
Foo,
|
|
|
|
#[default]
|
|
|
|
Bar,
|
|
|
|
#[default]
|
|
|
|
Baz,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
enum ExtraDeriveTokens {
|
|
|
|
#[default = 1] //~ ERROR `#[default]` attribute does not accept a value
|
|
|
|
Foo,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
enum TwoDefaultAttrs {
|
|
|
|
#[default]
|
|
|
|
#[default]
|
|
|
|
Foo, //~ERROR multiple `#[default]` attributes
|
|
|
|
Bar,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
enum ManyDefaultAttrs {
|
|
|
|
#[default]
|
|
|
|
#[default]
|
|
|
|
#[default]
|
|
|
|
#[default]
|
|
|
|
Foo, //~ERROR multiple `#[default]` attributes
|
|
|
|
Bar,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
enum DefaultHasFields {
|
|
|
|
#[default]
|
2021-07-17 01:05:57 -04:00
|
|
|
Foo {}, //~ ERROR the `#[default]` attribute may only be used on unit enum variants
|
2021-06-29 20:22:52 -04:00
|
|
|
Bar,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
enum NonExhaustiveDefault {
|
|
|
|
#[default]
|
|
|
|
#[non_exhaustive]
|
|
|
|
Foo, //~ ERROR default variant must be exhaustive
|
|
|
|
Bar,
|
|
|
|
}
|
2014-01-18 01:53:10 +11:00
|
|
|
|
|
|
|
fn main() {
|
2020-02-20 09:19:48 +00:00
|
|
|
asm!(invalid); //~ ERROR
|
2020-02-14 16:54:40 +00:00
|
|
|
llvm_asm!(invalid); //~ ERROR
|
2014-01-18 01:53:10 +11:00
|
|
|
|
|
|
|
concat_idents!("not", "idents"); //~ ERROR
|
|
|
|
|
|
|
|
option_env!(invalid); //~ ERROR
|
|
|
|
env!(invalid); //~ ERROR
|
|
|
|
env!(foo, abr, baz); //~ ERROR
|
|
|
|
env!("RUST_HOPEFULLY_THIS_DOESNT_EXIST"); //~ ERROR
|
|
|
|
|
|
|
|
format!(invalid); //~ ERROR
|
|
|
|
|
|
|
|
include!(invalid); //~ ERROR
|
|
|
|
|
|
|
|
include_str!(invalid); //~ ERROR
|
|
|
|
include_str!("i'd be quite surprised if a file with this name existed"); //~ ERROR
|
2014-12-22 10:57:09 +13:00
|
|
|
include_bytes!(invalid); //~ ERROR
|
|
|
|
include_bytes!("i'd be quite surprised if a file with this name existed"); //~ ERROR
|
2014-01-18 01:53:10 +11:00
|
|
|
|
|
|
|
trace_macros!(invalid); //~ ERROR
|
|
|
|
}
|