mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-07 17:18:32 +03:00
Address review comments
This commit is contained in:
+1
-12
@@ -105,17 +105,6 @@ pub fn from_ident(ident: Ident) -> Path {
|
||||
}
|
||||
}
|
||||
|
||||
// Make a "crate root" segment for this path unless it already has it
|
||||
// or starts with something like `self`/`super`/`$crate`/etc.
|
||||
pub fn make_root(&self) -> Option<PathSegment> {
|
||||
if let Some(ident) = self.segments.get(0).map(|seg| seg.ident) {
|
||||
if ident.is_path_segment_keyword() {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
Some(PathSegment::crate_root(self.span.shrink_to_lo()))
|
||||
}
|
||||
|
||||
pub fn is_global(&self) -> bool {
|
||||
!self.segments.is_empty() && self.segments[0].ident.name == keywords::PathRoot.name()
|
||||
}
|
||||
@@ -144,7 +133,7 @@ impl PathSegment {
|
||||
pub fn from_ident(ident: Ident) -> Self {
|
||||
PathSegment { ident, id: DUMMY_NODE_ID, args: None }
|
||||
}
|
||||
pub fn crate_root(span: Span) -> Self {
|
||||
pub fn path_root(span: Span) -> Self {
|
||||
PathSegment::from_ident(Ident::new(keywords::PathRoot.name(), span))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,9 +318,13 @@ fn path_all(&self,
|
||||
args: Vec<ast::GenericArg>,
|
||||
bindings: Vec<ast::TypeBinding> )
|
||||
-> ast::Path {
|
||||
assert!(!idents.is_empty());
|
||||
let add_root = global && !idents[0].is_path_segment_keyword();
|
||||
let mut segments = Vec::with_capacity(idents.len() + add_root as usize);
|
||||
if add_root {
|
||||
segments.push(ast::PathSegment::path_root(span));
|
||||
}
|
||||
let last_ident = idents.pop().unwrap();
|
||||
let mut segments: Vec<ast::PathSegment> = vec![];
|
||||
|
||||
segments.extend(idents.into_iter().map(|ident| {
|
||||
ast::PathSegment::from_ident(ident.with_span_pos(span))
|
||||
}));
|
||||
@@ -334,13 +338,7 @@ fn path_all(&self,
|
||||
id: ast::DUMMY_NODE_ID,
|
||||
args,
|
||||
});
|
||||
let mut path = ast::Path { span, segments };
|
||||
if global {
|
||||
if let Some(seg) = path.make_root() {
|
||||
path.segments.insert(0, seg);
|
||||
}
|
||||
}
|
||||
path
|
||||
ast::Path { span, segments }
|
||||
}
|
||||
|
||||
/// Constructs a qualified path.
|
||||
|
||||
@@ -2082,7 +2082,7 @@ pub fn parse_path(&mut self, style: PathStyle) -> PResult<'a, ast::Path> {
|
||||
let mut segments = Vec::new();
|
||||
let mod_sep_ctxt = self.span.ctxt();
|
||||
if self.eat(&token::ModSep) {
|
||||
segments.push(PathSegment::crate_root(lo.shrink_to_lo().with_ctxt(mod_sep_ctxt)));
|
||||
segments.push(PathSegment::path_root(lo.shrink_to_lo().with_ctxt(mod_sep_ctxt)));
|
||||
}
|
||||
self.parse_path_segments(&mut segments, style, enable_warning)?;
|
||||
|
||||
@@ -7685,7 +7685,7 @@ fn parse_use_tree(&mut self) -> PResult<'a, UseTree> {
|
||||
let mod_sep_ctxt = self.span.ctxt();
|
||||
if self.eat(&token::ModSep) {
|
||||
prefix.segments.push(
|
||||
PathSegment::crate_root(lo.shrink_to_lo().with_ctxt(mod_sep_ctxt))
|
||||
PathSegment::path_root(lo.shrink_to_lo().with_ctxt(mod_sep_ctxt))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -353,7 +353,7 @@ pub fn fresh() -> Self {
|
||||
(2, DollarCrate, "$crate")
|
||||
(3, Underscore, "_")
|
||||
|
||||
// Keywords used in the language.
|
||||
// Keywords that are used in stable Rust.
|
||||
(4, As, "as")
|
||||
(5, Box, "box")
|
||||
(6, Break, "break")
|
||||
@@ -391,7 +391,7 @@ pub fn fresh() -> Self {
|
||||
(38, Where, "where")
|
||||
(39, While, "while")
|
||||
|
||||
// Keywords reserved for future use.
|
||||
// Keywords that are used in unstable Rust or reserved for future use.
|
||||
(40, Abstract, "abstract")
|
||||
(41, Become, "become")
|
||||
(42, Do, "do")
|
||||
@@ -404,10 +404,10 @@ pub fn fresh() -> Self {
|
||||
(49, Virtual, "virtual")
|
||||
(50, Yield, "yield")
|
||||
|
||||
// Edition-specific keywords used in the language.
|
||||
// Edition-specific keywords that are used in stable Rust.
|
||||
(51, Dyn, "dyn") // >= 2018 Edition only
|
||||
|
||||
// Edition-specific keywords reserved for future use.
|
||||
// Edition-specific keywords that are used in unstable Rust or reserved for future use.
|
||||
(52, Async, "async") // >= 2018 Edition only
|
||||
(53, Try, "try") // >= 2018 Edition only
|
||||
|
||||
|
||||
Reference in New Issue
Block a user