diff options
| author | Tyler Mandry <tmandry@gmail.com> | 2019-10-11 15:09:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-11 15:09:42 -0700 |
| commit | ea0d155f2d0fa8328c93ee7ca52f96ccd764ccf0 (patch) | |
| tree | 69408fb9053a57ce42a8e5babf752d448ed05143 /src/librustc_mir | |
| parent | 215b09194f2ca1c19b1b5b4f5de4044671d6ad9a (diff) | |
| parent | 8569dd1db985509cd235fafdd962aa52ced68e35 (diff) | |
| download | rust-ea0d155f2d0fa8328c93ee7ca52f96ccd764ccf0.tar.gz rust-ea0d155f2d0fa8328c93ee7ca52f96ccd764ccf0.zip | |
Rollup merge of #64986 - skinny121:fn-ptr-const-generics, r=varkor
Function pointers as const generic arguments Makes function pointers as const generic arguments usable. Fixes #62395 r? @varkor
Diffstat (limited to 'src/librustc_mir')
| -rw-r--r-- | src/librustc_mir/monomorphize/collector.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/librustc_mir/monomorphize/collector.rs b/src/librustc_mir/monomorphize/collector.rs index 3f0a2674305..8f8df395053 100644 --- a/src/librustc_mir/monomorphize/collector.rs +++ b/src/librustc_mir/monomorphize/collector.rs @@ -1272,7 +1272,14 @@ fn collect_const<'tcx>( ) { debug!("visiting const {:?}", constant); - match constant.val { + let param_env = ty::ParamEnv::reveal_all(); + let substituted_constant = tcx.subst_and_normalize_erasing_regions( + param_substs, + param_env, + &constant, + ); + + match substituted_constant.val { ConstValue::Scalar(Scalar::Ptr(ptr)) => collect_miri(tcx, ptr.alloc_id, output), ConstValue::Slice { data: alloc, start: _, end: _ } | @@ -1282,12 +1289,6 @@ fn collect_const<'tcx>( } } ConstValue::Unevaluated(def_id, substs) => { - let param_env = ty::ParamEnv::reveal_all(); - let substs = tcx.subst_and_normalize_erasing_regions( - param_substs, - param_env, - &substs, - ); let instance = ty::Instance::resolve(tcx, param_env, def_id, @@ -1304,7 +1305,7 @@ fn collect_const<'tcx>( tcx.def_span(def_id), "collection encountered polymorphic constant", ), } - } + }, _ => {}, } } |
