diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-12-02 15:15:42 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-12-04 01:13:03 +0300 |
| commit | d08f7dcdca861f46bedf8a37af135a7a46633540 (patch) | |
| tree | ab436345ff9e0f5edcfe0797c2873afe477b25dc /src/libsyntax/ext | |
| parent | d415844f5e82944dc1907ff4b66f9f74fcbaf6ff (diff) | |
| download | rust-d08f7dcdca861f46bedf8a37af135a7a46633540.tar.gz rust-d08f7dcdca861f46bedf8a37af135a7a46633540.zip | |
Address review comments
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/build.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index 63e9744d770..5770f6bb8a2 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -318,9 +318,13 @@ impl<'a> AstBuilder for ExtCtxt<'a> { 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 @@ impl<'a> AstBuilder for ExtCtxt<'a> { 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. |
