`hir::Ty` doesn't seem to know anything about type bounds and `cx.tcx.type_of(def_id)` caused an ICE when it was passed a generic type with a bound: ``` src/librustc_typeck/collect.rs:1311: unexpected non-type Node::GenericParam: Type { default: None, synthetic: None } ``` Converting it to a proper `Ty` fixes the ICE and catches a few more places where the lint applies.
36 lines
726 B
Rust
36 lines
726 B
Rust
// run-rustfix
|
|
|
|
#![allow(dead_code)]
|
|
|
|
struct SizedStruct(i32);
|
|
struct UnsizedStruct([i32]);
|
|
|
|
/// The following should trigger the lint
|
|
mod should_trigger {
|
|
use super::SizedStruct;
|
|
|
|
struct StructWithVecBox {
|
|
sized_type: Vec<Box<SizedStruct>>,
|
|
}
|
|
|
|
struct A(Vec<Box<SizedStruct>>);
|
|
struct B(Vec<Vec<Box<(u32)>>>);
|
|
}
|
|
|
|
/// The following should not trigger the lint
|
|
mod should_not_trigger {
|
|
use super::UnsizedStruct;
|
|
|
|
struct C(Vec<Box<UnsizedStruct>>);
|
|
|
|
struct StructWithVecBoxButItsUnsized {
|
|
unsized_type: Vec<Box<UnsizedStruct>>,
|
|
}
|
|
|
|
struct TraitVec<T: ?Sized> {
|
|
// Regression test for #3720. This was causing an ICE.
|
|
inner: Vec<Box<T>>,
|
|
}
|
|
}
|
|
|
|
fn main() {}
|