diff options
| author | bors <bors@rust-lang.org> | 2015-03-13 01:00:02 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-03-13 01:00:02 +0000 |
| commit | 79dd393a4f144fa5e6f81c720c782de3175810d7 (patch) | |
| tree | 06bfba9dd93f962fec59a068dcc218dfbc07db76 /src/libsyntax | |
| parent | c9b03c24ec346e6405883032094f47805ef9c43e (diff) | |
| parent | 42c4e481cd98bd392839144c9ac83e55e445a12a (diff) | |
| download | rust-79dd393a4f144fa5e6f81c720c782de3175810d7.tar.gz rust-79dd393a4f144fa5e6f81c720c782de3175810d7.zip | |
Auto merge of #23229 - aturon:stab-path, r=alexcrichton
This commit stabilizes essentially all of the new `std::path` API. The
API itself is changed in a couple of ways (which brings it in closer
alignment with the RFC):
* `.` components are now normalized away, unless they appear at the
start of a path. This in turn effects the semantics of e.g. asking for
the file name of `foo/` or `foo/.`, both of which yield `Some("foo")`
now. This semantics is what the original RFC specified, and is also
desirable given early experience rolling out the new API.
* The `parent` method is now `without_file` and succeeds if, and only
if, `file_name` is `Some(_)`. That means, in particular, that it fails
for a path like `foo/../`. This change affects `pop` as well.
In addition, the `old_path` module is now deprecated.
[breaking-change]
r? @alexcrichton
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/source_util.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/lib.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 2 |
4 files changed, 4 insertions, 13 deletions
diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs index 62d98be8b85..eb0daac3ab8 100644 --- a/src/libsyntax/ext/source_util.rs +++ b/src/libsyntax/ext/source_util.rs @@ -195,11 +195,7 @@ fn res_rel_file(cx: &mut ExtCtxt, sp: codemap::Span, arg: &Path) -> PathBuf { // NB: relative paths are resolved relative to the compilation unit if !arg.is_absolute() { let mut cu = PathBuf::new(&cx.codemap().span_to_filename(sp)); - if cu.parent().is_some() { - cu.pop(); - } else { - cu = PathBuf::new(""); - } + cu.pop(); cu.push(arg); cu } else { diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs index ba3f495cdac..90f0dc30c75 100644 --- a/src/libsyntax/lib.rs +++ b/src/libsyntax/lib.rs @@ -38,7 +38,6 @@ #![feature(staged_api)] #![feature(std_misc)] #![feature(unicode)] -#![feature(path)] #![feature(io)] #![feature(path_ext)] diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 39c43ff1e75..ea1c1705514 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5189,13 +5189,7 @@ impl<'a> Parser<'a> { -> (ast::Item_, Vec<ast::Attribute> ) { let mut prefix = PathBuf::new(&self.sess.span_diagnostic.cm .span_to_filename(self.span)); - // FIXME(acrichto): right now "a".pop() == "a", but need to confirm with - // aturon whether this is expected or not. - if prefix.parent().is_some() { - prefix.pop(); - } else { - prefix = PathBuf::new(""); - } + prefix.pop(); let mut dir_path = prefix; for part in &self.mod_path_stack { dir_path.push(&**part); diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 4a3ea971c7a..4db85eeea46 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -25,6 +25,7 @@ use serialize::{Decodable, Decoder, Encodable, Encoder}; use std::fmt; use std::mem; use std::ops::Deref; +#[allow(deprecated)] use std::old_path::BytesContainer; use std::rc::Rc; @@ -638,6 +639,7 @@ impl Deref for InternedString { fn deref(&self) -> &str { &*self.string } } +#[allow(deprecated)] impl BytesContainer for InternedString { fn container_as_bytes<'a>(&'a self) -> &'a [u8] { // FIXME #12938: This is a workaround for the incorrect signature |
