// 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 }