about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2018-02-11 09:28:47 -0500
committerNiko Matsakis <niko@alum.mit.edu>2018-02-22 17:31:37 -0500
commit0625d4c282a9fa2a5ba3c6448017898baccfcf9a (patch)
tree80f45edb1bf43f3302404a5a8cfffdf2284a1580 /src/libsyntax
parent1eab1b19a39f54a825c9107086f0c1752b81224d (diff)
downloadrust-0625d4c282a9fa2a5ba3c6448017898baccfcf9a.tar.gz
rust-0625d4c282a9fa2a5ba3c6448017898baccfcf9a.zip
begin crate-relative paths with `crate`
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/build.rs10
-rw-r--r--src/libsyntax/test.rs9
2 files changed, 9 insertions, 10 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs
index 2e6de96d65a..57978ca9c80 100644
--- a/src/libsyntax/ext/build.rs
+++ b/src/libsyntax/ext/build.rs
@@ -319,14 +319,8 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
                 types: Vec<P<ast::Ty>>,
                 bindings: Vec<ast::TypeBinding> )
                 -> ast::Path {
-        use syntax::parse::token;
-
         let last_identifier = idents.pop().unwrap();
         let mut segments: Vec<ast::PathSegment> = Vec::new();
-        if global &&
-           !idents.first().map_or(false, |&ident| token::Ident(ident).is_path_segment_keyword()) {
-            segments.push(ast::PathSegment::crate_root(span));
-        }
 
         segments.extend(idents.into_iter().map(|i| ast::PathSegment::from_ident(i, span)));
         let parameters = if !lifetimes.is_empty() || !types.is_empty() || !bindings.is_empty() {
@@ -335,7 +329,9 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
             None
         };
         segments.push(ast::PathSegment { identifier: last_identifier, span, parameters });
-        ast::Path { span, segments }
+        let path = ast::Path { span, segments };
+
+        if global { path.default_to_global() } else { path }
     }
 
     /// Constructs a qualified path.
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs
index 094de6868a5..6cbb7ab393f 100644
--- a/src/libsyntax/test.rs
+++ b/src/libsyntax/test.rs
@@ -733,9 +733,12 @@ fn mk_test_desc_and_fn_rec(cx: &TestCtxt, test: &Test) -> P<ast::Expr> {
              field("should_panic", fail_expr),
              field("allow_fail", allow_fail_expr)]);
 
-
-    let mut visible_path = match cx.toplevel_reexport {
-        Some(id) => vec![id],
+    let mut visible_path = vec![];
+    if cx.features.extern_absolute_paths {
+        visible_path.push(keywords::Crate.ident());
+    }
+    match cx.toplevel_reexport {
+        Some(id) => visible_path.push(id),
         None => {
             let diag = cx.span_diagnostic;
             diag.bug("expected to find top-level re-export name, but found None");