about summary refs log tree commit diff
path: root/src/libsyntax/mut_visit.rs
AgeCommit message (Collapse)AuthorLines
2020-02-29Move directory `libsyntax` -> `librustc_ast`Vadim Petrochenkov-1286/+0
2020-02-24syntax: Remove `Nt(Impl,Trait,Foreign)Item`Vadim Petrochenkov-13/+0
2020-02-24parse/ast: move `Defaultness` into variants.Mazdak Farrokhzad-10/+9
2020-02-24ast: add `Defaultness` to `Item`, making `AssocItem` an alias.Mazdak Farrokhzad-4/+4
2020-02-22parse: allow `type Foo: Ord` syntactically.Mazdak Farrokhzad-2/+3
2020-02-18Rollup merge of #69194 - Centril:assoc-extern-fuse, r=petrochenkovMazdak Farrokhzad-29/+22
parse: fuse associated and extern items up to defaultness Language changes: - The grammar of extern `type` aliases is unified with associated ones, and becomes: ```rust TypeItem = "type" ident generics {":" bounds}? where_clause {"=" type}? ";" ; ``` Semantic restrictions (`ast_validation`) are added to forbid any parameters in `generics`, any bounds in `bounds`, and any predicates in `where_clause`, as well as the presence of a type expression (`= u8`). (Work still remains to fuse this with free `type` aliases, but this can be done later.) - The grammar of constants and static items (free, associated, and extern) now permits the absence of an expression, and becomes: ```rust GlobalItem = {"const" {ident | "_"} | "static" "mut"? ident} {"=" expr}? ";" ; ``` - A semantic restriction is added to enforce the presence of the expression (the body). - A semantic restriction is added to reject `const _` in associated contexts. Together, these changes allow us to fuse the grammar of associated items and extern items up to `default`ness which is the main goal of the PR. ----------------------- We are now very close to fully fusing the entirely of item parsing and their ASTs. To progress further, we must make a decision: should we parse e.g. `default use foo::bar;` and whatnot? Accepting that is likely easiest from a parsing perspective, as it does not require using look-ahead, but it is perhaps not too onerous to only accept it for `fn`s (and all their various qualifiers), `const`s, `static`s, and `type`s. r? @petrochenkov
2020-02-17Rename `FunctionRetTy` to `FnRetTy`Yuki Okushi-3/+3
2020-02-15Record proc macro harness order for use during metadata deserializationAaron Hill-3/+3
Fixes #68690 When we generate the proc macro harness, we now explicitly recorder the order in which we generate entries. We then use this ordering data to deserialize the correct proc-macro-data from the crate metadata.
2020-02-15visit: unify extern & assoc item visitingMazdak Farrokhzad-25/+14
2020-02-15parse extern constsMazdak Farrokhzad-1/+1
2020-02-15parse associated statics.Mazdak Farrokhzad-1/+1
2020-02-15ast/parser: fuse `static` & `const` grammars in all contexts.Mazdak Farrokhzad-1/+4
2020-02-15ast: make `= <expr>;` optional in free statics/consts.Mazdak Farrokhzad-6/+2
2020-02-15ast: normalize `ForeignItemKind::Ty` & `AssocItemKind::TyAlias`.Mazdak Farrokhzad-1/+5
2020-02-15ast: move Generics into AssocItemKindsMazdak Farrokhzad-4/+5
2020-02-13IsAsync -> enum Async { Yes { span: Span, .. }, No }Mazdak Farrokhzad-5/+5
use new span for better diagnostics.
2020-02-05parser: merge `fn` grammars wrt. bodies & headersMazdak Farrokhzad-3/+4
also refactor `FnKind` and `visit_assoc_item` visitors
2020-01-30Use `P` for `NtMeta`.Nicholas Nethercote-1/+2
This commit reduces the size of `Nonterminal` from a 72 bytes to 40 bytes (on x86-64).
2020-01-30Use `P` for `NtTraitItem`, `NtImplItem`, and `NtForeignItem`.Nicholas Nethercote-9/+9
This commit reduces the size of `Nonterminal` from a whopping 240 bytes to 72 bytes (on x86-64), which gets it below the `memcpy` threshold. It also removes some impedance mismatches with `Annotatable`, which already uses `P` for these variants.
2020-01-20Revert "Add a `constness` field to `ast::TraitRef`"Dylan MacKenzie-2/+1
This reverts commit fd4a6a12136c5b5d6bce4081e95890df1fd1febd.
2020-01-19Add `constness` field to `ast::ItemKind::Impl`Dylan MacKenzie-0/+1
2020-01-17Use named fields for `ast::ItemKind::Impl`Dylan MacKenzie-3/+11
2020-01-10Introduce `#![feature(half_open_range_patterns)]`.Mazdak Farrokhzad-2/+2
This feature adds `X..`, `..X`, and `..=X` patterns.
2020-01-09Add a `constness` field to `ast::TraitRef`Dylan MacKenzie-1/+2
This is used for both the `?const` syntax in bounds as well as the `impl const Trait` syntax. I also considered handling these separately by adding a variant of `TraitBoundModifier` and a field to `ItemKind::Impl`, but this approach was less intrusive.
2020-01-02Normalize `syntax::source_map` imports.Mazdak Farrokhzad-3/+3
2020-01-01Rename `syntax_pos` to `rustc_span` in source codeVadim Petrochenkov-1/+1
2019-12-23Add span information to `ExprKind::Assign`varkor-1/+1
2019-12-22Format the worldMark Rousskov-100/+112
2019-12-20introduce 'type AttrVec'Mazdak Farrokhzad-2/+1
2019-12-12`AssocImplKind::{Method -> Fn}`.Mazdak Farrokhzad-1/+1
2019-12-12Unify associated item mut visitors.Mazdak Farrokhzad-43/+11
2019-12-12parse: refactor fun ret ty & param tyMazdak Farrokhzad-2/+6
2019-12-12Unify `{Trait,Impl}ItemKind::TyAlias` structures.Mazdak Farrokhzad-1/+4
2019-12-12`TraitItemKind::Type` -> `TraitItemKind::TyAlias`.Mazdak Farrokhzad-1/+1
2019-12-12Use `Option` in `ImplItemKind::Method`.Mazdak Farrokhzad-1/+1
2019-12-12Use `Option` in `ImplItemKind::Const`.Mazdak Farrokhzad-1/+1
2019-12-12Alias `TraitItem` & `ImplItem`.Mazdak Farrokhzad-1/+2
Allow defaultness on trait items syntactically.
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