about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-03-13 01:00:02 +0000
committerbors <bors@rust-lang.org>2015-03-13 01:00:02 +0000
commit79dd393a4f144fa5e6f81c720c782de3175810d7 (patch)
tree06bfba9dd93f962fec59a068dcc218dfbc07db76 /src/libsyntax/parse
parentc9b03c24ec346e6405883032094f47805ef9c43e (diff)
parent42c4e481cd98bd392839144c9ac83e55e445a12a (diff)
downloadrust-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/parse')
-rw-r--r--src/libsyntax/parse/parser.rs8
-rw-r--r--src/libsyntax/parse/token.rs2
2 files changed, 3 insertions, 7 deletions
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