Skip to content

Commit eb6f856

Browse files
Remove ConstVariableOriginKind
1 parent 34bce07 commit eb6f856

File tree

10 files changed

+26
-63
lines changed

10 files changed

+26
-63
lines changed

compiler/rustc_hir_typeck/src/demand.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -354,10 +354,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
354354
if let ty::ConstKind::Infer(_) = ct.kind() {
355355
self.next_const_var(
356356
ct.ty(),
357-
ConstVariableOrigin {
358-
kind: ConstVariableOriginKind::MiscVariable,
359-
span: DUMMY_SP,
360-
},
357+
ConstVariableOrigin { param_def_id: None, span: DUMMY_SP },
361358
)
362359
} else {
363360
ct

compiler/rustc_hir_typeck/src/fn_ctxt/mod.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use rustc_infer::infer;
1717
use rustc_infer::infer::error_reporting::sub_relations::SubRelations;
1818
use rustc_infer::infer::error_reporting::TypeErrCtxt;
1919
use rustc_infer::infer::type_variable::TypeVariableOrigin;
20-
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
20+
use rustc_middle::infer::unify_key::ConstVariableOrigin;
2121
use rustc_middle::ty::{self, Const, Ty, TyCtxt, TypeVisitableExt};
2222
use rustc_session::Session;
2323
use rustc_span::symbol::Ident;
@@ -255,10 +255,7 @@ impl<'a, 'tcx> HirTyLowerer<'tcx> for FnCtxt<'a, 'tcx> {
255255
},
256256
) => self.var_for_effect(param).as_const().unwrap(),
257257
Some(param) => self.var_for_def(span, param).as_const().unwrap(),
258-
None => self.next_const_var(
259-
ty,
260-
ConstVariableOrigin { kind: ConstVariableOriginKind::ConstInference, span },
261-
),
258+
None => self.next_const_var(ty, ConstVariableOrigin { span, param_def_id: None }),
262259
}
263260
}
264261

compiler/rustc_hir_typeck/src/method/suggest.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use rustc_hir::PatKind::Binding;
2323
use rustc_hir::PathSegment;
2424
use rustc_hir::{ExprKind, Node, QPath};
2525
use rustc_infer::infer::{self, type_variable::TypeVariableOrigin, RegionVariableOrigin};
26-
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
26+
use rustc_middle::infer::unify_key::ConstVariableOrigin;
2727
use rustc_middle::ty::fast_reject::DeepRejectCtxt;
2828
use rustc_middle::ty::fast_reject::{simplify_type, TreatParams};
2929
use rustc_middle::ty::print::{with_crate_prefix, with_forced_trimmed_paths};
@@ -1859,7 +1859,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
18591859
arg.ty(),
18601860
ConstVariableOrigin {
18611861
span: rustc_span::DUMMY_SP,
1862-
kind: ConstVariableOriginKind::MiscVariable,
1862+
param_def_id: None,
18631863
},
18641864
)
18651865
.into(),

compiler/rustc_infer/src/infer/canonical/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
//!
2222
//! [c]: https://rust-lang.github.io/chalk/book/canonical_queries/canonicalization.html
2323
24-
use crate::infer::{ConstVariableOrigin, ConstVariableOriginKind};
24+
use crate::infer::ConstVariableOrigin;
2525
use crate::infer::{InferCtxt, RegionVariableOrigin, TypeVariableOrigin};
2626
use rustc_index::IndexVec;
2727
use rustc_middle::infer::unify_key::EffectVarValue;
@@ -148,7 +148,7 @@ impl<'tcx> InferCtxt<'tcx> {
148148
CanonicalVarKind::Const(ui, ty) => self
149149
.next_const_var_in_universe(
150150
ty,
151-
ConstVariableOrigin { kind: ConstVariableOriginKind::MiscVariable, span },
151+
ConstVariableOrigin { param_def_id: None, span },
152152
universe_map(ui),
153153
)
154154
.into(),

compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs

+6-13
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
1313
use rustc_hir::intravisit::{self, Visitor};
1414
use rustc_hir::{Body, Closure, Expr, ExprKind, FnRetTy, HirId, LetStmt, LocalSource};
1515
use rustc_middle::hir::nested_filter;
16-
use rustc_middle::infer::unify_key::{
17-
ConstVariableOrigin, ConstVariableOriginKind, ConstVariableValue,
18-
};
16+
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableValue};
1917
use rustc_middle::ty::adjustment::{Adjust, Adjustment, AutoBorrow};
2018
use rustc_middle::ty::print::{FmtPrinter, PrettyPrinter, Print, Printer};
2119
use rustc_middle::ty::{
@@ -217,8 +215,8 @@ fn fmt_printer<'a, 'tcx>(infcx: &'a InferCtxt<'tcx>, ns: Namespace) -> FmtPrinte
217215
None
218216
}
219217
ConstVariableValue::Unknown { origin, universe: _ } => {
220-
if let ConstVariableOriginKind::ConstParameterDefinition(name, _) = origin.kind {
221-
return Some(name);
218+
if let Some(def_id) = origin.param_def_id {
219+
Some(infcx.tcx.item_name(def_id))
222220
} else {
223221
None
224222
}
@@ -341,11 +339,9 @@ impl<'tcx> InferCtxt<'tcx> {
341339
}
342340
ConstVariableValue::Unknown { origin, universe: _ } => origin,
343341
};
344-
if let ConstVariableOriginKind::ConstParameterDefinition(name, def_id) =
345-
origin.kind
346-
{
342+
if let Some(def_id) = origin.param_def_id {
347343
return InferenceDiagnosticsData {
348-
name: name.to_string(),
344+
name: self.tcx.item_name(def_id).to_string(),
349345
span: Some(origin.span),
350346
kind: UnderspecifiedArgKind::Const { is_parameter: true },
351347
parent: InferenceDiagnosticsParentData::for_def_id(self.tcx, def_id),
@@ -555,10 +551,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
555551
GenericArgKind::Const(arg) => self
556552
.next_const_var(
557553
arg.ty(),
558-
ConstVariableOrigin {
559-
span: DUMMY_SP,
560-
kind: ConstVariableOriginKind::MiscVariable,
561-
},
554+
ConstVariableOrigin { span: DUMMY_SP, param_def_id: None },
562555
)
563556
.into(),
564557
}

compiler/rustc_infer/src/infer/mod.rs

+3-12
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
3030
use rustc_middle::infer::canonical::{Canonical, CanonicalVarValues};
3131
use rustc_middle::infer::unify_key::ConstVariableValue;
3232
use rustc_middle::infer::unify_key::EffectVarValue;
33-
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind, ToType};
33+
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ToType};
3434
use rustc_middle::infer::unify_key::{ConstVidKey, EffectVidKey};
3535
use rustc_middle::mir::interpret::{ErrorHandled, EvalToValTreeResult};
3636
use rustc_middle::mir::ConstraintCategory;
@@ -1120,13 +1120,7 @@ impl<'tcx> InferCtxt<'tcx> {
11201120
if is_host_effect {
11211121
return self.var_for_effect(param);
11221122
}
1123-
let origin = ConstVariableOrigin {
1124-
kind: ConstVariableOriginKind::ConstParameterDefinition(
1125-
param.name,
1126-
param.def_id,
1127-
),
1128-
span,
1129-
};
1123+
let origin = ConstVariableOrigin { param_def_id: Some(param.def_id), span };
11301124
let const_var_id = self
11311125
.inner
11321126
.borrow_mut()
@@ -1417,10 +1411,7 @@ impl<'tcx> InferCtxt<'tcx> {
14171411
self.infcx
14181412
.next_const_var(
14191413
ty,
1420-
ConstVariableOrigin {
1421-
kind: ConstVariableOriginKind::MiscVariable,
1422-
span: self.span,
1423-
},
1414+
ConstVariableOrigin { param_def_id: None, span: self.span },
14241415
)
14251416
.into()
14261417
})

compiler/rustc_infer/src/infer/snapshot/fudge.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use rustc_middle::infer::unify_key::{ConstVariableOriginKind, ConstVariableValue, ConstVidKey};
1+
use rustc_middle::infer::unify_key::{ConstVariableValue, ConstVidKey};
22
use rustc_middle::ty::fold::{TypeFoldable, TypeFolder, TypeSuperFoldable};
33
use rustc_middle::ty::{self, ConstVid, FloatVid, IntVid, RegionVid, Ty, TyCtxt, TyVid};
44

@@ -33,10 +33,9 @@ fn const_vars_since_snapshot<'tcx>(
3333
range.start.vid..range.end.vid,
3434
(range.start.index()..range.end.index())
3535
.map(|index| match table.probe_value(ConstVid::from_u32(index)) {
36-
ConstVariableValue::Known { value: _ } => ConstVariableOrigin {
37-
kind: ConstVariableOriginKind::MiscVariable,
38-
span: rustc_span::DUMMY_SP,
39-
},
36+
ConstVariableValue::Known { value: _ } => {
37+
ConstVariableOrigin { param_def_id: None, span: rustc_span::DUMMY_SP }
38+
}
4039
ConstVariableValue::Unknown { origin, universe: _ } => origin,
4140
})
4241
.collect(),

compiler/rustc_middle/src/infer/unify_key.rs

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::ty::{self, Ty, TyCtxt};
22
use rustc_data_structures::unify::{NoError, UnifyKey, UnifyValue};
33
use rustc_span::def_id::DefId;
4-
use rustc_span::symbol::Symbol;
54
use rustc_span::Span;
65
use std::cmp;
76
use std::marker::PhantomData;
@@ -106,16 +105,9 @@ impl ToType for ty::FloatVarValue {
106105

107106
#[derive(Copy, Clone, Debug)]
108107
pub struct ConstVariableOrigin {
109-
pub kind: ConstVariableOriginKind,
110108
pub span: Span,
111-
}
112-
113-
/// Reasons to create a const inference variable
114-
#[derive(Copy, Clone, Debug)]
115-
pub enum ConstVariableOriginKind {
116-
MiscVariable,
117-
ConstInference,
118-
ConstParameterDefinition(Symbol, DefId),
109+
// `DefId` of the const parameter this was instantiated for, if any.
110+
pub param_def_id: Option<DefId>,
119111
}
120112

121113
#[derive(Copy, Clone, Debug)]

compiler/rustc_trait_selection/src/solve/eval_ctxt/mod.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use rustc_infer::traits::query::NoSolution;
1010
use rustc_infer::traits::solve::{MaybeCause, NestedNormalizationGoals};
1111
use rustc_infer::traits::ObligationCause;
1212
use rustc_middle::infer::canonical::CanonicalVarInfos;
13-
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
13+
use rustc_middle::infer::unify_key::ConstVariableOrigin;
1414
use rustc_middle::traits::solve::inspect;
1515
use rustc_middle::traits::solve::{
1616
CanonicalInput, CanonicalResponse, Certainty, PredefinedOpaques, PredefinedOpaquesData,
@@ -591,10 +591,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
591591
}
592592

593593
pub(super) fn next_const_infer(&self, ty: Ty<'tcx>) -> ty::Const<'tcx> {
594-
self.infcx.next_const_var(
595-
ty,
596-
ConstVariableOrigin { kind: ConstVariableOriginKind::MiscVariable, span: DUMMY_SP },
597-
)
594+
self.infcx.next_const_var(ty, ConstVariableOrigin { param_def_id: None, span: DUMMY_SP })
598595
}
599596

600597
/// Returns a ty infer or a const infer depending on whether `kind` is a `Ty` or `Const`.

compiler/rustc_trait_selection/src/solve/normalize.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_infer::infer::type_variable::TypeVariableOrigin;
77
use rustc_infer::infer::InferCtxt;
88
use rustc_infer::traits::TraitEngineExt;
99
use rustc_infer::traits::{FulfillmentError, Obligation, TraitEngine};
10-
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
10+
use rustc_middle::infer::unify_key::ConstVariableOrigin;
1111
use rustc_middle::traits::ObligationCause;
1212
use rustc_middle::ty::{self, AliasTy, Ty, TyCtxt, UniverseIndex};
1313
use rustc_middle::ty::{FallibleTypeFolder, TypeFolder, TypeSuperFoldable};
@@ -122,10 +122,7 @@ impl<'tcx> NormalizationFolder<'_, 'tcx> {
122122

123123
let new_infer_ct = infcx.next_const_var(
124124
ty,
125-
ConstVariableOrigin {
126-
kind: ConstVariableOriginKind::MiscVariable,
127-
span: self.at.cause.span,
128-
},
125+
ConstVariableOrigin { param_def_id: None, span: self.at.cause.span },
129126
);
130127
let obligation = Obligation::new(
131128
tcx,

0 commit comments

Comments
 (0)