Commit Graph

604 Commits

Author SHA1 Message Date
bors 133859d680 Auto merge of #88672 - camelid:inc-parser-sugg, r=davidtwco
Suggest `i += 1` when we see `i++` or `++i`

Closes #83502 (for `i++` and `++i`; `--i` should be covered by #82987, and `i--`
is tricky to handle).

This is a continuation of #83536.

r? `@estebank`
2022-04-03 05:24:20 +00:00
bors c1550e3f8c Auto merge of #95590 - GuillaumeGomez:multi-line-attr-handling-doctest, r=notriddle
Fix multiline attributes handling in doctests

Fixes #55713.

I needed to have access to the `unclosed_delims` field in order to check that the attribute was completely parsed and didn't have missing parts, so I created a getter for it.

r? `@notriddle`
2022-04-02 23:39:25 +00:00
Guillaume Gomez c37cd911a4 Fix doctest multi-line mod attributes handling 2022-04-02 20:53:19 +02:00
Matthias Krüger 8f493fd46a Rollup merge of #95293 - compiler-errors:braces, r=davidtwco
suggest wrapping single-expr blocks in square brackets

Suggests a fix in cases like:

```diff
- const A: [i32; 1] = { 1 };

+ const A: [i32; 1] = [ 1 ];
                      ^   ^
```

Also edit the message for the same suggestion in the parser (e.g. `{ 1, 2 }`).

Fixes #95289
2022-04-01 06:59:42 +02:00
Dylan DPC 1b7d6dbd30 Rollup merge of #95497 - nyurik:compiler-spell-comments, r=compiler-errors
Spellchecking compiler comments

This PR cleans up the rest of the spelling mistakes in the compiler comments. This PR does not change any literal or code spelling issues.
2022-03-31 04:57:28 +02:00
Dylan DPC 86388f6171 Rollup merge of #95251 - GrishaVar:hashes-u16-to-u8, r=dtolnay
Reduce max hash in raw strings from u16 to u8

[Relevant discussion](https://rust-lang.zulipchat.com/#narrow/stream/237824-t-lang.2Fdoc/topic/Max.20raw.20string.20delimiters)
2022-03-31 00:26:31 +02:00
Yuri Astrakhan a6dd658254 Addressed comments by @compiler-errors and @bjorn3 2022-03-30 17:04:46 -04:00
Yuri Astrakhan 5160f8f843 Spellchecking compiler comments
This PR cleans up the rest of the spelling mistakes in the compiler comments. This PR does not change any literal or code spelling issues.
2022-03-30 15:14:15 -04:00
Grisha Vartanyan 759d1e6af8 Update error message & remove outdated test comment 2022-03-30 18:20:30 +02:00
Dylan DPC 03b3993ae8 Rollup merge of #95461 - nyurik:spelling, r=lcnr
Spellchecking some comments

This PR attempts to clean up some minor spelling mistakes in comments
2022-03-30 09:10:07 +02:00
Yuri Astrakhan 7e8201ae0a Spellchecking some comments
This PR attempts to clean up some minor spelling mistakes in comments
2022-03-30 01:39:38 -04:00
Dylan DPC e10d5039bc Rollup merge of #95318 - rust-lang:notriddle/issue-95208, r=wesleywiser
diagnostics: correct generic bounds with doubled colon

Fixes #95208
2022-03-28 20:41:50 +02:00
Dylan DPC ae037a86f9 Rollup merge of #95301 - nnethercote:rm-NtTT, r=petrochenkov
Remove `Nonterminal::NtTT`.

It's only needed for macro expansion, not as a general element in the
AST. This commit removes it, adds `NtOrTt` for the parser and macro
expansion cases, and renames the variants in `NamedMatch` to better
match the new type.

r? `@petrochenkov`
2022-03-28 16:08:07 +02:00
Michael Goulet 928388bad2 Make fatal DiagnosticBuilder yield never 2022-03-27 22:25:32 -07:00
Nicholas Nethercote 364b908d57 Remove Nonterminal::NtTT.
It's only needed for macro expansion, not as a general element in the
AST. This commit removes it, adds `NtOrTt` for the parser and macro
expansion cases, and renames the variants in `NamedMatch` to better
match the new type.
2022-03-28 10:03:02 +11:00
Noah Lev 4943688e9d Fix from rebase
I changed the test functions to be `pub` rather than called from a
`main` function too, for easier future modification of tests.
2022-03-27 13:54:34 -07:00
bors ab0c2e18dc Auto merge of #94495 - estebank:missing-closing-gt, r=jackh726
Provide suggestion for missing `>` in a type parameter list

When encountering an inproperly terminated type parameter list, provide
a suggestion to close it after the last non-constraint type parameter
that was successfully parsed.

Fix #94058.
2022-03-27 18:55:58 +00:00
Esteban Kuber 157c67b7a8 Handle , to ; substitution in arg params 2022-03-27 06:05:18 +00:00
Esteban Kuber 6874bd27f5 Provide suggestion for missing > in a type parameter list
When encountering an inproperly terminated type parameter list, provide
a suggestion to close it after the last non-constraint type parameter
that was successfully parsed.

Fix #94058.
2022-03-27 02:50:04 +00:00
bors c74925438c Auto merge of #95149 - cjgillot:once-diag, r=estebank
Remove `Session::one_time_diagnostic`

This is untracked mutable state, which modified the behaviour of queries.
It was used for 2 things: some full-blown errors, but mostly for lint declaration notes ("the lint level is defined here" notes).

It is replaced by the diagnostic deduplication infra which already exists in the diagnostic emitter.
A new diagnostic level `OnceNote` is introduced specifically for lint notes, to deduplicate subdiagnostics.

As a drive-by, diagnostic emission takes a `&mut` to allow dropping the `SubDiagnostic`s.
2022-03-26 00:54:54 +00:00
Michael Howell 2a7837262f diagnostics: correct generic bounds with doubled colon
Fixes #95208
2022-03-25 13:57:05 -07:00
Michael Goulet 91ac9cf595 suggest wrapping single-expr blocks in square brackets 2022-03-24 21:40:20 -07:00
Noah Lev 86220d6e51 Fix rustfix panic on test
`run-rustfix` applies all suggestions regardless of their Applicability.
There's a flag, `rustfix-only-machine-applicable`, that does what it
says, but then the produced `.fixed` file would have invalid code from
the suggestions that weren't applied. So, I moved the cases of postfix
increment, in which case multiple suggestions are given, to the
`-notfixed` test, which does not run rustfix.

I also changed the Applicability to Unspecified since MaybeIncorrect
requires that the code be valid, even if it's incorrect.
2022-03-23 22:31:57 -07:00
Noah Lev 725cde42d5 Use multipart_suggestions
This records that the suggestions are mutually-exclusive (i.e., only one
should be applied).
2022-03-23 22:31:57 -07:00
Noah Lev ef74796178 Change temporary variable name if it would conflict 2022-03-23 22:31:57 -07:00
Noah Lev 95960b7d54 Make standalone an enum 2022-03-23 22:31:57 -07:00
Noah Lev 4212835d99 Add heuristic to avoid treating x + +2 as increment 2022-03-23 22:31:57 -07:00
Noah Lev 29a5c363c7 Improve function names 2022-03-23 22:31:57 -07:00
Noah Lev 073010d425 Improve handling of tmp variable name conflicts 2022-03-23 22:31:57 -07:00
Noah Lev 62b8ea67b7 Emit both subexp and standalone sugg for postfix
This solves the TODO.
2022-03-23 22:31:57 -07:00
Noah Lev 7287f929b9 Emit structured suggestions for field accesses too 2022-03-23 22:31:57 -07:00
Noah Lev 67a9adbb54 Refactor, handle fields better, add field tests 2022-03-23 22:31:57 -07:00
Noah Lev 80e57e223e Reduce rightward drift 2022-03-23 22:31:57 -07:00
Noah Lev d915606d50 Remove error recovery todos 2022-03-23 22:31:57 -07:00
Noah Lev c9cc43aa66 Move increment checks to improve errors 2022-03-23 22:31:57 -07:00
Camelid 5d9cd4b851 Suggest i += 1 when we see i++ or ++i 2022-03-23 22:31:57 -07:00
Dylan DPC 0254928213 Rollup merge of #95212 - TaKO8Ki:replace-this-clone-with-this-create-snapshot-for-diagnostic, r=Dylan-DPC
Replace `this.clone()` with `this.create_snapshot_for_diagnostic()`

Use [`create_snapshot_for_diagnostic`](https://github.com/rust-lang/rust/blob/cd119057160cedea245aa2679add56723f3dc784/compiler/rustc_parse/src/parser/diagnostics.rs#L214-L223) I implemented in https://github.com/rust-lang/rust/pull/94731 instead of `this.clone()` to avoid duplicate errors about unclosed delims being emitted when the `Parser` is dropped.
2022-03-23 03:05:32 +01:00
bors 5f37001055 Auto merge of #95215 - Dylan-DPC:rollup-l9f9t7l, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #95188 ([`macro-metavar-expr`] Fix generated tokens hygiene)
 - #95196 (rename LocalState::Uninitialized to Unallocated)
 - #95197 (Suggest constraining param for unary ops when missing trait impl)
 - #95200 (Cancel a not emitted error after parsing const generic args)
 - #95207 (update Termination trait docs)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-03-22 19:06:04 +00:00
Takayuki Maeda b86a1d1c07 replace this.clone() with this.create_snapshot_for_diagnostic() 2022-03-23 01:26:34 +09:00
bors 64137f0b15 Auto merge of #94693 - nnethercote:parser-inlining, r=petrochenkov
Inline some parser functions

Some crates that do a lot of complex declarative macro expansion spend a lot of time parsing (and reparsing) tokens. These commits inline some functions for some minor speed wins.

r? `@ghost`
2022-03-22 16:24:50 +00:00
Takayuki Maeda 62ded071d5 cancel a not emitted error after parsing const generic args 2022-03-22 16:06:56 +09:00
Nicholas Nethercote f8f1d3f00b Split TokenCursor::{next,next_desugared} into inlined and non-inlined halves. 2022-03-22 11:05:54 +11:00
Nicholas Nethercote 4e700a023c Split Parser::bump_with into inlined and non-inlined halves.
The call site within `Parser::bump` is hot.

Also add an inline annotation to `Parser::next_tok`. It was already
being inlined by the compiler; this just makes sure that continues.
2022-03-22 11:01:53 +11:00
bors 051d1176b7 Auto merge of #95104 - compiler-errors:remove-ascription, r=davidtwco
suggest removing type ascription in bad parsing position

Not sure how to test this with the non-nightly suggestion. Didn't add a new UI test because it already manifests in an existing UI test.

Fixes #95014
2022-03-21 02:29:55 +00:00
Matthias Krüger 63da51db93 Rollup merge of #95135 - TaKO8Ki:fix-not-emitted-unmatched-angle-bracket-error, r=Dylan-DPC
Fix a not emitted unmatched angle bracket error

closes #95128
2022-03-20 20:42:45 +01:00
Camille GILLOT 056951d628 Take &mut Diagnostic in emit_diagnostic.
Taking a Diagnostic by move would break the usual pattern
`diag.label(..).emit()`.
2022-03-20 20:36:08 +01:00
Takayuki Maeda 5c8aaedef6 fix a not emitted unmatched angle bracket error 2022-03-20 22:39:15 +09:00
Michael Goulet 3516a16eeb suggest removing type ascription in bad position 2022-03-18 21:22:26 -07:00
Takayuki Maeda 201a86046c use self.create_snapshot_for_diagnostic instead of self.clone() 2022-03-18 16:56:43 +09:00
Dylan DPC 270a41c33e Rollup merge of #94960 - codehorseman:master, r=oli-obk
Fix many spelling mistakes

Signed-off-by: codehorseman <cricis@yeah.net>
2022-03-17 22:55:05 +01:00