about summary refs log tree commit diff
path: root/src/librustc_parse/parser
AgeCommit message (Collapse)AuthorLines
2020-03-18extract error_on_circular_moduleMazdak Farrokhzad-9/+19
2020-03-18extract parse_external_moduleMazdak Farrokhzad-5/+15
2020-03-18de-fatalize outline module parsingMazdak Farrokhzad-20/+17
2020-03-18expand: use push_directoryMazdak Farrokhzad-2/+2
2020-03-18decouple eval_src_mod from ParserMazdak Farrokhzad-40/+29
2020-03-18decouple push_directory from ParserMazdak Farrokhzad-18/+23
2020-03-18detach submod_path from ParserMazdak Farrokhzad-187/+192
2020-03-18extract error_on_circular_moduleMazdak Farrokhzad-10/+20
2020-03-18extract parse_modMazdak Farrokhzad-17/+18
2020-03-18submod_path: use id.spanMazdak Farrokhzad-7/+5
2020-03-18simplify submod_pathMazdak Farrokhzad-14/+12
2020-03-18extract error_decl_mod_in_blockMazdak Farrokhzad-13/+12
2020-03-18extract error_cannot_declare_mod_hereMazdak Farrokhzad-27/+27
2020-03-18submod_path_from_attr: simplify & documentMazdak Farrokhzad-12/+13
2020-03-16Rollup merge of #69989 - petrochenkov:nolegacy, r=eddyb,matthewjasperDylan DPC-3/+3
resolve/hygiene: `macro_rules` are not "legacy" The "modern" vs "legacy" naming was introduced by jseyfried during initial implementation of macros 2.0. At this point it's clear that `macro_rules` are not going anywhere and won't be deprecated in the near future. So this PR changes the naming "legacy" (when it implies "macro_rules") to "macro_rules". This should also help people reading this code because it's wasn't obvious that "legacy" actually meant "macro_rules" in these contexts. The most contentious renaming here is probably ``` fn modern -> fn normalize_to_macros_2_0 fn modern_and_legacy -> fn normalize_to_macro_rules ``` Other alternatives that I could think of are `normalize_to_opaque`/`normalize_to_semitransparent`, or `strip_non_opaque`/`strip_transparent`, but they seemed less intuitive. The documentation to these functions can be found in `symbol.rs`. r? @matthewjasper
2020-03-16Rollup merge of #69520 - kornelski:e69492, r=cramertjDylan DPC-25/+10
Make error message clearer about creating new module This is a partial improvement for #69492
2020-03-16Other `legacy` -> `macro_rules`Vadim Petrochenkov-1/+1
2020-03-16ast/hir: `MacroDef::legacy` -> `MacroDef::macro_rules`Vadim Petrochenkov-2/+2
2020-03-15Rollup merge of #69589 - petrochenkov:maccall, r=CentrilMazdak Farrokhzad-31/+23
ast: `Mac`/`Macro` -> `MacCall` It's now obvious that these refer to macro calls rather than to macro definitions. It's also a single name instead of two different names in different places. `rustc_expand` usually calls macro calls in a wide sense (including attributes and derives) "macro invocations", but structures and variants renamed in this PR are only relevant to fn-like macros, so it's simpler and clearer to just call them calls. cc https://github.com/rust-lang/rust/pull/63586#discussion_r314232513 r? @eddyb
2020-03-12ast: `Mac`/`Macro` -> `MacCall`Vadim Petrochenkov-31/+23
2020-03-12Rollup merge of #69722 - estebank:negative-impl-span-ast, r=CentrilMazdak Farrokhzad-7/+11
Tweak output for invalid negative impl AST errors Use more accurate spans for negative `impl` errors. r? @Centril
2020-03-11Rollup merge of #69760 - Centril:parse-expr-improve, r=estebankMazdak Farrokhzad-240/+281
Improve expression & attribute parsing This PR includes misc improvements to expression and attribute parsing. 1. Some code simplifications 2. Better recovery for various block forms, e.g. `loop statements }` (missing `{` after `loop`). (See e.g., `block-no-opening-brace.rs` among others for examples.) 3. Added recovery for e.g., `unsafe $b` where `$b` refers to a `block` macro fragment. (See `bad-interpolated-block.rs` for examples.) 4. ^--- These are done so that code sharing in block parsing is increased. 5. Added recovery for e.g., `'label: loop { ... }` (See `labeled-no-colon-expr.rs`.) 6. Added recovery for e.g., `&'lifetime expr` (See `regions-out-of-scope-slice.rs`.) 7. Added recovery for e.g., `fn foo() = expr;` (See `fn-body-eq-expr-semi.rs`.) 8. Simplified attribute parsing code & slightly improved diagnostics. 9. Added recovery for e.g., `Box<('a) + Trait>`. 10. Added recovery for e.g, `if true #[attr] {} else #[attr] {} else #[attr] if true {}`. r? @estebank
2020-03-10parse: Tweak the function parameter edition checkVadim Petrochenkov-3/+1
Move anon-params tests to ui/anon-params.
2020-03-10parse_if_expr: recover on attributesMazdak Farrokhzad-8/+38
2020-03-10trait-object-lifetime-parens: improve recovery.Mazdak Farrokhzad-6/+11
2020-03-10use check_path moreMazdak Farrokhzad-8/+5
2020-03-10simplify & improve parse_ty_tuple_or_parensMazdak Farrokhzad-19/+18
2020-03-10error_block_no_opening_brace: handle closures betterMazdak Farrokhzad-9/+7
2020-03-10parser: add note for `'label expr`.Mazdak Farrokhzad-0/+1
2020-03-10parser/attr: adjust indentation.Mazdak Farrokhzad-7/+5
2020-03-10parse_labeled_expr: add a suggestion on missing colon.Mazdak Farrokhzad-3/+13
2020-03-10parse_block_tail: reduce visibilityMazdak Farrokhzad-5/+1
2020-03-10unify/improve/simplify attribute parsingMazdak Farrokhzad-132/+102
2020-03-10parse: recover on `fn foo() = expr;`Mazdak Farrokhzad-1/+16
2020-03-10parse: simplify parse_fn_bodyMazdak Farrokhzad-17/+7
2020-03-10parse: recover on `&'lt $expr` / `'lt $expr`.Mazdak Farrokhzad-4/+31
2020-03-10more reuse in block parsing & improve diagnostics.Mazdak Farrokhzad-13/+20
2020-03-10simplify parse_inner_attributesMazdak Farrokhzad-6/+2
2020-03-10use error_block_no_opening_brace moreMazdak Farrokhzad-1/+5
2020-03-10parse_labeled_expr: simplifyMazdak Farrokhzad-15/+13
2020-03-09Rollup merge of #69801 - petrochenkov:nonorm, r=CentrilMazdak Farrokhzad-103/+75
rustc_parse: Remove `Parser::normalized(_prev)_token` Perform the "normalization" (renamed to "uninterpolation") on the fly when necessary. The final part of https://github.com/rust-lang/rust/pull/69579 https://github.com/rust-lang/rust/pull/69384 https://github.com/rust-lang/rust/pull/69376 https://github.com/rust-lang/rust/pull/69211 https://github.com/rust-lang/rust/pull/69034 https://github.com/rust-lang/rust/pull/69006. r? @Centril
2020-03-09Rollup merge of #69201 - Aaron1011:feature/permit-if-attr, r=CentrilMazdak Farrokhzad-9/+0
Permit attributes on 'if' expressions Previously, attributes on 'if' expressions (e.g. `#[attr] if true {}`) were disallowed during parsing. This made it impossible for macros to perform any custom handling of such attributes (e.g. stripping them away), since a compilation error would be emitted before they ever had a chance to run. This PR permits attributes on 'if' expressions ('if-attrs' from here on). Both built-in attributes (e.g. `#[allow]`, `#[cfg]`) and proc-macro attributes are supported. We still do *not* accept attributes on 'other parts' of an if-else chain. That is, the following code snippet still fails to parse: ```rust if true {} #[attr] else if false {} else #[attr] if false {} #[attr] else {} ``` Closes https://github.com/rust-lang/rust/issues/68618
2020-03-09Address review commentsVadim Petrochenkov-8/+7
2020-03-09Use `Token::uninterpolate` in couple more places matching on `(Nt)Ident`Vadim Petrochenkov-3/+4
2020-03-09rustc_parse: Remove `Parser::normalized(_prev)_token`Vadim Petrochenkov-37/+5
2020-03-09rustc_ast: Introduce `Token::uninterpolate`Vadim Petrochenkov-4/+4
2020-03-09rustc_ast: Introduce `Token::uninterpolated_span`Vadim Petrochenkov-12/+15
2020-03-09rustc_parse: Use `Token::ident` where possibleVadim Petrochenkov-47/+48
2020-03-07Rollup merge of #69773 - matthiaskrgr:typos, r=petrochenkovMazdak Farrokhzad-3/+3
fix various typos
2020-03-07Make error message clearer about creating new moduleKornel-25/+10