Skip to content

Commit

Permalink
Rollup merge of #69727 - JohnTitor:sugg-unwrap, r=estebank
Browse files Browse the repository at this point in the history
Avoid using `unwrap()` in suggestions

Fixes #69725

r? @estebank
  • Loading branch information
Centril committed Mar 7, 2020
2 parents b25fb9e + 3d67649 commit 93a57cf
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/librustc_typeck/check/method/suggest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -547,10 +547,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
(&self_ty.kind, parent_pred)
{
if let ty::Adt(def, _) = p.skip_binder().trait_ref.self_ty().kind {
let id = self.tcx.hir().as_local_hir_id(def.did).unwrap();
let node = self.tcx.hir().get(id);
let node = self
.tcx
.hir()
.as_local_hir_id(def.did)
.map(|id| self.tcx.hir().get(id));
match node {
hir::Node::Item(hir::Item { kind, .. }) => {
Some(hir::Node::Item(hir::Item { kind, .. })) => {
if let Some(g) = kind.generics() {
let key = match &g.where_clause.predicates[..] {
[.., pred] => {
Expand Down
8 changes: 8 additions & 0 deletions src/test/ui/issues/auxiliary/issue-69725.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#[derive(Clone)]
pub struct Struct<A>(A);

impl<A> Struct<A> {
pub fn new() -> Self {
todo!()
}
}
11 changes: 11 additions & 0 deletions src/test/ui/issues/issue-69725.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// aux-build:issue-69725.rs

extern crate issue_69725;
use issue_69725::Struct;

fn crash<A>() {
let _ = Struct::<A>::new().clone();
//~^ ERROR: no method named `clone` found
}

fn main() {}
18 changes: 18 additions & 0 deletions src/test/ui/issues/issue-69725.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
error[E0599]: no method named `clone` found for struct `issue_69725::Struct<A>` in the current scope
--> $DIR/issue-69725.rs:7:32
|
LL | let _ = Struct::<A>::new().clone();
| ^^^^^ method not found in `issue_69725::Struct<A>`
|
::: $DIR/auxiliary/issue-69725.rs:2:1
|
LL | pub struct Struct<A>(A);
| ------------------------ doesn't satisfy `issue_69725::Struct<A>: std::clone::Clone`
|
= note: the method `clone` exists but the following trait bounds were not satisfied:
`A: std::clone::Clone`
which is required by `issue_69725::Struct<A>: std::clone::Clone`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0599`.

0 comments on commit 93a57cf

Please sign in to comment.