about summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-10-16 11:26:35 -0700
committerbors <bors@rust-lang.org>2013-10-16 11:26:35 -0700
commit40180cdbea708307ca66dc6debddbd5ecc1ea41c (patch)
tree0d26ddfa020874dc3f665c2c1d3e836ee729408b /src/libsyntax/ext
parentfabec998e5667d651d3475c12ee25ab97d21105c (diff)
parentd108a22fd1b38c108e2b9b6cd7276d953524ffa2 (diff)
downloadrust-40180cdbea708307ca66dc6debddbd5ecc1ea41c.tar.gz
rust-40180cdbea708307ca66dc6debddbd5ecc1ea41c.zip
auto merge of #9655 : kballard/rust/path-rewrite, r=alexcrichton
Rewrite the entire `std::path` module from scratch.

`PosixPath` is now based on `~[u8]`, which fixes #7225.
Unnecessary allocation has been eliminated.

There are a lot of clients of `Path` that still assume utf-8 paths.
This is covered in #9639.
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/source_util.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs
index e76ade0dc3d..1c13beb790d 100644
--- a/src/libsyntax/ext/source_util.rs
+++ b/src/libsyntax/ext/source_util.rs
@@ -81,7 +81,7 @@ pub fn expand_include(cx: @ExtCtxt, sp: Span, tts: &[ast::token_tree])
     let file = get_single_str_from_tts(cx, sp, tts, "include!");
     let p = parse::new_sub_parser_from_file(
         cx.parse_sess(), cx.cfg(),
-        &res_rel_file(cx, sp, &Path(file)), sp);
+        &res_rel_file(cx, sp, &Path::new(file)), sp);
     base::MRExpr(p.parse_expr())
 }
 
@@ -89,7 +89,7 @@ pub fn expand_include(cx: @ExtCtxt, sp: Span, tts: &[ast::token_tree])
 pub fn expand_include_str(cx: @ExtCtxt, sp: Span, tts: &[ast::token_tree])
     -> base::MacResult {
     let file = get_single_str_from_tts(cx, sp, tts, "include_str!");
-    let res = io::read_whole_file_str(&res_rel_file(cx, sp, &Path(file)));
+    let res = io::read_whole_file_str(&res_rel_file(cx, sp, &Path::new(file)));
     match res {
       result::Ok(res) => {
           base::MRExpr(cx.expr_str(sp, res.to_managed()))
@@ -103,7 +103,7 @@ pub fn expand_include_str(cx: @ExtCtxt, sp: Span, tts: &[ast::token_tree])
 pub fn expand_include_bin(cx: @ExtCtxt, sp: Span, tts: &[ast::token_tree])
     -> base::MacResult {
     let file = get_single_str_from_tts(cx, sp, tts, "include_bin!");
-    match io::read_whole_file(&res_rel_file(cx, sp, &Path(file))) {
+    match io::read_whole_file(&res_rel_file(cx, sp, &Path::new(file))) {
       result::Ok(src) => {
         let u8_exprs: ~[@ast::Expr] = src.iter().map(|char| cx.expr_u8(sp, *char)).collect();
         base::MRExpr(cx.expr_vec(sp, u8_exprs))
@@ -144,10 +144,12 @@ fn topmost_expn_info(expn_info: @codemap::ExpnInfo) -> @codemap::ExpnInfo {
 // isn't already)
 fn res_rel_file(cx: @ExtCtxt, sp: codemap::Span, arg: &Path) -> Path {
     // NB: relative paths are resolved relative to the compilation unit
-    if !arg.is_absolute {
-        let cu = Path(cx.codemap().span_to_filename(sp));
-        cu.dir_path().push_many(arg.components)
+    if !arg.is_absolute() {
+        let mut cu = Path::new(cx.codemap().span_to_filename(sp));
+        cu.pop();
+        cu.push(arg);
+        cu
     } else {
-        (*arg).clone()
+        arg.clone()
     }
 }