clear DefId
when an expression's type changes to non-adt
This commit is contained in:
parent
124e68bef8
commit
9f5d31ef86
@ -90,7 +90,7 @@ fn expr_type_certainty(cx: &LateContext<'_>, expr: &Expr<'_>) -> Certainty {
|
|||||||
if let Some(def_id) = adt_def_id(expr_ty) {
|
if let Some(def_id) = adt_def_id(expr_ty) {
|
||||||
certainty.with_def_id(def_id)
|
certainty.with_def_id(def_id)
|
||||||
} else {
|
} else {
|
||||||
certainty
|
certainty.clear_def_id()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
tests/ui/crashes/ice-12585.rs
Normal file
26
tests/ui/crashes/ice-12585.rs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#![allow(clippy::unit_arg)]
|
||||||
|
|
||||||
|
struct One {
|
||||||
|
x: i32,
|
||||||
|
}
|
||||||
|
struct Two {
|
||||||
|
x: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Product {}
|
||||||
|
|
||||||
|
impl Product {
|
||||||
|
pub fn a_method(self, _: ()) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_array(_: [i32; 2]) -> Product {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
let one = One { x: 1 };
|
||||||
|
let two = Two { x: 2 };
|
||||||
|
|
||||||
|
let product = from_array([one.x, two.x]);
|
||||||
|
product.a_method(<()>::default());
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user