Skip to content

Commit 48be671

Browse files
Remove ConstVariableOriginKind
1 parent 3f83f0c commit 48be671

File tree

10 files changed

+26
-60
lines changed

10 files changed

+26
-60
lines changed

Diff for: 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

Diff for: 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

Diff for: 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};
@@ -1831,7 +1831,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
18311831
arg.ty(),
18321832
ConstVariableOrigin {
18331833
span: rustc_span::DUMMY_SP,
1834-
kind: ConstVariableOriginKind::MiscVariable,
1834+
param_def_id: None,
18351835
},
18361836
)
18371837
.into(),

Diff for: 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(),

Diff for: compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs

+6-10
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::{self, InferConst};
@@ -192,8 +190,8 @@ fn fmt_printer<'a, 'tcx>(infcx: &'a InferCtxt<'tcx>, ns: Namespace) -> FmtPrinte
192190
None
193191
}
194192
ConstVariableValue::Unknown { origin, universe: _ } => {
195-
if let ConstVariableOriginKind::ConstParameterDefinition(name, _) = origin.kind {
196-
return Some(name);
193+
if let Some(def_id) = origin.param_def_id {
194+
Some(infcx.tcx.item_name(def_id))
197195
} else {
198196
None
199197
}
@@ -317,11 +315,9 @@ impl<'tcx> InferCtxt<'tcx> {
317315
}
318316
ConstVariableValue::Unknown { origin, universe: _ } => origin,
319317
};
320-
if let ConstVariableOriginKind::ConstParameterDefinition(name, def_id) =
321-
origin.kind
322-
{
318+
if let Some(def_id) = origin.param_def_id {
323319
return InferenceDiagnosticsData {
324-
name: name.to_string(),
320+
name: self.tcx.item_name(def_id).to_string(),
325321
span: Some(origin.span),
326322
kind: UnderspecifiedArgKind::Const { is_parameter: true },
327323
parent: InferenceDiagnosticsParentData::for_def_id(self.tcx, def_id),
@@ -527,7 +523,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
527523
arg.ty(),
528524
ConstVariableOrigin {
529525
span: rustc_span::DUMMY_SP,
530-
kind: ConstVariableOriginKind::MiscVariable,
526+
param_def_id: None,
531527
},
532528
)
533529
.into(),

Diff for: 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;
@@ -1114,13 +1114,7 @@ impl<'tcx> InferCtxt<'tcx> {
11141114
if is_host_effect {
11151115
return self.var_for_effect(param);
11161116
}
1117-
let origin = ConstVariableOrigin {
1118-
kind: ConstVariableOriginKind::ConstParameterDefinition(
1119-
param.name,
1120-
param.def_id,
1121-
),
1122-
span,
1123-
};
1117+
let origin = ConstVariableOrigin { param_def_id: Some(param.def_id), span };
11241118
let const_var_id = self
11251119
.inner
11261120
.borrow_mut()
@@ -1405,10 +1399,7 @@ impl<'tcx> InferCtxt<'tcx> {
14051399
self.infcx
14061400
.next_const_var(
14071401
ty,
1408-
ConstVariableOrigin {
1409-
kind: ConstVariableOriginKind::MiscVariable,
1410-
span: self.span,
1411-
},
1402+
ConstVariableOrigin { param_def_id: None, span: self.span },
14121403
)
14131404
.into()
14141405
})

Diff for: 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(),

Diff for: 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)]

Diff for: 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,
@@ -593,10 +593,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
593593
}
594594

595595
pub(super) fn next_const_infer(&self, ty: Ty<'tcx>) -> ty::Const<'tcx> {
596-
self.infcx.next_const_var(
597-
ty,
598-
ConstVariableOrigin { kind: ConstVariableOriginKind::MiscVariable, span: DUMMY_SP },
599-
)
596+
self.infcx.next_const_var(ty, ConstVariableOrigin { param_def_id: None, span: DUMMY_SP })
600597
}
601598

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

Diff for: 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)