about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser/diagnostics.rs
AgeCommit message (Collapse)AuthorLines
2022-04-23Better handle too many `#` recovery in raw strEsteban Küber-9/+34
Point at all the unnecessary trailing `#`. Better handle interaction with outer attributes when `;` is missing. Fix #95030.
2022-04-05errors: implement fallback diagnostic translationDavid Wood-14/+22
This commit updates the signatures of all diagnostic functions to accept types that can be converted into a `DiagnosticMessage`. This enables existing diagnostic calls to continue to work as before and Fluent identifiers to be provided. The `SessionDiagnostic` derive just generates normal diagnostic calls, so these APIs had to be modified to accept Fluent identifiers. In addition, loading of the "fallback" Fluent bundle, which contains the built-in English messages, has been implemented. Each diagnostic now has "arguments" which correspond to variables in the Fluent messages (necessary to render a Fluent message) but no API for adding arguments has been added yet. Therefore, diagnostics (that do not require interpolation) can be converted to use Fluent identifiers and will be output as before.
2022-04-05span: move `MultiSpan`David Wood-3/+3
`MultiSpan` contains labels, which are more complicated with the introduction of diagnostic translation and will use types from `rustc_errors` - however, `rustc_errors` depends on `rustc_span` so `rustc_span` cannot use types like `DiagnosticMessage` without dependency cycles. Introduce a new `rustc_error_messages` crate that can contain `DiagnosticMessage` and `MultiSpan`. Signed-off-by: David Wood <david.wood@huawei.com>
2022-04-03Auto merge of #88672 - camelid:inc-parser-sugg, r=davidtwcobors-1/+213
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-02Fix doctest multi-line mod attributes handlingGuillaume Gomez-0/+4
2022-03-30Spellchecking compiler commentsYuri Astrakhan-1/+1
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-27Fix from rebaseNoah Lev-5/+5
I changed the test functions to be `pub` rather than called from a `main` function too, for easier future modification of tests.
2022-03-25diagnostics: correct generic bounds with doubled colonMichael Howell-0/+28
Fixes #95208
2022-03-23Fix rustfix panic on testNoah Lev-1/+1
`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-23Use `multipart_suggestions`Noah Lev-48/+54
This records that the suggestions are mutually-exclusive (i.e., only one should be applied).
2022-03-23Change temporary variable name if it would conflictNoah Lev-7/+4
2022-03-23Make `standalone` an enumNoah Lev-13/+25
2022-03-23Improve function namesNoah Lev-2/+2
2022-03-23Improve handling of `tmp` variable name conflictsNoah Lev-2/+6
2022-03-23Emit both subexp and standalone sugg for postfixNoah Lev-28/+54
This solves the TODO.
2022-03-23Emit structured suggestions for field accesses tooNoah Lev-22/+11
2022-03-23Refactor, handle fields better, add field testsNoah Lev-10/+10
2022-03-23Reduce rightward driftNoah Lev-31/+30
2022-03-23Remove error recovery todosNoah Lev-15/+9
2022-03-23Move increment checks to improve errorsNoah Lev-43/+185
2022-03-23Suggest `i += 1` when we see `i++` or `++i`Camelid-0/+43
2022-03-17Rollup merge of #94731 - TaKO8Ki:const-generic-expr-recovery, ↵Dylan DPC-22/+65
r=davidtwco,oli-obk Suggest adding `{ .. }` around a const function call with arguments closes #91020
2022-03-15use `format_args_capture` in some parts of rustc_parseTakayuki Maeda-14/+14
2022-03-12Use consistent prose for `::`Michael Howell-1/+1
Co-authored-by: Camille Gillot <gillot.camille@gmail.com>
2022-03-11diagnostics: single colon within `<>` probably, not type ascriptionMichael Howell-0/+13
Fixes #94812
2022-03-10replace `self.clone()` with `self.create_snapshot_for_diagnostic()`Takayuki Maeda-22/+22
2022-03-10add doc commentsTakayuki Maeda-3/+12
2022-03-09implement `SnapshotParser` structTakayuki Maeda-3/+30
2022-03-09implement and use `diagnostic_snapshot`Takayuki Maeda-0/+7
2022-03-04Do not recover from `Ty?` in macro parsingEsteban Kuber-3/+3
Follow up to #92746. Address #94510.
2022-03-02rename ErrorReported -> ErrorGuaranteedmark-11/+11
2022-02-28Rollup merge of #94445 - c410-f3r:more-let-chains, r=cjgillotMatthias Krüger-39/+39
4 - Make more use of `let_chains` Continuation of #94376. cc #53667
2022-02-28Tweak diagnosticsEsteban Kuber-14/+39
* Recover from invalid `'label: ` before block. * Make suggestion to enclose statements in a block multipart. * Point at `match`, `while`, `loop` and `unsafe` keywords when failing to parse their expression. * Do not suggest `{ ; }`. * Do not suggest `|` when very unlikely to be what was wanted (in `let` statements).
2022-02-284 - Make more use of `let_chains`Caio-39/+39
Continuation of #94376. cc #53667
2022-02-25Suggest {} around more bad const generic exprsMichael Goulet-16/+23
2022-02-23rustc_errors: let `DiagnosticBuilder::emit` return a "guarantee of emission".Eduard-Mihai Burtescu-10/+22
2022-02-23rustc_errors: take `self` by value in `DiagnosticBuilder::cancel`.Eduard-Mihai Burtescu-21/+18
2022-02-23Replace `&mut DiagnosticBuilder`, in signatures, with `&mut Diagnostic`.Eduard-Mihai Burtescu-6/+6
2022-02-03compiler: clippy::complexity fixesMatthias Krüger-4/+4
useless_format map_flatten useless_conversion needless_bool filter_next clone_on_copy needless_option_as_deref
2022-01-27Improve suggestion for escaping reserved keywordsNoah Lev-4/+4
2022-01-25delay the bug once again, generalize turbofish suggestionMichael Goulet-18/+12
2022-01-25Remove delayed bug when encountering label in bad turbofishMichael Goulet-1/+1
2022-01-17Rollup merge of #92876 - compiler-errors:fix-turbofish-lifetime-suggestion, ↵Matthias Krüger-16/+23
r=nagisa Fix suggesting turbofish with lifetime arguments Now we suggest turbofish correctly given exprs like `foo<'_>`. Also fix suggestion when we have `let x = foo<bar, baz>;` which was broken.
2022-01-16Rollup merge of #92746 - estebank:question-mark-in-type, r=davidtwcoMatthias Krüger-1/+29
Parse `Ty?` as `Option<Ty>` and provide structured suggestion Swift has specific syntax that desugars to `Option<T>` similar to our `?` operator, which means that people might try to use it in Rust. Parse it and gracefully recover.
2022-01-13Fix suggesting turbofish with lifetime argumentsMichael Goulet-16/+23
2022-01-14Parse `Ty?` as `Option<Ty>` and provide structured suggestionEsteban Kuber-1/+29
Swift has specific syntax that desugars to `Option<T>` similar to our `?` operator, which means that people might try to use it in Rust. Parse it and gracefully recover.
2022-01-09eplace usages of vec![].into_iter with [].into_iterLucas Kent-2/+2
2021-12-14fix clippy::single_char_pattern perf findingsMatthias Krüger-1/+1
2021-12-09Remove redundant [..]sest31-3/+3
2021-12-04Do not add `;` to expected tokens list when it's wrongMichael Howell-1/+2
There's a few spots where semicolons are checked for to do error recovery, and should not be suggested (or checked for other stuff). Fixes #87647