rust/compiler/rustc_parse/src
Esteban Küber 0f82cfffda Keep track of patterns that could have introduced a binding, but didn't
When we recover from a pattern parse error, or a pattern uses `..`, we keep track of that and affect resolution error for missing bindings that could have been provided by that pattern. We differentiate between `..` and parse recovery. We silence resolution errors likely caused by the pattern parse error.

```
error[E0425]: cannot find value `title` in this scope
  --> $DIR/struct-pattern-with-missing-fields-resolve-error.rs:19:30
   |
LL |         println!("[{}]({})", title, url);
   |                              ^^^^^ not found in this scope
   |
note: `Website` has a field `title` which could have been included in this pattern, but it wasn't
  --> $DIR/struct-pattern-with-missing-fields-resolve-error.rs:17:12
   |
LL | / struct Website {
LL | |     url: String,
LL | |     title: Option<String> ,
   | |     ----- defined here
LL | | }
   | |_-
...
LL |       if let Website { url, .. } = website {
   |              ^^^^^^^^^^^^^^^^^^^ this pattern doesn't include `title`, which is available in `Website`
```

Fix #74863.
2024-12-13 21:51:33 +00:00
..
lexer Fix typo in RFC mention 3598 -> 3593 2024-12-09 17:16:14 +00:00
parser Keep track of patterns that could have introduced a binding, but didn't 2024-12-13 21:51:33 +00:00
errors.rs Introduce default_field_values feature 2024-12-09 21:55:01 +00:00
lib.rs Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
validate_attr.rs Change AttrArgs::Eq into a struct variant 2024-12-02 10:28:58 +00:00