Skip to content

Commit 3f3db93

Browse files
committed
metadata: Stop keeping AmbiguityKind in name bindings
It can only be `GlobVsGlob` now.
1 parent 2e123ae commit 3f3db93

4 files changed

Lines changed: 22 additions & 45 deletions

File tree

compiler/rustc_middle/src/metadata.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,9 @@ pub struct ModChild {
4545
pub reexport_chain: SmallVec<[Reexport; 2]>,
4646
}
4747

48-
#[derive(Debug, TyEncodable, TyDecodable, HashStable)]
49-
pub enum AmbigModChildKind {
50-
GlobVsGlob,
51-
GlobVsExpanded,
52-
}
53-
5448
/// Same as `ModChild`, however, it includes ambiguity error.
5549
#[derive(Debug, TyEncodable, TyDecodable, HashStable)]
5650
pub struct AmbigModChild {
5751
pub main: ModChild,
5852
pub second: ModChild,
59-
pub kind: AmbigModChildKind,
6053
}

compiler/rustc_resolve/src/build_reduced_graph.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rustc_hir::def::{self, *};
2222
use rustc_hir::def_id::{CRATE_DEF_ID, DefId, LocalDefId};
2323
use rustc_index::bit_set::DenseBitSet;
2424
use rustc_metadata::creader::LoadedMacro;
25-
use rustc_middle::metadata::{AmbigModChildKind, ModChild, Reexport};
25+
use rustc_middle::metadata::{ModChild, Reexport};
2626
use rustc_middle::ty::{Feed, Visibility};
2727
use rustc_middle::{bug, span_bug};
2828
use rustc_span::hygiene::{ExpnId, LocalExpnId, MacroKind};
@@ -36,9 +36,9 @@ use crate::imports::{ImportData, ImportKind};
3636
use crate::macros::{MacroRulesBinding, MacroRulesScope, MacroRulesScopeRef};
3737
use crate::ref_mut::CmCell;
3838
use crate::{
39-
AmbiguityKind, BindingKey, ExternPreludeEntry, Finalize, MacroData, Module, ModuleKind,
40-
ModuleOrUniformRoot, NameBinding, NameBindingData, NameBindingKind, ParentScope, PathResult,
41-
ResolutionError, Resolver, Segment, Used, VisResolutionError, errors,
39+
BindingKey, ExternPreludeEntry, Finalize, MacroData, Module, ModuleKind, ModuleOrUniformRoot,
40+
NameBinding, NameBindingData, NameBindingKind, ParentScope, PathResult, ResolutionError,
41+
Resolver, Segment, Used, VisResolutionError, errors,
4242
};
4343

4444
type Res = def::Res<NodeId>;
@@ -82,7 +82,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
8282
vis: Visibility<DefId>,
8383
span: Span,
8484
expansion: LocalExpnId,
85-
ambiguity: Option<(NameBinding<'ra>, AmbiguityKind)>,
85+
ambiguity: Option<NameBinding<'ra>>,
8686
) {
8787
let binding = self.arenas.alloc_name_binding(NameBindingData {
8888
kind: NameBindingKind::Res(res),
@@ -254,7 +254,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
254254
&child.main,
255255
parent_scope,
256256
children.len() + i,
257-
Some((&child.second, child.kind)),
257+
Some(&child.second),
258258
)
259259
}
260260
}
@@ -265,7 +265,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
265265
child: &ModChild,
266266
parent_scope: ParentScope<'ra>,
267267
child_index: usize,
268-
ambig_child: Option<(&ModChild, AmbigModChildKind)>,
268+
ambig_child: Option<&ModChild>,
269269
) {
270270
let parent = parent_scope.module;
271271
let child_span = |this: &Self, reexport_chain: &[Reexport], res: def::Res<_>| {
@@ -280,15 +280,11 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
280280
let span = child_span(self, reexport_chain, res);
281281
let res = res.expect_non_local();
282282
let expansion = parent_scope.expansion;
283-
let ambig = ambig_child.map(|(ambig_child, ambig_kind)| {
283+
let ambig = ambig_child.map(|ambig_child| {
284284
let ModChild { ident: _, res, vis, ref reexport_chain } = *ambig_child;
285285
let span = child_span(self, reexport_chain, res);
286286
let res = res.expect_non_local();
287-
let ambig_kind = match ambig_kind {
288-
AmbigModChildKind::GlobVsGlob => AmbiguityKind::GlobVsGlob,
289-
AmbigModChildKind::GlobVsExpanded => AmbiguityKind::GlobVsExpanded,
290-
};
291-
(self.arenas.new_res_binding(res, vis, span, expansion), ambig_kind)
287+
self.arenas.new_res_binding(res, vis, span, expansion)
292288
});
293289

294290
// Record primary definitions.

compiler/rustc_resolve/src/imports.rs

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rustc_errors::codes::*;
99
use rustc_errors::{Applicability, MultiSpan, pluralize, struct_span_code_err};
1010
use rustc_hir::def::{self, DefKind, PartialRes};
1111
use rustc_hir::def_id::{DefId, LocalDefIdMap};
12-
use rustc_middle::metadata::{AmbigModChild, AmbigModChildKind, ModChild, Reexport};
12+
use rustc_middle::metadata::{AmbigModChild, ModChild, Reexport};
1313
use rustc_middle::span_bug;
1414
use rustc_middle::ty::Visibility;
1515
use rustc_session::lint::BuiltinLintDiag;
@@ -32,10 +32,9 @@ use crate::errors::{
3232
};
3333
use crate::ref_mut::CmCell;
3434
use crate::{
35-
AmbiguityError, AmbiguityKind, BindingKey, CmResolver, Determinacy, Finalize, ImportSuggestion,
36-
Module, ModuleOrUniformRoot, NameBinding, NameBindingData, NameBindingKind, ParentScope,
37-
PathResult, PerNS, ResolutionError, Resolver, ScopeSet, Segment, Used, module_to_string,
38-
names_to_string,
35+
AmbiguityError, BindingKey, CmResolver, Determinacy, Finalize, ImportSuggestion, Module,
36+
ModuleOrUniformRoot, NameBinding, NameBindingData, NameBindingKind, ParentScope, PathResult,
37+
PerNS, ResolutionError, Resolver, ScopeSet, Segment, Used, module_to_string, names_to_string,
3938
};
4039

4140
type Res = def::Res<NodeId>;
@@ -373,7 +372,6 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
373372
resolution.glob_binding = Some(glob_binding);
374373
} else if res != old_glob_binding.res() {
375374
resolution.glob_binding = Some(this.new_ambiguity_binding(
376-
AmbiguityKind::GlobVsGlob,
377375
old_glob_binding,
378376
glob_binding,
379377
warn_ambiguity,
@@ -394,7 +392,6 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
394392
assert!(old_glob_binding.is_glob_import());
395393
if glob_binding.res() != old_glob_binding.res() {
396394
resolution.glob_binding = Some(this.new_ambiguity_binding(
397-
AmbiguityKind::GlobVsGlob,
398395
old_glob_binding,
399396
glob_binding,
400397
false,
@@ -424,12 +421,11 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
424421

425422
fn new_ambiguity_binding(
426423
&self,
427-
ambiguity_kind: AmbiguityKind,
428424
primary_binding: NameBinding<'ra>,
429425
secondary_binding: NameBinding<'ra>,
430426
warn_ambiguity: bool,
431427
) -> NameBinding<'ra> {
432-
let ambiguity = Some((secondary_binding, ambiguity_kind));
428+
let ambiguity = Some(secondary_binding);
433429
let data = NameBindingData { ambiguity, warn_ambiguity, ..*primary_binding };
434430
self.arenas.alloc_name_binding(data)
435431
}
@@ -645,7 +641,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
645641
let Some(binding) = resolution.best_binding() else { continue };
646642

647643
if let NameBindingKind::Import { import, .. } = binding.kind
648-
&& let Some((amb_binding, _)) = binding.ambiguity
644+
&& let Some(amb_binding) = binding.ambiguity
649645
&& binding.res() != Res::Err
650646
&& exported_ambiguities.contains(&binding)
651647
{
@@ -1553,23 +1549,15 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
15531549
vis: binding.vis,
15541550
reexport_chain,
15551551
};
1556-
if let Some((ambig_binding1, ambig_binding2, ambig_kind)) =
1557-
binding.descent_to_ambiguity()
1558-
{
1552+
if let Some((ambig_binding1, ambig_binding2)) = binding.descent_to_ambiguity() {
15591553
let main = child(ambig_binding1.reexport_chain(this));
15601554
let second = ModChild {
15611555
ident: ident.0,
15621556
res: ambig_binding2.res().expect_non_local(),
15631557
vis: ambig_binding2.vis,
15641558
reexport_chain: ambig_binding2.reexport_chain(this),
15651559
};
1566-
let kind = match ambig_kind {
1567-
AmbiguityKind::GlobVsGlob => AmbigModChildKind::GlobVsGlob,
1568-
AmbiguityKind::GlobVsExpanded => AmbigModChildKind::GlobVsExpanded,
1569-
_ => unreachable!(),
1570-
};
1571-
1572-
ambig_children.push(AmbigModChild { main, second, kind })
1560+
ambig_children.push(AmbigModChild { main, second })
15731561
} else {
15741562
children.push(child(binding.reexport_chain(this)));
15751563
}

compiler/rustc_resolve/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,7 @@ impl<'ra> fmt::Debug for Module<'ra> {
807807
#[derive(Clone, Copy, Debug)]
808808
struct NameBindingData<'ra> {
809809
kind: NameBindingKind<'ra>,
810-
ambiguity: Option<(NameBinding<'ra>, AmbiguityKind)>,
810+
ambiguity: Option<NameBinding<'ra>>,
811811
/// Produce a warning instead of an error when reporting ambiguities inside this binding.
812812
/// May apply to indirect ambiguities under imports, so `ambiguity.is_some()` is not required.
813813
warn_ambiguity: bool,
@@ -937,9 +937,9 @@ impl<'ra> NameBindingData<'ra> {
937937

938938
fn descent_to_ambiguity(
939939
self: NameBinding<'ra>,
940-
) -> Option<(NameBinding<'ra>, NameBinding<'ra>, AmbiguityKind)> {
940+
) -> Option<(NameBinding<'ra>, NameBinding<'ra>)> {
941941
match self.ambiguity {
942-
Some((ambig_binding, ambig_kind)) => Some((self, ambig_binding, ambig_kind)),
942+
Some(ambig_binding) => Some((self, ambig_binding)),
943943
None => match self.kind {
944944
NameBindingKind::Import { binding, .. } => binding.descent_to_ambiguity(),
945945
_ => None,
@@ -2064,9 +2064,9 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20642064
used: Used,
20652065
warn_ambiguity: bool,
20662066
) {
2067-
if let Some((b2, kind)) = used_binding.ambiguity {
2067+
if let Some(b2) = used_binding.ambiguity {
20682068
let ambiguity_error = AmbiguityError {
2069-
kind,
2069+
kind: AmbiguityKind::GlobVsGlob,
20702070
ident,
20712071
b1: used_binding,
20722072
b2,

0 commit comments

Comments
 (0)