about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan DPC <99973273+Dylan-DPC@users.noreply.github.com>2022-06-17 12:21:48 +0200
committerGitHub <noreply@github.com>2022-06-17 12:21:48 +0200
commit51e2d6a4a932f5c8a6d573ef5ff4d0866c24f8b8 (patch)
treebede629a2bfe176d603c471987d75ada8264e62e
parentf8f9d01c2ad0dff565bdd60feeb4cbd09dada8cd (diff)
parent4d889935443b7d5cd3c33b432c920807b1387340 (diff)
downloadrust-51e2d6a4a932f5c8a6d573ef5ff4d0866c24f8b8.tar.gz
rust-51e2d6a4a932f5c8a6d573ef5ff4d0866c24f8b8.zip
Rollup merge of #97798 - WaffleLapkin:allow_for_suggestions_that_are_quite_far_away_from_each_other, r=estebank
Hide irrelevant lines in suggestions to allow for suggestions that are far from each other to be shown

This is an attempt to fix suggestions one part of which is 6 lines or more far from the first. I've noticed "the problem" (of not showing some parts of the suggestion) here: https://github.com/rust-lang/rust/pull/97759#discussion_r889689230.

I'm not sure about the implementation (this big closure is just bad and makes already complicated code even more so), but I want to at least discuss the result.

Here is an example of how this changes the output:

Before:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
5 |
6 |
7 |
8 |
...
```

After:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
...
31|
32~ } };
  |
```

r? `@estebank`
`@rustbot` label +A-diagnostics +A-suggestion-diagnostics
-rw-r--r--tests/ui/bind_instead_of_map_multipart.stderr18
-rw-r--r--tests/ui/branches_sharing_code/shared_at_top_and_bottom.stderr3
-rw-r--r--tests/ui/entry.stderr41
-rw-r--r--tests/ui/entry_with_else.stderr17
-rw-r--r--tests/ui/let_unit.stderr3
-rw-r--r--tests/ui/manual_async_fn.stderr9
-rw-r--r--tests/ui/needless_for_each_unfixable.stderr3
-rw-r--r--tests/ui/new_without_default.stderr3
-rw-r--r--tests/ui/ptr_arg.stderr3
-rw-r--r--tests/ui/significant_drop_in_scrutinee.stderr9
-rw-r--r--tests/ui/unit_arg.stderr8
-rw-r--r--tests/ui/unnecessary_wraps.stderr6
12 files changed, 102 insertions, 21 deletions
diff --git a/tests/ui/bind_instead_of_map_multipart.stderr b/tests/ui/bind_instead_of_map_multipart.stderr
index f822b6f49fa..0152a93feee 100644
--- a/tests/ui/bind_instead_of_map_multipart.stderr
+++ b/tests/ui/bind_instead_of_map_multipart.stderr
@@ -56,7 +56,25 @@ LL |             if s == "43" {
 LL ~                 return 43;
 LL |             }
 LL |             s == "42"
+LL |         } {
+LL ~             return 45;
+LL |         }
+LL |         match s.len() {
+LL ~             10 => 2,
+LL |             20 => {
  ...
+LL |                         if foo() {
+LL ~                             return 20;
+LL |                         }
+LL |                         println!("foo");
+LL ~                         3
+LL |                     };
+LL |                 }
+LL ~                 20
+LL |             },
+LL ~             40 => 30,
+LL ~             _ => 1,
+   |
 
 error: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)`
   --> $DIR/bind_instead_of_map_multipart.rs:61:13
diff --git a/tests/ui/branches_sharing_code/shared_at_top_and_bottom.stderr b/tests/ui/branches_sharing_code/shared_at_top_and_bottom.stderr
index 11843cc03d8..a270f637f2b 100644
--- a/tests/ui/branches_sharing_code/shared_at_top_and_bottom.stderr
+++ b/tests/ui/branches_sharing_code/shared_at_top_and_bottom.stderr
@@ -98,7 +98,8 @@ LL +         id: e_id,
 LL +         name: "Player 1".to_string(),
 LL +         some_data: vec![0x12, 0x34, 0x56, 0x78, 0x90],
 LL +     };
- ...
+LL +     process_data(pack);
+   |
 
 error: all if blocks contain the same code at both the start and the end
   --> $DIR/shared_at_top_and_bottom.rs:94:5
diff --git a/tests/ui/entry.stderr b/tests/ui/entry.stderr
index 1076500498d..2ef9966525c 100644
--- a/tests/ui/entry.stderr
+++ b/tests/ui/entry.stderr
@@ -28,7 +28,8 @@ LL +             v
 LL +         } else {
 LL +             v2
 LL +         }
- ...
+LL +     });
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:38:5
@@ -50,7 +51,8 @@ LL +             v
 LL +         } else {
 LL +             v2
 LL +         }
- ...
+LL +     });
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:47:5
@@ -72,7 +74,9 @@ LL +             e.insert(v);
 LL +         } else {
 LL +             e.insert(v2);
 LL +             return;
- ...
+LL +         }
+LL +     }
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:57:5
@@ -111,7 +115,11 @@ LL +             1 if true => {
 LL +                 v
 LL +             },
 LL +             _ => {
- ...
+LL +                 v2
+LL +             },
+LL +         }
+LL +     });
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:75:5
@@ -133,7 +141,9 @@ LL +             0 => foo(),
 LL +             _ => {
 LL +                 e.insert(v2);
 LL +             },
- ...
+LL +         };
+LL +     }
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:85:5
@@ -155,7 +165,26 @@ LL +         match 0 {
 LL +             0 if false => {
 LL +                 v
 LL +             },
- ...
+LL +             1 => {
+LL +                 foo();
+LL +                 v
+LL +             },
+LL +             2 | 3 => {
+LL +                 for _ in 0..2 {
+LL +                     foo();
+LL +                 }
+LL +                 if true {
+LL +                     v
+LL +                 } else {
+LL +                     v2
+LL +                 }
+LL +             },
+LL +             _ => {
+LL +                 v2
+LL +             },
+LL +         }
+LL +     });
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry.rs:119:5
diff --git a/tests/ui/entry_with_else.stderr b/tests/ui/entry_with_else.stderr
index 7279efc5959..e0f6671b460 100644
--- a/tests/ui/entry_with_else.stderr
+++ b/tests/ui/entry_with_else.stderr
@@ -17,7 +17,9 @@ LL +             e.insert(v);
 LL +         }
 LL +         std::collections::hash_map::Entry::Occupied(mut e) => {
 LL +             e.insert(v2);
- ...
+LL +         }
+LL +     }
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry_with_else.rs:22:5
@@ -37,7 +39,9 @@ LL +             e.insert(v);
 LL +         }
 LL +         std::collections::hash_map::Entry::Vacant(e) => {
 LL +             e.insert(v2);
- ...
+LL +         }
+LL +     }
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry_with_else.rs:28:5
@@ -95,7 +99,9 @@ LL +             e.insert(v);
 LL +         }
 LL +         std::collections::hash_map::Entry::Occupied(mut e) => {
 LL +             e.insert(v2);
- ...
+LL +         }
+LL +     }
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry_with_else.rs:46:5
@@ -115,7 +121,10 @@ LL +             if true { Some(e.insert(v)) } else { Some(e.insert(v2)) }
 LL +         }
 LL +         std::collections::hash_map::Entry::Vacant(e) => {
 LL +             e.insert(v);
- ...
+LL +             None
+LL +         }
+LL ~     };
+   |
 
 error: usage of `contains_key` followed by `insert` on a `HashMap`
   --> $DIR/entry_with_else.rs:52:5
diff --git a/tests/ui/let_unit.stderr b/tests/ui/let_unit.stderr
index 13ec11a6d33..45bf67acdb7 100644
--- a/tests/ui/let_unit.stderr
+++ b/tests/ui/let_unit.stderr
@@ -32,7 +32,8 @@ LL +         .map(|i| i * 2)
 LL +         .filter(|i| i % 2 == 0)
 LL +         .map(|_| ())
 LL +         .next()
- ...
+LL +         .unwrap();
+   |
 
 error: this let-binding has unit value
   --> $DIR/let_unit.rs:80:5
diff --git a/tests/ui/manual_async_fn.stderr b/tests/ui/manual_async_fn.stderr
index 7435f46074c..0a903ed6fd4 100644
--- a/tests/ui/manual_async_fn.stderr
+++ b/tests/ui/manual_async_fn.stderr
@@ -122,7 +122,14 @@ LL +         let a = 42;
 LL +         let b = 21;
 LL +         if a < b {
 LL +             let c = 21;
- ...
+LL +             let d = 42;
+LL +             if c < d {
+LL +                 let _ = 42;
+LL +             }
+LL +         }
+LL +         42
+LL +     }
+   |
 
 error: this function can be simplified using the `async fn` syntax
   --> $DIR/manual_async_fn.rs:92:1
diff --git a/tests/ui/needless_for_each_unfixable.stderr b/tests/ui/needless_for_each_unfixable.stderr
index f607e0a430e..7893ff31a6f 100644
--- a/tests/ui/needless_for_each_unfixable.stderr
+++ b/tests/ui/needless_for_each_unfixable.stderr
@@ -19,7 +19,8 @@ LL +             return;
 LL +         } else {
 LL +             println!("{}", v);
 LL +         }
- ...
+LL +     }
+   |
 help: ...and replace `return` with `continue`
    |
 LL |             continue;
diff --git a/tests/ui/new_without_default.stderr b/tests/ui/new_without_default.stderr
index 19572dfe8b0..212a69ab94e 100644
--- a/tests/ui/new_without_default.stderr
+++ b/tests/ui/new_without_default.stderr
@@ -117,7 +117,8 @@ LL +             Self::new()
 LL +         }
 LL +     }
 LL + 
- ...
+LL ~     impl<T> Foo<T> {
+   |
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/ptr_arg.stderr b/tests/ui/ptr_arg.stderr
index a9613daadde..7ec4a566ff3 100644
--- a/tests/ui/ptr_arg.stderr
+++ b/tests/ui/ptr_arg.stderr
@@ -56,7 +56,8 @@ LL |     let f = e.clone(); // OK
 LL |     let g = x;
 LL ~     let h = g.to_owned();
 LL |     let i = (e).clone();
- ...
+LL ~     x.to_owned()
+   |
 
 error: writing `&String` instead of `&str` involves a new object where a slice will do
   --> $DIR/ptr_arg.rs:57:18
diff --git a/tests/ui/significant_drop_in_scrutinee.stderr b/tests/ui/significant_drop_in_scrutinee.stderr
index 303f3c1df03..5ce95204416 100644
--- a/tests/ui/significant_drop_in_scrutinee.stderr
+++ b/tests/ui/significant_drop_in_scrutinee.stderr
@@ -188,7 +188,9 @@ LL +         _ => mutex2.lock().unwrap(),
 LL +     }
 LL +     .s
 LL +     .len()
- ...
+LL +         > 1;
+LL ~     match value
+   |
 
 error: temporary with significant drop in match scrutinee
   --> $DIR/significant_drop_in_scrutinee.rs:397:11
@@ -211,7 +213,10 @@ LL +     } else {
 LL +         mutex2.lock().unwrap()
 LL +     }
 LL +     .s
- ...
+LL +     .len()
+LL +         > 1;
+LL ~     match value
+   |
 
 error: temporary with significant drop in match scrutinee
   --> $DIR/significant_drop_in_scrutinee.rs:451:11
diff --git a/tests/ui/unit_arg.stderr b/tests/ui/unit_arg.stderr
index 394dee29dc9..11cfe66a30e 100644
--- a/tests/ui/unit_arg.stderr
+++ b/tests/ui/unit_arg.stderr
@@ -137,7 +137,13 @@ LL +         foo(1);
 LL +     };
 LL +     {
 LL +         foo(2);
- ...
+LL +         foo(3);
+LL +     };
+LL +     taking_multiple_units(
+LL +         (),
+LL +         (),
+LL ~     );
+   |
 
 error: passing a unit value to a function
   --> $DIR/unit_arg.rs:85:13
diff --git a/tests/ui/unnecessary_wraps.stderr b/tests/ui/unnecessary_wraps.stderr
index 8e31db39502..a6a0b22cf68 100644
--- a/tests/ui/unnecessary_wraps.stderr
+++ b/tests/ui/unnecessary_wraps.stderr
@@ -23,7 +23,8 @@ LL |     if a {
 LL |         Some(-1);
 LL ~         2
 LL |     } else {
- ...
+LL ~         return 1337;
+   |
 
 error: this function's return value is unnecessarily wrapped by `Option`
   --> $DIR/unnecessary_wraps.rs:21:1
@@ -122,7 +123,8 @@ LL |     if a {
 LL |         Some(());
 LL ~         
 LL |     } else {
- ...
+LL ~         return ;
+   |
 
 error: this function's return value is unnecessary
   --> $DIR/unnecessary_wraps.rs:117:1