Skip to content

Commit 4ca8707

Browse files
committed
Remove lit_to_mir_constant query
1 parent aa3a186 commit 4ca8707

File tree

6 files changed

+11
-16
lines changed

6 files changed

+11
-16
lines changed

compiler/rustc_middle/src/query/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,10 +1092,6 @@ rustc_queries! {
10921092
desc { "converting literal to const" }
10931093
}
10941094

1095-
query lit_to_mir_constant(key: LitToConstInput<'tcx>) -> Result<mir::ConstantKind<'tcx>, LitToConstError> {
1096-
desc { "converting literal to mir constant" }
1097-
}
1098-
10991095
query check_match(key: LocalDefId) -> Result<(), rustc_errors::ErrorGuaranteed> {
11001096
desc { |tcx| "match-checking `{}`", tcx.def_path_str(key) }
11011097
cache_on_disk_if { true }

compiler/rustc_mir_build/src/build/expr/as_constant.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ pub fn as_constant_inner<'tcx>(
106106
}
107107

108108
#[instrument(skip(tcx, lit_input))]
109-
pub(crate) fn lit_to_mir_constant<'tcx>(
109+
fn lit_to_mir_constant<'tcx>(
110110
tcx: TyCtxt<'tcx>,
111111
lit_input: LitToConstInput<'tcx>,
112112
) -> Result<ConstantKind<'tcx>, LitToConstError> {

compiler/rustc_mir_build/src/build/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub(crate) use crate::build::expr::as_constant::lit_to_mir_constant;
21
use crate::build::expr::as_place::PlaceBuilder;
32
use crate::build::scope::DropKind;
43
use rustc_apfloat::ieee::{Double, Single};

compiler/rustc_mir_build/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ fluent_messages! { "../messages.ftl" }
3232
pub fn provide(providers: &mut Providers) {
3333
providers.check_match = thir::pattern::check_match;
3434
providers.lit_to_const = thir::constant::lit_to_const;
35-
providers.lit_to_mir_constant = build::lit_to_mir_constant;
3635
providers.mir_built = build::mir_built;
3736
providers.thir_check_unsafety = check_unsafety::thir_check_unsafety;
3837
providers.thir_body = thir::cx::thir_body;

compiler/rustc_mir_build/src/thir/constant.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ pub(crate) fn lit_to_const<'tcx>(
4848
(ast::LitKind::Byte(n), ty::Uint(ty::UintTy::U8)) => {
4949
ty::ValTree::from_scalar_int((*n).into())
5050
}
51+
(ast::LitKind::CStr(data, _), ty::Ref(_, inner_ty, _)) if matches!(inner_ty.kind(), ty::Adt(def, _) if Some(def.did()) == tcx.lang_items().c_str()) =>
52+
{
53+
let bytes = data as &[u8];
54+
ty::ValTree::from_raw_bytes(tcx, bytes)
55+
}
5156
(ast::LitKind::Int(n, _), ty::Uint(_)) | (ast::LitKind::Int(n, _), ty::Int(_)) => {
5257
let scalar_int =
5358
trunc(if neg { (*n as i128).overflowing_neg().0 as u128 } else { *n })?;

compiler/rustc_mir_build/src/thir/pattern/mod.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use rustc_index::Idx;
2020
use rustc_middle::mir::interpret::{
2121
ConstValue, ErrorHandled, GlobalId, LitToConstError, LitToConstInput, Scalar,
2222
};
23-
use rustc_middle::mir::{self, UserTypeProjection};
23+
use rustc_middle::mir::{self, ConstantKind, UserTypeProjection};
2424
use rustc_middle::mir::{BorrowKind, Mutability};
2525
use rustc_middle::thir::{Ascription, BindingMode, FieldPat, LocalVarId, Pat, PatKind, PatRange};
2626
use rustc_middle::ty::subst::{GenericArg, SubstsRef};
@@ -646,14 +646,10 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
646646

647647
let lit_input =
648648
LitToConstInput { lit: &lit.node, ty: self.typeck_results.expr_ty(expr), neg };
649-
match self
650-
.tcx
651-
.at(expr.span)
652-
.lit_to_const(lit_input)
653-
.map(mir::ConstantKind::Ty)
654-
.or_else(|_| self.tcx.at(expr.span).lit_to_mir_constant(lit_input))
655-
{
656-
Ok(constant) => self.const_to_pat(constant, expr.hir_id, lit.span, None).kind,
649+
match self.tcx.at(expr.span).lit_to_const(lit_input) {
650+
Ok(constant) => {
651+
self.const_to_pat(ConstantKind::Ty(constant), expr.hir_id, lit.span, None).kind
652+
}
657653
Err(LitToConstError::Reported(_)) => PatKind::Wild,
658654
Err(LitToConstError::TypeError) => bug!("lower_lit: had type error"),
659655
}

0 commit comments

Comments
 (0)