summary refs log tree commit diff
path: root/src/libsyntax/mut_visit.rs
AgeCommit message (Collapse)AuthorLines
2019-12-07Make `ForeignItem` an alias of `Item`.Mazdak Farrokhzad-1/+1
2019-12-02syntax: Use `ast::MacArgs` for macro definitionsVadim Petrochenkov-2/+2
2019-12-02syntax: Use `ast::MacArgs` for attributesVadim Petrochenkov-4/+4
2019-12-02syntax: Remove redundant span from `ast::Mac`Vadim Petrochenkov-2/+1
Also remove a couple of redundant `visit_mac` asserts
2019-12-02syntax: Introduce a struct `MacArgs` for macro argumentsVadim Petrochenkov-2/+22
2019-11-24Add raw address of expressions to the AST and HIRMatthew Jasper-1/+1
2019-11-22Rollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkovMazdak Farrokhzad-22/+24
*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 ```
2019-11-16ast: Keep `extern` qualifiers in functions more preciselyVadim Petrochenkov-2/+2
2019-11-14TAIT: remove `OpaqueTy` in AST.Mazdak Farrokhzad-5/+0
2019-11-11syntactically allow visibility on trait item & enum variantMazdak Farrokhzad-22/+24
2019-11-10move config.rs to libsyntax_expandMazdak Farrokhzad-3/+0
2019-11-08ast::ItemKind::Fn: use ast::FnSigMazdak Farrokhzad-6/+5
2019-11-08ast::MethodSig -> ast::FnSigMazdak Farrokhzad-1/+1
2019-11-07syntax::parser::token -> syntax::tokenMazdak Farrokhzad-1/+1
2019-11-06Make doc comments cheaper with `AttrKind`.Nicholas Nethercote-4/+8
`AttrKind` is a new type with two variants, `Normal` and `DocComment`. It's a big performance win (over 10% in some cases) because `DocComment` lets doc comments (which are common) be represented very cheaply. `Attribute` gets some new helper methods to ease the transition: - `has_name()`: check if the attribute name matches a single `Symbol`; for `DocComment` variants it succeeds if the symbol is `sym::doc`. - `is_doc_comment()`: check if it has a `DocComment` kind. - `{get,unwrap}_normal_item()`: extract the item from a `Normal` variant; panic otherwise. Fixes #60935.
2019-10-14Remove the `Option` in `TokenStream`.Nicholas Nethercote-4/+2
It means an allocation is required to create an empty `TokenStream`, but all other operations are simpler and marginally faster due to not having to check for `None`. Overall it simplifies the code for a negligible performance effect. The commit also removes `TokenStream::empty` by implementing `Default`, which is now possible.
2019-09-30syntax: Support modern attribute syntax in the `meta` matcherVadim Petrochenkov-1/+4
2019-09-30syntax: Split `ast::Attribute` into container and inner partsVadim Petrochenkov-1/+2
2019-09-28syntax: don't keep a redundant c_variadic flag in the AST.Eduard-Mihai Burtescu-1/+1
2019-09-26Rename `MetaItem.node` to `MetaItem.kind`varkor-2/+2
2019-09-26Rename `ForeignItem.node` to `ForeignItem.kind`varkor-2/+2
2019-09-26Rename `Item.node` to `Item.kind`varkor-5/+5
2019-09-26Rename `Stmt.node` to `Stmt.kind`varkor-5/+5
2019-09-26Rename `Ty.node` to `Ty.kind`varkor-2/+2
2019-09-26Rename `TraitItem.node` to `TraitItem.kind`varkor-2/+2
2019-09-26Rename `ImplItem.node` to `ImplItem.kind`varkor-2/+2
2019-09-26Rename `Pat.node` to `Pat.kind`varkor-2/+2
2019-09-26Rename `Expr.node` to `Expr.kind`varkor-2/+2
For both `ast::Expr` and `hir::Expr`.
2019-09-09Resolve attributes in several placesCaio-6/+7
Arm, Field, FieldPat, GenericParam, Param, StructField and Variant
2019-09-07Aggregation of cosmetic changes made during work on REPL PRs: libsyntaxAlexander Regueiro-14/+14
2019-09-05or-patterns: syntax: adjust `visit` and `mut_visit`.Mazdak Farrokhzad-8/+5
2019-08-27Cleanup: Consistently use `Param` instead of `Arg` #62426Kevin Per-6/+6
2019-08-24Modifies how Arg, Arm, Field, FieldPattern and Variant are visitedCaio-49/+77
Part of the necessary work to accomplish #63468.
2019-08-18Auto merge of #61708 - dlrobertson:or-patterns-0, r=centrilbors-2/+3
Initial implementation of or-patterns An incomplete implementation of or-patterns (e.g. `Some(0 | 1)` as a pattern). This patch set aims to implement initial parsing of `or-patterns`. Related to: #54883 CC @alexreg @varkor r? @Centril
2019-08-17Initial implementation of or patternsvarkor-2/+3
2019-08-17Remove SyntaxContext from {ast, hir}::{GlobalAsm, InlineAsm}Matthew Jasper-1/+1
We now store it in the `Span` of the expression or item.
2019-08-15Remove `Spanned` from `{ast,hir}::FieldPat`Vadim Petrochenkov-4/+1
2019-08-15Remove `Spanned` from `ast::Mac`Vadim Petrochenkov-2/+2
2019-08-14Rollup merge of #63543 - c410-f3r:variant, r=c410-f3rMazdak Farrokhzad-1/+1
Merge Variant and Variant_ Extracted from #63468.
2019-08-14Merge Variant and Variant_Caio-1/+1
2019-08-13Add NodeId for Arm, Field and FieldPatCaio-3/+9
2019-08-04Auto merge of #63213 - varkor:itemkind-tyalias, r=Centrilbors-2/+2
Rename `ItemKind::Ty` to `ItemKind::TyAlias` The current name is not entirely clear without context and `TyAlias` is consistent with `ItemKind::TraitAlias`.
2019-08-04Rename `ItemImplKind::Type` to `ItemImplKind::TyAlias`varkor-1/+1
2019-08-04Rename `ItemKind::Ty` to `ItemKind::TyAlias`varkor-1/+1
2019-08-04Auto merge of #62816 - estebank:type-ascription-macros, r=petrochenkovbors-1/+1
Point at type ascription before macro invocation on expansion parse error Fix https://github.com/rust-lang/rust/issues/47666. Follow up to https://github.com/rust-lang/rust/pull/62791. r? @petrochenkov
2019-08-03Auto merge of #63180 - varkor:trait-alias-impl-trait, r=Centrilbors-2/+2
Change opaque type syntax from `existential type` to type alias `impl Trait` This implements a new feature gate `type_alias_impl_trait` (this is slightly different from the originally proposed feature name, but matches what has been used in discussion since), deprecating the old `existential_types` feature. The syntax for opaque types has been changed. In addition, the "existential" terminology has been replaced with "opaque", as per previous discussion and the RFC. This makes partial progress towards implementing https://github.com/rust-lang/rust/issues/63063. r? @Centril
2019-08-02Replace "existential" by "opaque"varkor-2/+2
2019-08-02libsyntax: Unconfigure tests during normal buildVadim Petrochenkov-74/+3
2019-07-30Point at type ascription before macro invocation on expansion parse errorEsteban Küber-1/+1
2019-07-30Unsupport the await!(..) macro.Mazdak Farrokhzad-1/+1