Skip to content

Commit 38025e0

Browse files
committed
Fix rebase
1 parent 139d109 commit 38025e0

File tree

5 files changed

+18
-16
lines changed

5 files changed

+18
-16
lines changed

src/librustc_resolve/build_reduced_graph.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,18 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
126126
parent_prefix, use_tree, nested);
127127

128128
let mut prefix_iter = parent_prefix.iter().cloned()
129-
.chain(use_tree.prefix.segments.iter().map(|seg| seg.ident)).peekable();
129+
.chain(use_tree.prefix.segments.iter().map(|seg| seg.into())).peekable();
130130

131131
// On 2015 edition imports are resolved as crate-relative by default,
132132
// so prefixes are prepended with crate root segment if necessary.
133133
// The root is prepended lazily, when the first non-empty prefix or terminating glob
134134
// appears, so imports in braced groups can have roots prepended independently.
135135
let is_glob = if let ast::UseTreeKind::Glob = use_tree.kind { true } else { false };
136136
let crate_root = if !self.session.rust_2018() &&
137-
prefix_iter.peek().map_or(is_glob, |ident| !ident.is_path_segment_keyword()) {
138-
Some(Ident::new(keywords::CrateRoot.name(), use_tree.prefix.span.shrink_to_lo()))
137+
prefix_iter.peek().map_or(is_glob, |seg| !seg.ident.is_path_segment_keyword()) {
138+
Some(Segment::from_ident(Ident::new(
139+
keywords::CrateRoot.name(), use_tree.prefix.span.shrink_to_lo()
140+
)))
139141
} else {
140142
None
141143
};

src/librustc_resolve/error_reporting.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
use {CrateLint, PathResult, Segment};
1212
use macros::ParentScope;
1313

14-
use syntax::ast::Ident;
1514
use syntax::symbol::keywords;
1615
use syntax_pos::Span;
1716

@@ -31,12 +30,12 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> {
3130
match (path.get(0), path.get(1)) {
3231
// `{{root}}::ident::...` on both editions.
3332
// On 2015 `{{root}}` is usually added implicitly.
34-
(Some(fst), Some(snd)) if fst.name == keywords::CrateRoot.name() &&
35-
!snd.is_path_segment_keyword() => {}
33+
(Some(fst), Some(snd)) if fst.ident.name == keywords::CrateRoot.name() &&
34+
!snd.ident.is_path_segment_keyword() => {}
3635
// `ident::...` on 2018
37-
(Some(fst), _) if self.session.rust_2018() && !fst.is_path_segment_keyword() => {
36+
(Some(fst), _) if self.session.rust_2018() && !fst.ident.is_path_segment_keyword() => {
3837
// Insert a placeholder that's later replaced by `self`/`super`/etc.
39-
path.insert(0, keywords::Invalid.ident());
38+
path.insert(0, Segment::from_ident(keywords::Invalid.ident()));
4039
}
4140
_ => return None,
4241
}

src/librustc_resolve/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1747,8 +1747,8 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
17471747
let segments = &path.segments;
17481748
let path = Segment::from_path(&path);
17491749
// FIXME (Manishearth): Intra doc links won't get warned of epoch changes
1750-
match self.resolve_path_without_parent_scope(&path, Some(namespace), true, span,
1751-
CrateLint::No) {
1750+
let def = match self.resolve_path_without_parent_scope(&path, Some(namespace), true,
1751+
span, CrateLint::No) {
17521752
PathResult::Module(ModuleOrUniformRoot::Module(module)) =>
17531753
module.def().unwrap(),
17541754
PathResult::NonModule(path_res) if path_res.unresolved_segments() == 0 =>

src/librustc_resolve/macros.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
// except according to those terms.
1010

1111
use {AmbiguityError, AmbiguityKind, AmbiguityErrorMisc};
12-
use {CrateLint, Resolver, ResolutionError, Weak};
12+
use {CrateLint, Resolver, ResolutionError, Segment, Weak};
1313
use {Module, ModuleKind, NameBinding, NameBindingKind, PathResult, ToNameBinding};
14-
use {is_known_tool, names_to_string, resolve_error};
14+
use {is_known_tool, resolve_error};
1515
use ModuleOrUniformRoot;
1616
use Namespace::{self, *};
1717
use build_reduced_graph::{BuildReducedGraphVisitor, IsMacroExport};
@@ -946,7 +946,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
946946
pub fn finalize_current_module_macro_resolutions(&mut self) {
947947
let module = self.current_module;
948948

949-
let check_consistency = |this: &mut Self, path: &[Ident], span,
949+
let check_consistency = |this: &mut Self, path: &[Segment], span,
950950
kind: MacroKind, initial_def, def| {
951951
if let Some(initial_def) = initial_def {
952952
if def != initial_def && def != Def::Err && this.ambiguity_errors.is_empty() {
@@ -965,7 +965,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
965965
// less informative error if the privacy error is reported elsewhere.
966966
if this.privacy_errors.is_empty() {
967967
let msg = format!("cannot determine resolution for the {} `{}`",
968-
kind.descr(), names_to_string(path));
968+
kind.descr(), Segment::names_to_string(path));
969969
let msg_note = "import resolution is stuck, try simplifying macro imports";
970970
this.session.struct_span_err(span, &msg).note(msg_note).emit();
971971
}
@@ -1007,7 +1007,8 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
10071007
initial_binding.def_ignoring_ambiguity()
10081008
});
10091009
let def = binding.def_ignoring_ambiguity();
1010-
check_consistency(self, &[ident], ident.span, kind, initial_def, def);
1010+
let seg = Segment::from_ident(ident);
1011+
check_consistency(self, &[seg], ident.span, kind, initial_def, def);
10111012
}
10121013
Err(..) => {
10131014
assert!(initial_binding.is_none());

src/test/ui/imports/issue-55457.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ error[E0432]: unresolved import `non_existent`
88
--> $DIR/issue-55457.rs:2:5
99
|
1010
LL | use non_existent::non_existent; //~ ERROR unresolved import `non_existent`
11-
| ^^^^^^^^^^^^ Maybe a missing `extern crate non_existent;`?
11+
| ^^^^^^^^^^^^ maybe a missing `extern crate non_existent;`?
1212

1313
error: cannot determine resolution for the derive macro `NonExistent`
1414
--> $DIR/issue-55457.rs:5:10

0 commit comments

Comments
 (0)