]> git.lizzy.rs Git - rust.git/commit - src/tools/miri
Rollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkov
authorMazdak Farrokhzad <twingoow@gmail.com>
Fri, 22 Nov 2019 18:57:41 +0000 (19:57 +0100)
committerGitHub <noreply@github.com>
Fri, 22 Nov 2019 18:57:41 +0000 (19:57 +0100)
commit8cba0a9073f740791c5d18148d649c61aaf7d6c7
tree1906720783e10429ac031f9dab006757720840eb
parent083b5a0a1bb3b2ee0873697ebf37e88d85faa3e5
parent9a88364525a4660dbd6f6a371b3b25199f5bbe4a
Rollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkov

*Syntactically* permit visibilities on trait items & enum variants

Fixes #65041

Suppose we have `$vis trait_item` or `$vis enum_variant` and `$vis` is a `:vis` macro fragment. Before this PR, this would fail to parse. This is now instead allowed as per language team consensus in https://github.com/rust-lang/rust/issues/65041#issuecomment-538105286. (See added tests for elaboration.)

Moreover, we now also permit visibility modifiers on trait items & enum variants *syntactically* but reject them with semantic checks (in `ast_validation`):

```rust
#[cfg(FALSE)]
trait Foo { pub fn bar(); } // OK

#[cfg(FALSE)]
enum E { pub U } // OK
```
src/librustc_parse/parser/diagnostics.rs
src/librustc_parse/parser/item.rs
src/librustc_parse/parser/mod.rs
src/librustc_passes/ast_validation.rs
src/libsyntax/ast.rs
src/libsyntax/mut_visit.rs
src/libsyntax/visit.rs