diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2022-03-29 23:50:01 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2022-04-10 13:08:36 +0200 |
| commit | db03a2deb090d5c24f15ef30cf4e5ccb13690b9d (patch) | |
| tree | 0658d8e510c686e9554992b8013f977d71ce8c3e /compiler/rustc_const_eval | |
| parent | 341883d051ebbfaa6daa456b198d557fa0272b71 (diff) | |
| download | rust-db03a2deb090d5c24f15ef30cf4e5ccb13690b9d.tar.gz rust-db03a2deb090d5c24f15ef30cf4e5ccb13690b9d.zip | |
Avoid accessing HIR from MIR queries.
Diffstat (limited to 'compiler/rustc_const_eval')
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/check_consts/check.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/check_consts/mod.rs | 10 |
2 files changed, 4 insertions, 14 deletions
diff --git a/compiler/rustc_const_eval/src/transform/check_consts/check.rs b/compiler/rustc_const_eval/src/transform/check_consts/check.rs index e203c79030d..625f57b872b 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/check.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/check.rs @@ -222,7 +222,7 @@ impl<'mir, 'tcx> Checker<'mir, 'tcx> { // `async` functions cannot be `const fn`. This is checked during AST lowering, so there's // no need to emit duplicate errors here. - if is_async_fn(self.ccx) || body.generator.is_some() { + if self.ccx.is_async() || body.generator.is_some() { tcx.sess.delay_span_bug(body.span, "`async` functions cannot be `const fn`"); return; } @@ -1056,12 +1056,8 @@ fn is_int_bool_or_char(ty: Ty<'_>) -> bool { ty.is_bool() || ty.is_integral() || ty.is_char() } -fn is_async_fn(ccx: &ConstCx<'_, '_>) -> bool { - ccx.fn_sig().map_or(false, |sig| sig.header.asyncness == hir::IsAsync::Async) -} - fn emit_unstable_in_stable_error(ccx: &ConstCx<'_, '_>, span: Span, gate: Symbol) { - let attr_span = ccx.fn_sig().map_or(ccx.body.span, |sig| sig.span.shrink_to_lo()); + let attr_span = ccx.tcx.def_span(ccx.def_id()).shrink_to_lo(); ccx.tcx .sess diff --git a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs index b026bb2bad6..25ba97ee605 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs @@ -61,14 +61,8 @@ impl<'mir, 'tcx> ConstCx<'mir, 'tcx> { && is_const_stable_const_fn(self.tcx, self.def_id().to_def_id()) } - /// Returns the function signature of the item being const-checked if it is a `fn` or `const fn`. - pub fn fn_sig(&self) -> Option<&'tcx hir::FnSig<'tcx>> { - // Get this from the HIR map instead of a query to avoid cycle errors. - // - // FIXME: Is this still an issue? - let hir_map = self.tcx.hir(); - let hir_id = hir_map.local_def_id_to_hir_id(self.def_id()); - hir_map.fn_sig_by_hir_id(hir_id) + fn is_async(&self) -> bool { + self.tcx.asyncness(self.def_id()) == hir::IsAsync::Async } } |
