Commit graph

491 commits

Author SHA1 Message Date
Mazdak Farrokhzad
9fa4953aa4
Rollup merge of #69878 - estebank:chained-ops, r=Centril
Tweak chained operators diagnostic

Use more selective spans
Improve suggestion output
Be more selective when displaying suggestions
Silence some knock-down type errors

r? @Centril
2020-03-26 03:21:27 +01:00
Esteban Küber
4832f3fd5d review comments 2020-03-25 18:10:18 -07:00
Esteban Küber
89571a1bbc Tweak chained operators diagnostic
Use more selective spans
Improve suggestion output
Be more selective when displaying suggestions
Silence some knock-down type errors
2020-03-25 17:13:04 -07:00
Esteban Küber
f18a6dcec0 Rename def_span to guess_head_span 2020-03-25 16:45:12 -07:00
Mazdak Farrokhzad
8dda61792b
Rollup merge of #70248 - Centril:unroot, r=petrochenkov
parser: simplify & remove unused field

r? @petrochenkov
2020-03-23 04:26:12 +01:00
Dylan DPC
8fe8bad96b
Rollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril
couple more clippy fixes (let_and_return, if_same_then_else)

* summarize if-else-code with identical blocks (clippy::if_same_then_else)
* don't create variable bindings just to return the bound value immediately (clippy::let_and_return)
2020-03-22 15:48:41 +01:00
Dylan DPC
ea44d71f9b
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb
2020-03-22 15:48:32 +01:00
Dylan DPC
9890d9a9d0
Rollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov
parse/lexer: support `StringReader::retokenize` called on external files.

This ~~should theoretically~~ fixes #69933, ~~but I'm not sure what the best way to test it is~~.
**EDIT**: see https://github.com/rust-lang/rust/issues/69933#issuecomment-602019598.

r? @petrochenkov cc @Xanewok @staktrace
2020-03-22 15:48:30 +01:00
Matthias Krüger
74d68ea7eb don't create variable bindings just to return the bound value immediately (clippy::let_and_return) 2020-03-22 00:35:25 +01:00
Mazdak Farrokhzad
eaa0ae503f parse: nix new_sub_parser_from_file 2020-03-22 00:35:20 +01:00
Matthias Krüger
3599fd389d summarize if-else-code with identical blocks (clippy::if_same_then_else) 2020-03-22 00:34:16 +01:00
Mazdak Farrokhzad
d18ed205c9 parse: nix unused root_module_name. 2020-03-21 22:51:03 +01:00
Mazdak Farrokhzad
4d30b92e3e recover on for<'a> |...| body closures. 2020-03-21 09:54:03 +01:00
Mazdak Farrokhzad
3e6b1ac964
Rollup merge of #70187 - matthiaskrgr:cl2ppy, r=Mark-Simulacrum
more clippy fixes

    * remove redundant returns (clippy::needless_return)
    * remove redundant import (clippy::single_component_path_imports)
    * remove redundant format!() call (clippy::useless_format)
    * don't use ok() before calling expect() (clippy::ok_expect)
2020-03-21 05:33:31 +01:00
Matthias Krüger
ad00e91887 remove redundant returns (clippy::needless_return) 2020-03-20 20:23:03 +01:00
Mazdak Farrokhzad
9b9a22cd2e can_begin_literal_maybe_minus: true on "-"? lit NTs. 2020-03-20 16:42:53 +01:00
Eduard-Mihai Burtescu
6f6fe38b19 parse/lexer: support StringReader::retokenize called on external files. 2020-03-20 08:00:06 +02:00
Mazdak Farrokhzad
e301291cb6 fix rebase fallout 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
fe71342091 tweak outline module parsing spans 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
7d0e5bbb67 parser/expand: minor cleanup 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
31ee8e0a43 {rustc_parse -> rustc_expand}::config 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
3796faefb1 {rustc_parse::parser -> rustc_expand}::module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
ddcc8ec89d move Directory -> parser::module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
f1ca9969bf parse: module parsing -> item.rs 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
83a757a9ca outline modules: parse -> expand. 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
59bf8a07f9 extract error_on_circular_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
463995fe29 extract parse_external_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
8bab88f2d9 de-fatalize outline module parsing 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
b9e1b26611 expand: use push_directory 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
98e71cd5d7 decouple eval_src_mod from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
53a633fb44 decouple push_directory from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
ca098b16a4 detach submod_path from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
dfcefa49ed extract error_on_circular_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
7108b7fbfe extract parse_mod 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
803de3188c submod_path: use id.span 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
2db5d49d47 simplify submod_path 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
185c1d340c extract error_decl_mod_in_block 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
2899a58cab extract error_cannot_declare_mod_here 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
bc75cba23f submod_path_from_attr: simplify & document 2020-03-18 15:08:25 +01:00
Dylan DPC
8872d90572
Rollup merge of #69989 - petrochenkov:nolegacy, r=eddyb,matthewjasper
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-16 13:16:44 +01:00
Dylan DPC
1685264f12
Rollup merge of #69520 - kornelski:e69492, r=cramertj
Make error message clearer about creating new module

This is a partial improvement for #69492
2020-03-16 13:16:38 +01:00
Vadim Petrochenkov
8c9a38f679 Other legacy -> macro_rules 2020-03-16 00:29:42 +03:00
Vadim Petrochenkov
65bf4831d2 ast/hir: MacroDef::legacy -> MacroDef::macro_rules 2020-03-16 00:29:03 +03:00
Mazdak Farrokhzad
d1e943f263
Rollup merge of #69589 - petrochenkov:maccall, r=Centril
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-15 15:40:05 +01:00
Yuki Okushi
c13548dccd
Rollup merge of #69809 - matthiaskrgr:lifetimes, r=eddyb
remove lifetimes that can be elided (clippy::needless_lifetimes)
2020-03-14 04:03:26 +09:00
Vadim Petrochenkov
e809e0214e ast: Mac/Macro -> MacCall 2020-03-12 22:26:52 +03:00
Matthias Krüger
7b1b08cfee remove lifetimes that can be elided (clippy::needless_lifetimes) 2020-03-12 20:03:09 +01:00
Mazdak Farrokhzad
4f7fc5ad67
Rollup merge of #69722 - estebank:negative-impl-span-ast, r=Centril
Tweak output for invalid negative impl AST errors

Use more accurate spans for negative `impl` errors.

r? @Centril
2020-03-12 16:32:17 +01:00
Mazdak Farrokhzad
9674c09ae9
Rollup merge of #69760 - Centril:parse-expr-improve, r=estebank
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-11 14:03:45 +01:00
Vadim Petrochenkov
6b27e8d2a6 parse: Tweak the function parameter edition check
Move anon-params tests to ui/anon-params.
2020-03-10 22:35:01 +03:00