This commit adds a `ensure_monomorphic_enough` utility function which checks whether a type needs substitution, but only for parameters that the `unused_generic_params` query considers used. `ensure_monomorphic_enough` is then used throughout interpret where `needs_subst` checks previously existed (in particular, for some pointer casts and for reflection intrinsics more precise). Signed-off-by: David Wood <david@davidtw.co>
16 lines
216 B
Rust
16 lines
216 B
Rust
// compile-flags:-Zpolymorphize=on
|
|
// build-pass
|
|
|
|
use std::any::TypeId;
|
|
|
|
pub fn foo<T: 'static>(_: T) -> TypeId {
|
|
TypeId::of::<T>()
|
|
}
|
|
|
|
fn outer<T: 'static>() {
|
|
foo(|| ());
|
|
}
|
|
|
|
fn main() {
|
|
outer::<u8>();
|
|
}
|