diff --git a/src/libcore/path.rs b/src/libcore/path.rs index 0e8dbd144b143..23f7e912f9637 100644 --- a/src/libcore/path.rs +++ b/src/libcore/path.rs @@ -67,6 +67,8 @@ pub trait GenericPath { fn is_restricted(&self) -> bool; fn normalize(&self) -> Self; + + fn is_absolute(&self) -> bool; } #[cfg(windows)] @@ -379,10 +381,11 @@ impl ToStr for PosixPath { // FIXME (#3227): when default methods in traits are working, de-duplicate // PosixPath and WindowsPath, most of their methods are common. impl GenericPath for PosixPath { - fn from_str(s: &str) -> PosixPath { let mut components = ~[]; - for str::each_split_nonempty(s, |c| c == '/') |s| { components.push(s.to_owned()) } + for str::each_split_nonempty(s, |c| c == '/') |s| { + components.push(s.to_owned()) + } let is_absolute = (s.len() != 0 && s[0] == '/' as u8); return PosixPath { is_absolute: is_absolute, components: components } @@ -540,6 +543,10 @@ impl GenericPath for PosixPath { // ..self } } + + fn is_absolute(&self) -> bool { + self.is_absolute + } } @@ -563,7 +570,6 @@ impl ToStr for WindowsPath { impl GenericPath for WindowsPath { - fn from_str(s: &str) -> WindowsPath { let host; let device; @@ -809,6 +815,10 @@ impl GenericPath for WindowsPath { components: normalize(self.components) } } + + fn is_absolute(&self) -> bool { + self.is_absolute + } } diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index 4a122d238d496..fdef3f6764d3b 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -274,7 +274,6 @@ fn mk_std(cx: &TestCtxt) -> @ast::view_item { ast::view_item_use( ~[@nospan(ast::view_path_simple(id_std, path_node(~[id_std]), - ast::type_value_ns, cx.sess.next_node_id()))]) } else { ast::view_item_extern_mod(id_std, ~[@mi], diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index 41b372119cd29..d923ecf4bb7e9 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -1413,7 +1413,7 @@ pub impl Resolver { let mut module_path = ~[]; match view_path.node { - view_path_simple(_, full_path, _, _) => { + view_path_simple(_, full_path, _) => { let path_len = full_path.idents.len(); assert!(path_len != 0); @@ -1435,7 +1435,7 @@ pub impl Resolver { // Build up the import directives. let module_ = self.get_module_from_parent(parent); match view_path.node { - view_path_simple(binding, full_path, _, _) => { + view_path_simple(binding, full_path, _) => { let source_ident = *full_path.idents.last(); let subclass = @SingleImport(binding, source_ident); diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index a086a1db0aaf1..4137b3b8aa1fb 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1100,11 +1100,6 @@ pub struct path_list_ident_ { pub type path_list_ident = spanned; -#[auto_encode] -#[auto_decode] -#[deriving(Eq)] -pub enum namespace { module_ns, type_value_ns } - pub type view_path = spanned; #[auto_encode] @@ -1117,7 +1112,7 @@ pub enum view_path_ { // or just // // foo::bar::baz (with 'baz =' implicitly on the left) - view_path_simple(ident, @Path, namespace, node_id), + view_path_simple(ident, @Path, node_id), // foo::bar::* view_path_glob(@Path, node_id), diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index f0a14b39049a8..4ae140a265e53 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -413,7 +413,7 @@ pub fn id_visitor(vfn: @fn(node_id)) -> visit::vt<()> { view_item_use(ref vps) => { for vps.each |vp| { match vp.node { - view_path_simple(_, _, _, id) => vfn(id), + view_path_simple(_, _, id) => vfn(id), view_path_glob(_, id) => vfn(id), view_path_list(_, _, id) => vfn(id) } @@ -551,7 +551,8 @@ pub fn walk_pat(pat: @pat, it: &fn(@pat)) { pub fn view_path_id(p: @view_path) -> node_id { match p.node { - view_path_simple(_, _, _, id) | view_path_glob(_, id) | + view_path_simple(_, _, id) | + view_path_glob(_, id) | view_path_list(_, _, id) => id } } diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs index e0f6c90f5b378..9434172c1f4c6 100644 --- a/src/libsyntax/ext/pipes/ast_builder.rs +++ b/src/libsyntax/ext/pipes/ast_builder.rs @@ -374,7 +374,6 @@ impl ext_ctxt_ast_builder for @ext_ctxt { ], codemap::dummy_sp() ), - ast::type_value_ns, self.next_id() ), span: codemap::dummy_sp() diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 42275aca0a3e2..8cdbf9ac9e216 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -40,7 +40,7 @@ use ast::{item_mac, item_mod, item_struct, item_trait, item_ty, lit, lit_}; use ast::{lit_bool, lit_float, lit_float_unsuffixed, lit_int}; use ast::{lit_int_unsuffixed, lit_nil, lit_str, lit_uint, local, m_const}; use ast::{m_imm, m_mutbl, mac_, mac_invoc_tt, matcher, match_nonterminal}; -use ast::{match_seq, match_tok, method, mode, module_ns, mt, mul, mutability}; +use ast::{match_seq, match_tok, method, mode, mt, mul, mutability}; use ast::{named_field, neg, node_id, noreturn, not, pat, pat_box, pat_enum}; use ast::{pat_ident, pat_lit, pat_range, pat_region, pat_struct}; use ast::{pat_tup, pat_uniq, pat_wild, private}; @@ -54,7 +54,7 @@ use ast::{tt_nonterminal, tuple_variant_kind, Ty, ty_, ty_bot, ty_box}; use ast::{ty_field, ty_fixed_length_vec, ty_closure, ty_bare_fn}; use ast::{ty_infer, ty_method}; use ast::{ty_nil, TyParam, TyParamBound, ty_path, ty_ptr, ty_rptr}; -use ast::{ty_tup, ty_u32, ty_uniq, ty_vec, type_value_ns, uniq}; +use ast::{ty_tup, ty_u32, ty_uniq, ty_vec, uniq}; use ast::{unnamed_field, unsafe_blk, unsafe_fn, view_item}; use ast::{view_item_, view_item_extern_mod, view_item_use}; use ast::{view_path, view_path_glob, view_path_list, view_path_simple}; @@ -4224,13 +4224,6 @@ pub impl Parser { fn parse_view_path(&self) -> @view_path { let lo = self.span.lo; - let namespace; - if self.eat_keyword(&~"mod") { - namespace = module_ns; - } else { - namespace = type_value_ns; - } - let first_ident = self.parse_ident(); let mut path = ~[first_ident]; debug!("parsed view_path: %s", *self.id_to_str(first_ident)); @@ -4250,8 +4243,9 @@ pub impl Parser { rp: None, types: ~[] }; return @spanned(lo, self.span.hi, - view_path_simple(first_ident, path, namespace, - self.get_id())); + view_path_simple(first_ident, + path, + self.get_id())); } token::MOD_SEP => { @@ -4306,8 +4300,9 @@ pub impl Parser { idents: path, rp: None, types: ~[] }; - return @spanned(lo, self.span.hi, - view_path_simple(last, path, namespace, self.get_id())); + return @spanned(lo, + self.span.hi, + view_path_simple(last, path, self.get_id())); } // matches view_paths = view_path | view_path , view_paths diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 8cf7359956283..3ea04c8e40bf6 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1816,10 +1816,7 @@ pub fn print_meta_item(s: @ps, item: @ast::meta_item) { pub fn print_view_path(s: @ps, vp: @ast::view_path) { match vp.node { - ast::view_path_simple(ident, path, namespace, _) => { - if namespace == ast::module_ns { - word_space(s, ~"mod"); - } + ast::view_path_simple(ident, path, _) => { if path.idents[vec::len(path.idents)-1u] != ident { print_ident(s, ident); space(s.s); diff --git a/src/test/run-pass/use-mod.rs b/src/test/run-pass/use-mod.rs deleted file mode 100644 index 1b1402e0a0e7c..0000000000000 --- a/src/test/run-pass/use-mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -// xfail-fast - -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -use mod a::b; - -mod a { - pub mod b { - pub fn f() {} - } -} - -pub fn main() { - b::f(); -} -