| // Test parsing for `default` where it doesn't belong. |
| // Specifically, we are interested in kinds of items or items in certain contexts. |
| // Also test item kinds in `extern` blocks and associated contexts which are not allowed there. |
| |
| fn main() {} |
| |
| #[cfg(FALSE)] |
| mod free_items { |
| default extern crate foo; //~ ERROR an extern crate cannot be `default` |
| default use foo; //~ ERROR a `use` import cannot be `default` |
| default static foo: u8; //~ ERROR a static item cannot be `default` |
| default const foo: u8; |
| default fn foo(); |
| default mod foo {} //~ ERROR a module cannot be `default` |
| default extern "C" {} //~ ERROR an extern block cannot be `default` |
| default type foo = u8; |
| default enum foo {} //~ ERROR an enum cannot be `default` |
| default struct foo {} //~ ERROR a struct cannot be `default` |
| default union foo {} //~ ERROR a union cannot be `default` |
| default trait foo {} //~ ERROR a trait cannot be `default` |
| default trait foo = Ord; //~ ERROR a trait alias cannot be `default` |
| default impl foo {} |
| default!(); |
| default::foo::bar!(); |
| default default!(); //~ ERROR an item macro invocation cannot be `default` |
| default default::foo::bar!(); //~ ERROR an item macro invocation cannot be `default` |
| default macro foo {} //~ ERROR a macro definition cannot be `default` |
| default macro_rules! foo {} //~ ERROR a macro definition cannot be `default` |
| } |
| |
| #[cfg(FALSE)] |
| extern "C" { |
| default extern crate foo; //~ ERROR an extern crate cannot be `default` |
| //~^ ERROR extern crate is not supported in `extern` blocks |
| default use foo; //~ ERROR a `use` import cannot be `default` |
| //~^ ERROR `use` import is not supported in `extern` blocks |
| default static foo: u8; //~ ERROR a static item cannot be `default` |
| default const foo: u8; |
| //~^ ERROR extern items cannot be `const` |
| default fn foo(); |
| default mod foo {} //~ ERROR a module cannot be `default` |
| //~^ ERROR module is not supported in `extern` blocks |
| default extern "C" {} //~ ERROR an extern block cannot be `default` |
| //~^ ERROR extern block is not supported in `extern` blocks |
| default type foo = u8; |
| default enum foo {} //~ ERROR an enum cannot be `default` |
| //~^ ERROR enum is not supported in `extern` blocks |
| default struct foo {} //~ ERROR a struct cannot be `default` |
| //~^ ERROR struct is not supported in `extern` blocks |
| default union foo {} //~ ERROR a union cannot be `default` |
| //~^ ERROR union is not supported in `extern` blocks |
| default trait foo {} //~ ERROR a trait cannot be `default` |
| //~^ ERROR trait is not supported in `extern` blocks |
| default trait foo = Ord; //~ ERROR a trait alias cannot be `default` |
| //~^ ERROR trait alias is not supported in `extern` blocks |
| default impl foo {} |
| //~^ ERROR implementation is not supported in `extern` blocks |
| default!(); |
| default::foo::bar!(); |
| default default!(); //~ ERROR an item macro invocation cannot be `default` |
| default default::foo::bar!(); //~ ERROR an item macro invocation cannot be `default` |
| default macro foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `extern` blocks |
| default macro_rules! foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `extern` blocks |
| } |
| |
| #[cfg(FALSE)] |
| impl S { |
| default extern crate foo; //~ ERROR an extern crate cannot be `default` |
| //~^ ERROR extern crate is not supported in `trait`s or `impl`s |
| default use foo; //~ ERROR a `use` import cannot be `default` |
| //~^ ERROR `use` import is not supported in `trait`s or `impl`s |
| default static foo: u8; //~ ERROR a static item cannot be `default` |
| //~^ ERROR associated `static` items are not allowed |
| default const foo: u8; |
| default fn foo(); |
| default mod foo {}//~ ERROR a module cannot be `default` |
| //~^ ERROR module is not supported in `trait`s or `impl`s |
| default extern "C" {} //~ ERROR an extern block cannot be `default` |
| //~^ ERROR extern block is not supported in `trait`s or `impl`s |
| default type foo = u8; |
| default enum foo {} //~ ERROR an enum cannot be `default` |
| //~^ ERROR enum is not supported in `trait`s or `impl`s |
| default struct foo {} //~ ERROR a struct cannot be `default` |
| //~^ ERROR struct is not supported in `trait`s or `impl`s |
| default union foo {} //~ ERROR a union cannot be `default` |
| //~^ ERROR union is not supported in `trait`s or `impl`s |
| default trait foo {} //~ ERROR a trait cannot be `default` |
| //~^ ERROR trait is not supported in `trait`s or `impl`s |
| default trait foo = Ord; //~ ERROR a trait alias cannot be `default` |
| //~^ ERROR trait alias is not supported in `trait`s or `impl`s |
| default impl foo {} |
| //~^ ERROR implementation is not supported in `trait`s or `impl`s |
| default!(); |
| default::foo::bar!(); |
| default default!(); //~ ERROR an item macro invocation cannot be `default` |
| default default::foo::bar!(); //~ ERROR an item macro invocation cannot be `default` |
| default macro foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `trait`s or `impl`s |
| default macro_rules! foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `trait`s or `impl`s |
| } |
| |
| #[cfg(FALSE)] |
| trait T { |
| default extern crate foo; //~ ERROR an extern crate cannot be `default` |
| //~^ ERROR extern crate is not supported in `trait`s or `impl`s |
| default use foo; //~ ERROR a `use` import cannot be `default` |
| //~^ ERROR `use` import is not supported in `trait`s or `impl`s |
| default static foo: u8; //~ ERROR a static item cannot be `default` |
| //~^ ERROR associated `static` items are not allowed |
| default const foo: u8; |
| default fn foo(); |
| default mod foo {}//~ ERROR a module cannot be `default` |
| //~^ ERROR module is not supported in `trait`s or `impl`s |
| default extern "C" {} //~ ERROR an extern block cannot be `default` |
| //~^ ERROR extern block is not supported in `trait`s or `impl`s |
| default type foo = u8; |
| default enum foo {} //~ ERROR an enum cannot be `default` |
| //~^ ERROR enum is not supported in `trait`s or `impl`s |
| default struct foo {} //~ ERROR a struct cannot be `default` |
| //~^ ERROR struct is not supported in `trait`s or `impl`s |
| default union foo {} //~ ERROR a union cannot be `default` |
| //~^ ERROR union is not supported in `trait`s or `impl`s |
| default trait foo {} //~ ERROR a trait cannot be `default` |
| //~^ ERROR trait is not supported in `trait`s or `impl`s |
| default trait foo = Ord; //~ ERROR a trait alias cannot be `default` |
| //~^ ERROR trait alias is not supported in `trait`s or `impl`s |
| default impl foo {} |
| //~^ ERROR implementation is not supported in `trait`s or `impl`s |
| default!(); |
| default::foo::bar!(); |
| default default!(); //~ ERROR an item macro invocation cannot be `default` |
| default default::foo::bar!(); //~ ERROR an item macro invocation cannot be `default` |
| default macro foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `trait`s or `impl`s |
| default macro_rules! foo {} //~ ERROR a macro definition cannot be `default` |
| //~^ ERROR macro definition is not supported in `trait`s or `impl`s |
| } |