diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 3aea26c6829..6370a520183 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -147,7 +147,6 @@ pub trait Resolver { fn resolve_hir_path( &mut self, path: &ast::Path, - args: Option
>, is_value: bool, ) -> hir::Path; @@ -168,7 +167,6 @@ pub trait Resolver { span: Span, crate_root: Option<&str>, components: &[&str], - args: Option
>, is_value: bool, ) -> hir::Path; } @@ -4856,7 +4854,9 @@ impl<'a> LoweringContext<'a> { is_value: bool ) -> hir::Path { let mut path = self.resolver - .resolve_str_path(span, self.crate_root, components, params, is_value); + .resolve_str_path(span, self.crate_root, components, is_value); + path.segments.last_mut().unwrap().args = params; + for seg in path.segments.iter_mut() { if let Some(id) = seg.id { diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 0285a3c568c..546c5a5ed3d 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -1574,10 +1574,9 @@ impl<'a, 'cl> hir::lowering::Resolver for Resolver<'a, 'cl> { fn resolve_hir_path( &mut self, path: &ast::Path, - args: Option
>, is_value: bool, ) -> hir::Path { - self.resolve_hir_path_cb(path, args, is_value, + self.resolve_hir_path_cb(path, is_value, |resolver, span, error| resolve_error(resolver, span, error)) } @@ -1586,7 +1585,6 @@ impl<'a, 'cl> hir::lowering::Resolver for Resolver<'a, 'cl> { span: Span, crate_root: Option<&str>, components: &[&str], - args: Option
>,
is_value: bool
) -> hir::Path {
let segments = iter::once(keywords::CrateRoot.ident())
@@ -1602,7 +1600,7 @@ impl<'a, 'cl> hir::lowering::Resolver for Resolver<'a, 'cl> {
segments,
};
- self.resolve_hir_path(&path, args, is_value)
+ self.resolve_hir_path(&path, is_value)
}
fn get_resolution(&mut self, id: NodeId) -> Option >,
is_value: bool,
error_callback: F,
) -> hir::Path
@@ -1697,12 +1694,11 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
}
};
- let mut segments: Vec<_> = segments.iter().map(|seg| {
+ let segments: Vec<_> = segments.iter().map(|seg| {
let mut hir_seg = hir::PathSegment::from_ident(seg.ident);
hir_seg.def = Some(self.def_map.get(&seg.id).map_or(Def::Err, |p| p.base_def()));
hir_seg
}).collect();
- segments.last_mut().unwrap().args = args;
hir::Path {
span,
def,
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index d33077b336b..ee82b986005 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -145,11 +145,7 @@ impl PathSegment {
PathSegment { ident, id: DUMMY_NODE_ID, args: None }
}
pub fn crate_root(span: Span) -> Self {
- PathSegment {
- ident: Ident::new(keywords::CrateRoot.name(), span),
- id: DUMMY_NODE_ID,
- args: None,
- }
+ PathSegment::from_ident(Ident::new(keywords::CrateRoot.name(), span))
}
}