From 59e621c1969fb03c5d367e9c713c0279461e772f Mon Sep 17 00:00:00 2001 From: David Wood Date: Fri, 24 Jul 2020 13:16:54 +0100 Subject: interp: needs_subst -> ensure_monomorphic_enough 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 --- src/test/ui/issues/issue-74614.rs | 1 + src/test/ui/polymorphization/issue-74636.rs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/test/ui/polymorphization/issue-74636.rs (limited to 'src/test') diff --git a/src/test/ui/issues/issue-74614.rs b/src/test/ui/issues/issue-74614.rs index f5e8deb29fb..8b0c00b1355 100644 --- a/src/test/ui/issues/issue-74614.rs +++ b/src/test/ui/issues/issue-74614.rs @@ -1,3 +1,4 @@ +// compile-flags:-Zpolymorphize=on // build-pass fn test() { diff --git a/src/test/ui/polymorphization/issue-74636.rs b/src/test/ui/polymorphization/issue-74636.rs new file mode 100644 index 00000000000..4c532f451e3 --- /dev/null +++ b/src/test/ui/polymorphization/issue-74636.rs @@ -0,0 +1,16 @@ +// compile-flags:-Zpolymorphize=on +// build-pass + +use std::any::TypeId; + +pub fn foo(_: T) -> TypeId { + TypeId::of::() +} + +fn outer() { + foo(|| ()); +} + +fn main() { + outer::(); +} -- cgit 1.4.1-3-g733a5