From d149c3b870730878f0b6ffa9e84d17d55da26532 Mon Sep 17 00:00:00 2001 From: John Clements Date: Thu, 24 Jan 2013 17:36:06 -0800 Subject: [PATCH 1/4] cleanup, refactoring --- src/libsyntax/ast_util.rs | 13 +--- src/libsyntax/codemap.rs | 87 ++++++++++++++++++++++---- src/libsyntax/ext/base.rs | 3 +- src/libsyntax/ext/pipes/ast_builder.rs | 4 +- src/libsyntax/ext/pipes/pipec.rs | 2 +- src/libsyntax/ext/tt/macro_parser.rs | 2 +- src/libsyntax/ext/tt/macro_rules.rs | 3 +- src/libsyntax/parse/comments.rs | 22 +++---- src/libsyntax/parse/lexer.rs | 73 ++++++++++----------- src/libsyntax/parse/mod.rs | 2 +- src/libsyntax/parse/parser.rs | 4 +- src/libsyntax/print/pprust.rs | 14 ++--- src/libsyntax/syntax.rc | 5 ++ src/libsyntax/util/testing.rs | 33 ++++++++++ 14 files changed, 177 insertions(+), 90 deletions(-) create mode 100644 src/libsyntax/util/testing.rs diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index ac0a54c582ca8..b6fdd4e86d2f9 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -13,7 +13,8 @@ use core::prelude::*; use ast::*; use ast; use ast_util; -use codemap::{span, BytePos}; +use codemap::{span, BytePos, dummy_sp}; +use codemap::mk_sp; use parse::token; use visit; @@ -36,16 +37,6 @@ pub pure fn dummy_spanned(+t: T) -> spanned { respan(dummy_sp(), move t) } -/* assuming that we're not in macro expansion */ -pub pure fn mk_sp(+lo: BytePos, +hi: BytePos) -> span { - span {lo: lo, hi: hi, expn_info: None} -} - -// make this a const, once the compiler supports it -pub pure fn dummy_sp() -> span { return mk_sp(BytePos(0), BytePos(0)); } - - - pub pure fn path_name_i(idents: &[ident], intr: @token::ident_interner) -> ~str { // FIXME: Bad copies (#2543 -- same for everything else that says "bad") diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 584b2bcfdc662..8113834a66dd1 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// Linkage attributes + /*! The CodeMap tracks all the source code used within a single crate, mapping @@ -21,9 +23,24 @@ source code snippets, etc. */ -use core::prelude::*; +#[warn(vecs_implicitly_copyable)]; +#[warn(deprecated_mode)]; +#[warn(deprecated_pattern)]; + + +#[ link(name = "codemap", + vers = "1.0", + uuid = "A0F4AB1E-002B-4CF2-A280-5DE62C8E13A3") ]; + +#[ crate_type = "lib" ]; -use ast_util; +#[no_core]; +extern mod core(vers = "0.6"); +extern mod std(vers = "0.6"); + +use std::serialize::{Encodable, Decodable, Encoder, Decoder}; + +use core::prelude::*; use core::cmp; use core::dvec::DVec; @@ -144,10 +161,18 @@ pub impl span: Encodable { pub impl span: Decodable { static fn decode(_d: &D) -> span { - ast_util::dummy_sp() + dummy_sp() } } +/* assuming that we're not in macro expansion */ +pub pure fn mk_sp(+lo: BytePos, +hi: BytePos) -> span { + span {lo: lo, hi: hi, expn_info: None} +} + +// make this a const, once the compiler supports it +pub pure fn dummy_sp() -> span { return mk_sp(BytePos(0), BytePos(0)); } + /// A source code location used for error reporting pub struct Loc { /// Information about the original source @@ -204,10 +229,18 @@ pub struct FileMap { } pub impl FileMap { + // register a start-of-line offset in the table of line-beginnings. + // UNCHECKED INVARIANT: these offsets must be added in the right + // order and must be in the right places; there is shared knowledge + // about what ends a line between this file and parse.rs fn next_line(&self, +pos: BytePos) { + // the new charpos must be > the last one (or it's the first one). + assert ((self.lines.len() == 0) + || (self.lines[self.lines.len() - 1] < pos)); self.lines.push(pos); } + // get a line from the list of pre-computed line-beginnings pub fn get_line(&self, line: int) -> ~str { unsafe { let begin: BytePos = self.lines[line] - self.start_pos; @@ -242,11 +275,11 @@ pub impl CodeMap { } /// Add a new FileMap to the CodeMap and return it - fn new_filemap(+filename: FileName, src: @~str) -> @FileMap { + fn new_filemap(&self, filename: FileName, src: @~str) -> @FileMap { return self.new_filemap_w_substr(filename, FssNone, src); } - fn new_filemap_w_substr(+filename: FileName, +substr: FileSubstr, + fn new_filemap_w_substr(&self, filename: FileName, substr: FileSubstr, src: @~str) -> @FileMap { let start_pos = if self.files.len() == 0 { 0 @@ -275,7 +308,7 @@ pub impl CodeMap { } /// Lookup source information about a BytePos - pub fn lookup_char_pos(&self, +pos: BytePos) -> Loc { + pub fn lookup_char_pos(&self, pos: BytePos) -> Loc { return self.lookup_pos(pos); } @@ -319,7 +352,7 @@ pub impl CodeMap { } pub fn span_to_str(&self, sp: span) -> ~str { - if self.files.len() == 0 && sp == ast_util::dummy_sp() { + if self.files.len() == 0 && sp == dummy_sp() { return ~"no-location"; } @@ -363,7 +396,7 @@ pub impl CodeMap { priv impl CodeMap { - fn lookup_filemap_idx(&self, +pos: BytePos) -> uint { + fn lookup_filemap_idx(&self, pos: BytePos) -> uint { let len = self.files.len(); let mut a = 0u; let mut b = len; @@ -383,7 +416,7 @@ priv impl CodeMap { return a; } - fn lookup_line(&self, +pos: BytePos) + fn lookup_line(&self, pos: BytePos) -> {fm: @FileMap, line: uint} { let idx = self.lookup_filemap_idx(pos); @@ -397,7 +430,7 @@ priv impl CodeMap { return {fm: f, line: a}; } - fn lookup_pos(&self, +pos: BytePos) -> Loc { + fn lookup_pos(&self, pos: BytePos) -> Loc { let {fm: f, line: a} = self.lookup_line(pos); let line = a + 1u; // Line numbers start at 1 let chpos = self.bytepos_to_local_charpos(pos); @@ -423,7 +456,7 @@ priv impl CodeMap { lo.line, lo.col.to_uint(), hi.line, hi.col.to_uint()) } - fn lookup_byte_offset(&self, +bpos: BytePos) + fn lookup_byte_offset(&self, bpos: BytePos) -> {fm: @FileMap, pos: BytePos} { let idx = self.lookup_filemap_idx(bpos); let fm = self.files[idx]; @@ -433,7 +466,7 @@ priv impl CodeMap { // Converts an absolute BytePos to a CharPos relative to the file it is // located in - fn bytepos_to_local_charpos(&self, +bpos: BytePos) -> CharPos { + fn bytepos_to_local_charpos(&self, bpos: BytePos) -> CharPos { debug!("codemap: converting %? to char pos", bpos); let idx = self.lookup_filemap_idx(bpos); let map = self.files[idx]; @@ -458,6 +491,36 @@ priv impl CodeMap { } } +#[cfg(test)] +mod test { + use super::*; + extern mod testingfuns; + use testingfuns::check_equal; + + #[test] + fn t1 () { + let cm = CodeMap::new(); + let fm = cm.new_filemap(~"blork.rs",@~"first line.\nsecond line"); + fm.next_line(BytePos(0)); + check_equal(&fm.get_line(0),&~"first line."); + // TESTING BROKEN BEHAVIOR: + fm.next_line(BytePos(10)); + check_equal(&fm.get_line(1),&~"."); + } + + #[test] + #[should_fail] + fn t2 () { + let cm = CodeMap::new(); + let fm = cm.new_filemap(~"blork.rs",@~"first line.\nsecond line"); + // TESTING *REALLY* BROKEN BEHAVIOR: + fm.next_line(BytePos(0)); + fm.next_line(BytePos(10)); + fm.next_line(BytePos(2)); + } +} + + // // Local Variables: // mode: rust diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index d0974e0654c40..a37ce512ac1c6 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -11,9 +11,8 @@ use core::prelude::*; use ast; -use ast_util::dummy_sp; use codemap; -use codemap::{CodeMap, span, ExpnInfo, ExpandedFrom}; +use codemap::{CodeMap, span, ExpnInfo, ExpandedFrom, dummy_sp}; use diagnostic::span_handler; use ext; use parse; diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs index a85898390a425..949b9da46d10e 100644 --- a/src/libsyntax/ext/pipes/ast_builder.rs +++ b/src/libsyntax/ext/pipes/ast_builder.rs @@ -17,10 +17,10 @@ use core::prelude::*; use ast::{ident, node_id}; use ast; -use ast_util::{ident_to_path, respan, dummy_sp}; +use ast_util::{ident_to_path, respan}; use ast_util; use attr; -use codemap::span; +use codemap::{span, dummy_sp}; use ext::base::{ext_ctxt, mk_ctxt}; use ext::quote::rt::*; diff --git a/src/libsyntax/ext/pipes/pipec.rs b/src/libsyntax/ext/pipes/pipec.rs index 928885cf81759..8c73dcfc04f66 100644 --- a/src/libsyntax/ext/pipes/pipec.rs +++ b/src/libsyntax/ext/pipes/pipec.rs @@ -11,7 +11,7 @@ // A protocol compiler for Rust. use ast::ident; -use ast_util::dummy_sp; +use codemap::dummy_sp; use ext::base::ext_ctxt; use ext::pipes::ast_builder::{append_types, ext_ctxt_ast_builder, path}; use ext::pipes::ast_builder::{path_global}; diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index 4c0550b3c3ad1..633abc0e30d5d 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -10,8 +10,8 @@ // Earley-like parser for macros. use ast::{matcher, match_tok, match_seq, match_nonterminal, ident}; -use ast_util::mk_sp; use codemap::BytePos; +use codemap::{dummy_sp, mk_sp}; use codemap; use parse::common::*; //resolve bug? use parse::lexer::*; //resolve bug? diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index f7ef79db466a6..bcbfed3e0dc7e 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -13,8 +13,7 @@ use core::prelude::*; use ast::{ident, matcher_, matcher, match_tok, match_nonterminal, match_seq}; use ast::{tt_delim}; use ast; -use ast_util::dummy_sp; -use codemap::span; +use codemap::{span, dummy_sp}; use ext::base::{ext_ctxt, MacResult, MRAny, MRDef, MacroDef, NormalTT}; use ext::base; use ext::tt::macro_parser::{error}; diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index 26de85548e13c..117a4debffcbc 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -14,7 +14,7 @@ use ast; use codemap::{BytePos, CharPos, CodeMap, FileMap, Pos}; use diagnostic; use parse::lexer::{is_whitespace, get_str_from, reader}; -use parse::lexer::{string_reader, bump, is_eof, nextch}; +use parse::lexer::{StringReader, bump, is_eof, nextch}; use parse::lexer; use parse::token; use parse; @@ -120,7 +120,7 @@ pub fn strip_doc_comment_decoration(comment: ~str) -> ~str { fail ~"not a doc-comment: " + comment; } -fn read_to_eol(rdr: string_reader) -> ~str { +fn read_to_eol(rdr: StringReader) -> ~str { let mut val = ~""; while rdr.curr != '\n' && !is_eof(rdr) { str::push_char(&mut val, rdr.curr); @@ -130,26 +130,26 @@ fn read_to_eol(rdr: string_reader) -> ~str { return val; } -fn read_one_line_comment(rdr: string_reader) -> ~str { +fn read_one_line_comment(rdr: StringReader) -> ~str { let val = read_to_eol(rdr); assert ((val[0] == '/' as u8 && val[1] == '/' as u8) || (val[0] == '#' as u8 && val[1] == '!' as u8)); return val; } -fn consume_non_eol_whitespace(rdr: string_reader) { +fn consume_non_eol_whitespace(rdr: StringReader) { while is_whitespace(rdr.curr) && rdr.curr != '\n' && !is_eof(rdr) { bump(rdr); } } -fn push_blank_line_comment(rdr: string_reader, comments: &mut ~[cmnt]) { +fn push_blank_line_comment(rdr: StringReader, comments: &mut ~[cmnt]) { debug!(">>> blank-line comment"); let v: ~[~str] = ~[]; comments.push({style: blank_line, lines: v, pos: rdr.last_pos}); } -fn consume_whitespace_counting_blank_lines(rdr: string_reader, +fn consume_whitespace_counting_blank_lines(rdr: StringReader, comments: &mut ~[cmnt]) { while is_whitespace(rdr.curr) && !is_eof(rdr) { if rdr.col == CharPos(0u) && rdr.curr == '\n' { @@ -160,7 +160,7 @@ fn consume_whitespace_counting_blank_lines(rdr: string_reader, } -fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, +fn read_shebang_comment(rdr: StringReader, code_to_the_left: bool, comments: &mut ~[cmnt]) { debug!(">>> shebang comment"); let p = rdr.last_pos; @@ -172,7 +172,7 @@ fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, }); } -fn read_line_comments(rdr: string_reader, code_to_the_left: bool, +fn read_line_comments(rdr: StringReader, code_to_the_left: bool, comments: &mut ~[cmnt]) { debug!(">>> line comments"); let p = rdr.last_pos; @@ -221,7 +221,7 @@ fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str], lines.push(s1); } -fn read_block_comment(rdr: string_reader, code_to_the_left: bool, +fn read_block_comment(rdr: StringReader, code_to_the_left: bool, comments: &mut ~[cmnt]) { debug!(">>> block comment"); let p = rdr.last_pos; @@ -280,13 +280,13 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, comments.push({style: style, lines: lines, pos: p}); } -fn peeking_at_comment(rdr: string_reader) -> bool { +fn peeking_at_comment(rdr: StringReader) -> bool { return ((rdr.curr == '/' && nextch(rdr) == '/') || (rdr.curr == '/' && nextch(rdr) == '*')) || (rdr.curr == '#' && nextch(rdr) == '!'); } -fn consume_comment(rdr: string_reader, code_to_the_left: bool, +fn consume_comment(rdr: StringReader, code_to_the_left: bool, comments: &mut ~[cmnt]) { debug!(">>> consume comment"); if rdr.curr == '/' && nextch(rdr) == '/' { diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index c3b94182cc2d2..f8d7473c96a77 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -38,7 +38,9 @@ pub trait reader { fn dup() -> reader; } -pub type string_reader = @{ +pub type StringReader = @StringReader_; + +pub struct StringReader_ { span_diagnostic: span_handler, src: @~str, // The absolute offset within the codemap of the next character to read @@ -54,11 +56,11 @@ pub type string_reader = @{ /* cached: */ mut peek_tok: token::Token, mut peek_span: span -}; +} pub fn new_string_reader(span_diagnostic: span_handler, - filemap: @codemap::FileMap, - itr: @token::ident_interner) -> string_reader { + filemap: @codemap::FileMap, + itr: @token::ident_interner) -> StringReader { let r = new_low_level_string_reader(span_diagnostic, filemap, itr); string_advance_token(r); /* fill in peek_* */ return r; @@ -66,26 +68,27 @@ pub fn new_string_reader(span_diagnostic: span_handler, /* For comments.rs, which hackily pokes into 'pos' and 'curr' */ pub fn new_low_level_string_reader(span_diagnostic: span_handler, - filemap: @codemap::FileMap, - itr: @token::ident_interner) - -> string_reader { + filemap: @codemap::FileMap, + itr: @token::ident_interner) + -> StringReader { // Force the initial reader bump to start on a fresh line let initial_char = '\n'; - let r = @{span_diagnostic: span_diagnostic, src: filemap.src, - mut pos: filemap.start_pos, - mut last_pos: filemap.start_pos, - mut col: CharPos(0), - mut curr: initial_char, - filemap: filemap, interner: itr, - /* dummy values; not read */ - mut peek_tok: token::EOF, - mut peek_span: ast_util::dummy_sp()}; + let r = @StringReader_{ + span_diagnostic: span_diagnostic, src: filemap.src, + mut pos: filemap.start_pos, + mut last_pos: filemap.start_pos, + mut col: CharPos(0), + mut curr: initial_char, + filemap: filemap, interner: itr, + /* dummy values; not read */ + mut peek_tok: token::EOF, + mut peek_span: ast_util::dummy_sp()}; bump(r); return r; } -fn dup_string_reader(&&r: string_reader) -> string_reader { - @{span_diagnostic: r.span_diagnostic, src: r.src, +fn dup_string_reader(&&r: StringReader) -> StringReader { + @StringReader_{span_diagnostic: r.span_diagnostic, src: r.src, mut pos: r.pos, mut last_pos: r.last_pos, mut col: r.col, mut curr: r.curr, @@ -93,7 +96,7 @@ fn dup_string_reader(&&r: string_reader) -> string_reader { mut peek_tok: r.peek_tok, mut peek_span: r.peek_span} } -impl string_reader: reader { +impl StringReader: reader { fn is_eof() -> bool { is_eof(self) } fn next_token() -> {tok: token::Token, sp: span} { let ret_val = {tok: self.peek_tok, sp: self.peek_span}; @@ -133,7 +136,7 @@ pub impl tt_reader: reader { fn dup() -> reader { dup_tt_reader(self) as reader } } -fn string_advance_token(&&r: string_reader) { +fn string_advance_token(&&r: StringReader) { for consume_whitespace_and_comments(r).each |comment| { r.peek_tok = comment.tok; r.peek_span = comment.sp; @@ -150,11 +153,11 @@ fn string_advance_token(&&r: string_reader) { } -fn byte_offset(rdr: string_reader) -> BytePos { +fn byte_offset(rdr: StringReader) -> BytePos { (rdr.pos - rdr.filemap.start_pos) } -pub fn get_str_from(rdr: string_reader, start: BytePos) -> ~str { +pub fn get_str_from(rdr: StringReader, start: BytePos) -> ~str { unsafe { // I'm pretty skeptical about this subtraction. What if there's a // multi-byte character before the mark? @@ -163,7 +166,7 @@ pub fn get_str_from(rdr: string_reader, start: BytePos) -> ~str { } } -pub fn bump(rdr: string_reader) { +pub fn bump(rdr: StringReader) { rdr.last_pos = rdr.pos; let current_byte_offset = byte_offset(rdr).to_uint();; if current_byte_offset < (*rdr.src).len() { @@ -187,10 +190,10 @@ pub fn bump(rdr: string_reader) { rdr.curr = -1 as char; } } -pub fn is_eof(rdr: string_reader) -> bool { +pub fn is_eof(rdr: StringReader) -> bool { rdr.curr == -1 as char } -pub fn nextch(rdr: string_reader) -> char { +pub fn nextch(rdr: StringReader) -> char { let offset = byte_offset(rdr).to_uint(); if offset < (*rdr.src).len() { return str::char_at(*rdr.src, offset); @@ -234,14 +237,14 @@ fn is_hex_digit(c: char) -> bool { fn is_bin_digit(c: char) -> bool { return c == '0' || c == '1'; } // might return a sugared-doc-attr -fn consume_whitespace_and_comments(rdr: string_reader) +fn consume_whitespace_and_comments(rdr: StringReader) -> Option<{tok: token::Token, sp: span}> { while is_whitespace(rdr.curr) { bump(rdr); } return consume_any_line_comment(rdr); } // might return a sugared-doc-attr -fn consume_any_line_comment(rdr: string_reader) +fn consume_any_line_comment(rdr: StringReader) -> Option<{tok: token::Token, sp: span}> { if rdr.curr == '/' { match nextch(rdr) { @@ -284,7 +287,7 @@ fn consume_any_line_comment(rdr: string_reader) } // might return a sugared-doc-attr -fn consume_block_comment(rdr: string_reader) +fn consume_block_comment(rdr: StringReader) -> Option<{tok: token::Token, sp: span}> { // block comments starting with "/**" or "/*!" are doc-comments @@ -323,7 +326,7 @@ fn consume_block_comment(rdr: string_reader) return consume_whitespace_and_comments(rdr); } -fn scan_exponent(rdr: string_reader) -> Option<~str> { +fn scan_exponent(rdr: StringReader) -> Option<~str> { let mut c = rdr.curr; let mut rslt = ~""; if c == 'e' || c == 'E' { @@ -341,7 +344,7 @@ fn scan_exponent(rdr: string_reader) -> Option<~str> { } else { return None::<~str>; } } -fn scan_digits(rdr: string_reader, radix: uint) -> ~str { +fn scan_digits(rdr: StringReader, radix: uint) -> ~str { let mut rslt = ~""; loop { let c = rdr.curr; @@ -356,7 +359,7 @@ fn scan_digits(rdr: string_reader, radix: uint) -> ~str { }; } -fn scan_number(c: char, rdr: string_reader) -> token::Token { +fn scan_number(c: char, rdr: StringReader) -> token::Token { let mut num_str, base = 10u, c = c, n = nextch(rdr); if c == '0' && n == 'x' { bump(rdr); @@ -465,7 +468,7 @@ fn scan_number(c: char, rdr: string_reader) -> token::Token { } } -fn scan_numeric_escape(rdr: string_reader, n_hex_digits: uint) -> char { +fn scan_numeric_escape(rdr: StringReader, n_hex_digits: uint) -> char { let mut accum_int = 0, i = n_hex_digits; while i != 0u { let n = rdr.curr; @@ -480,7 +483,7 @@ fn scan_numeric_escape(rdr: string_reader, n_hex_digits: uint) -> char { return accum_int as char; } -fn next_token_inner(rdr: string_reader) -> token::Token { +fn next_token_inner(rdr: StringReader) -> token::Token { let mut accum_str = ~""; let mut c = rdr.curr; if (c >= 'a' && c <= 'z') @@ -505,7 +508,7 @@ fn next_token_inner(rdr: string_reader) -> token::Token { if is_dec_digit(c) { return scan_number(c, rdr); } - fn binop(rdr: string_reader, op: token::binop) -> token::Token { + fn binop(rdr: StringReader, op: token::binop) -> token::Token { bump(rdr); if rdr.curr == '=' { bump(rdr); @@ -698,7 +701,7 @@ fn next_token_inner(rdr: string_reader) -> token::Token { } } -fn consume_whitespace(rdr: string_reader) { +fn consume_whitespace(rdr: StringReader) { while is_whitespace(rdr.curr) && !is_eof(rdr) { bump(rdr); } } diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index f9088bfd6354f..5e4c21da442f2 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -16,7 +16,7 @@ use codemap::{span, CodeMap, FileMap, CharPos, BytePos}; use codemap; use diagnostic::{span_handler, mk_span_handler, mk_handler, emitter}; use parse::attr::parser_attr; -use parse::lexer::{reader, string_reader}; +use parse::lexer::{reader, StringReader}; use parse::parser::Parser; use parse::token::{ident_interner, mk_ident_interner}; use util::interner; diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 25fd13a59999f..adfc090447d33 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -55,10 +55,10 @@ use ast::{view_path, view_path_glob, view_path_list, view_path_simple}; use ast::{visibility, vstore, vstore_box, vstore_fixed, vstore_slice}; use ast::{vstore_uniq}; use ast; -use ast_util::{spanned, respan, mk_sp, ident_to_path, operator_prec}; +use ast_util::{spanned, respan, ident_to_path, operator_prec}; use ast_util; use classify; -use codemap::{span,FssNone, BytePos}; +use codemap::{span,FssNone, BytePos, mk_sp}; use codemap; use parse::attr::parser_attr; use parse::common::{seq_sep_none, token_to_str}; diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index a0243215e697c..437943a0f47fb 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2264,13 +2264,7 @@ pub mod test { use ast_util; use parse; use super::*; - //use util; - - fn string_check (given : &T, expected: &T) { - if !(given == expected) { - fail (fmt!("given %?, expected %?",given,expected)); - } - } + use util::testing::check_equal; #[test] fn test_fun_to_str() { @@ -2284,8 +2278,8 @@ pub mod test { span: ast_util::dummy_sp()}, cf: ast::return_val }; - assert fun_to_str(decl, abba_ident, ~[],mock_interner) - == ~"fn abba()"; + check_equal (&fun_to_str(decl, abba_ident, ~[],mock_interner), + &~"fn abba()"); } #[test] @@ -2304,7 +2298,7 @@ pub mod test { }); let varstr = variant_to_str(var,mock_interner); - string_check(&varstr,&~"pub principal_skinner"); + check_equal(&varstr,&~"pub principal_skinner"); } } diff --git a/src/libsyntax/syntax.rc b/src/libsyntax/syntax.rc index dc5964e6a1202..e467c488506c8 100644 --- a/src/libsyntax/syntax.rc +++ b/src/libsyntax/syntax.rc @@ -31,6 +31,11 @@ extern mod core(vers = "0.6"); use core::*; extern mod std(vers = "0.6"); +extern mod codemap (vers = "0.6"); + +// FIXME (#4677) extern mod decl can move down into +// modules once that's supported. +extern mod testingfuns (vers="0.6"); pub mod syntax { pub use ext; diff --git a/src/libsyntax/util/testing.rs b/src/libsyntax/util/testing.rs new file mode 100644 index 0000000000000..f18dbccb2eaf8 --- /dev/null +++ b/src/libsyntax/util/testing.rs @@ -0,0 +1,33 @@ +// 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. + +// support for test cases. + +// Linkage attributes +#[ link(name = "testingfuns", + vers = "1.0", + uuid = "F8BF9F34-147D-47FF-9849-E6C17D34D2FF") ]; + +// Specify the output type +#[ crate_type = "lib" ]; + +#[no_core]; + +extern mod core(vers = "0.6"); +use core::*; + +extern mod std(vers = "0.6"); + +use core::cmp::Eq; +pub fn check_equal (given : &T, expected: &T) { + if !(given == expected) { + fail (fmt!("given %?, expected %?",given,expected)); + } +} From 963e1bd12b8ee2cf48b7755077f20a9ddd6810a6 Mon Sep 17 00:00:00 2001 From: John Clements Date: Mon, 28 Jan 2013 16:50:34 -0800 Subject: [PATCH 2/4] refactoring to make codemap its own module --- Makefile.in | 14 ++++++++++++++ mk/host.mk | 13 +++++++++++++ mk/target.mk | 19 +++++++++++++++++++ src/libcargo/cargo.rc | 6 ++++-- src/libfuzzer/fuzzer.rc | 8 +++++--- src/librustc/driver/driver.rs | 2 +- src/librustc/driver/session.rs | 14 ++++++++------ src/librustc/front/core_inject.rs | 3 ++- src/librustc/front/test.rs | 3 ++- src/librustc/metadata/creader.rs | 5 +++-- src/librustc/metadata/csearch.rs | 2 +- src/librustc/metadata/decoder.rs | 3 ++- src/librustc/metadata/loader.rs | 2 +- src/librustc/metadata/tydecode.rs | 3 ++- src/librustc/middle/astencode.rs | 6 +++--- src/librustc/middle/borrowck/check_loans.rs | 2 +- src/librustc/middle/borrowck/gather_loans.rs | 2 +- src/librustc/middle/borrowck/mod.rs | 2 +- src/librustc/middle/capture.rs | 2 +- src/librustc/middle/check_match.rs | 6 +++--- src/librustc/middle/freevars.rs | 2 +- src/librustc/middle/kind.rs | 2 +- src/librustc/middle/lint.rs | 2 +- src/librustc/middle/liveness.rs | 2 +- src/librustc/middle/mem_categorization.rs | 2 +- src/librustc/middle/mode.rs | 2 +- src/librustc/middle/pat_util.rs | 2 +- src/librustc/middle/privacy.rs | 2 +- src/librustc/middle/region.rs | 2 +- src/librustc/middle/resolve.rs | 4 ++-- src/librustc/middle/trans/_match.rs | 4 ++-- src/librustc/middle/trans/base.rs | 6 +++--- src/librustc/middle/trans/build.rs | 2 +- src/librustc/middle/trans/closure.rs | 2 +- src/librustc/middle/trans/common.rs | 2 +- src/librustc/middle/trans/consts.rs | 3 ++- src/librustc/middle/trans/debuginfo.rs | 5 +++-- src/librustc/middle/trans/foreign.rs | 2 +- src/librustc/middle/trans/reachable.rs | 2 +- src/librustc/middle/trans/shape.rs | 3 +-- src/librustc/middle/trans/tvec.rs | 2 +- src/librustc/middle/ty.rs | 2 +- src/librustc/middle/typeck/astconv.rs | 2 +- src/librustc/middle/typeck/check/_match.rs | 2 +- src/librustc/middle/typeck/check/demand.rs | 2 +- src/librustc/middle/typeck/check/method.rs | 3 +-- src/librustc/middle/typeck/check/mod.rs | 6 +++--- src/librustc/middle/typeck/check/regionck.rs | 4 ++-- src/librustc/middle/typeck/check/vtable.rs | 2 +- src/librustc/middle/typeck/check/writeback.rs | 2 +- src/librustc/middle/typeck/coherence.rs | 4 ++-- src/librustc/middle/typeck/collect.rs | 4 ++-- src/librustc/middle/typeck/infer/combine.rs | 2 +- src/librustc/middle/typeck/infer/mod.rs | 7 +++---- .../middle/typeck/infer/region_inference.rs | 6 +++--- src/librustc/middle/typeck/infer/test.rs | 2 +- src/librustc/middle/typeck/mod.rs | 2 +- src/librustc/middle/typeck/rscope.rs | 2 +- src/librustc/rustc.rc | 3 ++- src/librustc/util/common.rs | 2 +- src/librustc/util/ppaux.rs | 4 ++-- src/librustdoc/astsrv.rs | 2 +- src/librustdoc/attr_parser.rs | 4 ++-- src/librustdoc/parse.rs | 2 +- src/librustdoc/rustdoc.rc | 1 + src/librusti/rusti.rc | 2 +- src/libsyntax/codemap.rs | 6 +++--- src/libsyntax/ext/pipes/ast_builder.rs | 6 +++--- src/libsyntax/ext/tt/transcribe.rs | 4 ++-- src/libsyntax/parse/eval.rs | 2 +- src/libsyntax/parse/lexer.rs | 2 +- src/libsyntax/print/pprust.rs | 4 ++-- src/test/compile-fail/qquote-1.rs | 2 +- src/test/compile-fail/qquote-2.rs | 2 +- src/test/run-pass-fulldeps/issue-1926.rs | 2 +- src/test/run-pass-fulldeps/qquote.rs | 4 ++-- 76 files changed, 169 insertions(+), 111 deletions(-) diff --git a/Makefile.in b/Makefile.in index e476ac1dba2d1..37d652c04bbf1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -130,6 +130,8 @@ CFG_CORELIB :=$(call CFG_LIB_NAME,core) CFG_STDLIB :=$(call CFG_LIB_NAME,std) CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc) CFG_LIBSYNTAX :=$(call CFG_LIB_NAME,syntax) +CFG_LIBTESTINGFUNS :=$(call CFG_LIB_NAME,testingfuns) +CFG_LIBCODEMAP :=$(call CFG_LIB_NAME,codemap) CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer) CFG_LIBCARGO :=$(call CFG_LIB_NAME,cargo) CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc) @@ -147,6 +149,8 @@ STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std) CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core) LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc) LIBSYNTAX_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,syntax) +LIBTESTINGFUNS_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,testingfuns) +LIBCODEMAP_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,codemap) LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer) LIBCARGO_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,cargo) LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc) @@ -230,10 +234,20 @@ COMPILER_CRATE := $(S)src/librustc/rustc.rc COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/librustc/, \ rustc.rc *.rs */*.rs */*/*.rs */*/*/*.rs)) +## NB: these dependencies overlap with the ones for libtestingfuns +## and libcodemap, but there's an indirect dependency there anyway... LIBSYNTAX_CRATE := $(S)src/libsyntax/syntax.rc LIBSYNTAX_INPUTS := $(wildcard $(addprefix $(S)src/libsyntax/, \ syntax.rc *.rs */*.rs */*/*.rs)) +LIBTESTINGFUNS_CRATE := $(S)src/libsyntax/util/testing.rs +LIBTESTINGFUNS_INPUTS := $(wildcard $(addprefix $(S)src/libsyntax/, \ + util/testing.rs )) + +LIBCODEMAP_CRATE := $(S)src/libsyntax/codemap.rs +LIBCODEMAP_INPUTS := $(wildcard $(addprefix $(S)src/libsyntax/, \ + codemap.rs )) + DRIVER_CRATE := $(S)src/driver/driver.rs ###################################################################### diff --git a/mk/host.mk b/mk/host.mk index 9dc5210cf0081..beb1c153b75ae 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -48,6 +48,7 @@ $$(HLIB$(2)_H_$(4))/$$(CFG_LIBSYNTAX): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBSYNTAX) \ $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \ $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \ + $$(HLIB$(2)_H_$(4))/$$(CFG_LIBCODEMAP) \ $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ $$(HSTDLIB_DEFAULT$(2)_H_$(3)) @$$(call E, cp: $$@) @@ -56,6 +57,18 @@ $$(HLIB$(2)_H_$(4))/$$(CFG_LIBSYNTAX): \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB)) \ $$(HLIB$(2)_H_$(4)) +$$(HLIB$(2)_H_$(4))/$$(CFG_LIBCODEMAP): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCODEMAP) \ + $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \ + $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \ + $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ + $$(HSTDLIB_DEFAULT$(2)_H_$(3)) + @$$(call E, cp: $$@) + $$(Q)cp $$< $$@ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBCODEMAP_GLOB) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBCODEMAP_DSYM_GLOB)) \ + $$(HLIB$(2)_H_$(4)) + $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_RUNTIME) @$$(call E, cp: $$@) diff --git a/mk/target.mk b/mk/target.mk index 5694c907950da..9065bdec95a1d 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -54,6 +54,25 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBCODEMAP) \ + $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ + $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(2)_H_$(3)) $(BORROWCK) -o $$@ $$< && touch $$@ + +$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBCODEMAP): \ + $$(LIBCODEMAP_CRATE) $$(LIBCODEMAP_INPUTS) \ + $$(TSREQ$(1)_T_$(2)_H_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ + $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ + $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(2)_H_$(3)) $(BORROWCK) -o $$@ $$< && touch $$@ + +$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBTESTINGFUNS): \ + $$(LIBTESTINGFUNS_CRATE) $$(LIBTESTINGFUNS_INPUTS) \ + $$(TSREQ$(1)_T_$(2)_H_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) diff --git a/src/libcargo/cargo.rc b/src/libcargo/cargo.rc index 64bf8ef05ba24..fec5b573954ff 100644 --- a/src/libcargo/cargo.rc +++ b/src/libcargo/cargo.rc @@ -41,6 +41,7 @@ extern mod core(vers = "0.6"); extern mod std(vers = "0.6"); extern mod rustc(vers = "0.6"); extern mod syntax(vers = "0.6"); +extern mod codemap(vers = "0.6"); #[legacy_exports] mod pgp; @@ -57,10 +58,11 @@ use core::hashmap::linear::LinearMap; use std::getopts::{optflag, optopt, opt_present}; use std::map::HashMap; use std::{map, json, tempfile, term, sort, getopts}; -use syntax::codemap::span; +use codemap::span; +use codemap; use syntax::diagnostic::span_handler; use syntax::diagnostic; -use syntax::{ast, codemap, parse, visit, attr}; +use syntax::{ast, parse, visit, attr}; struct Package { name: ~str, diff --git a/src/libfuzzer/fuzzer.rc b/src/libfuzzer/fuzzer.rc index 569a8df1a5168..6a5b3e0063247 100644 --- a/src/libfuzzer/fuzzer.rc +++ b/src/libfuzzer/fuzzer.rc @@ -30,12 +30,14 @@ extern mod core(vers = "0.6"); extern mod std(vers = "0.6"); extern mod syntax(vers = "0.6"); +extern mod codemap(vers = "0.6"); use core::*; use io::WriterUtil; -use syntax::{ast, ast_util, fold, visit, codemap}; +use syntax::{ast, ast_util, fold, visit}; +use codemap; use syntax::parse; use syntax::print::pprust; use syntax::diagnostic; @@ -80,12 +82,12 @@ fn common_exprs() -> ~[ast::expr] { id: 0, callee_id: -1, node: e, - span: ast_util::dummy_sp(), + span: codemap::dummy_sp(), } } fn dsl(l: ast::lit_) -> ast::lit { - ast::spanned { node: l, span: ast_util::dummy_sp() } + ast::spanned { node: l, span: codemap::dummy_sp() } } ~[dse(ast::expr_break(option::None)), diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 70cad499e4cb7..330b97eabc493 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -40,7 +40,7 @@ use std; use syntax::ast; use syntax::ast_map; use syntax::attr; -use syntax::codemap; +use codemap; use syntax::diagnostic; use syntax::parse; use syntax::print::{pp, pprust}; diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index e7c78cd48eeef..eca208f232b89 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -23,10 +23,11 @@ use core::cmp; use core::option; use syntax::ast::node_id; use syntax::ast::{int_ty, uint_ty, float_ty}; -use syntax::codemap::span; +use codemap::span; use syntax::diagnostic; use syntax::parse::parse_sess; -use syntax::{ast, codemap}; +use syntax::ast; +use codemap; use syntax; enum os { os_win32, os_macos, os_linux, os_android, os_freebsd, } @@ -343,14 +344,15 @@ mod test { use syntax::ast; use syntax::ast_util; + use codemap; fn make_crate_type_attr(+t: ~str) -> ast::attribute { - ast_util::respan(ast_util::dummy_sp(), ast::attribute_ { + ast_util::respan(codemap::dummy_sp(), ast::attribute_ { style: ast::attr_outer, - value: ast_util::respan(ast_util::dummy_sp(), + value: ast_util::respan(codemap::dummy_sp(), ast::meta_name_value( ~"crate_type", - ast_util::respan(ast_util::dummy_sp(), + ast_util::respan(codemap::dummy_sp(), ast::lit_str(@t)))), is_sugared_doc: false }) @@ -360,7 +362,7 @@ mod test { let mut attrs = ~[]; if with_bin { attrs += ~[make_crate_type_attr(~"bin")]; } if with_lib { attrs += ~[make_crate_type_attr(~"lib")]; } - @ast_util::respan(ast_util::dummy_sp(), ast::crate_ { + @ast_util::respan(codemap::dummy_sp(), ast::crate_ { module: ast::_mod { view_items: ~[], items: ~[] }, attrs: attrs, config: ~[] diff --git a/src/librustc/front/core_inject.rs b/src/librustc/front/core_inject.rs index 6762247aba03f..d1a82087dcf84 100644 --- a/src/librustc/front/core_inject.rs +++ b/src/librustc/front/core_inject.rs @@ -16,7 +16,8 @@ use core::vec; use syntax::ast; use syntax::ast_util::*; use syntax::attr; -use syntax::codemap; +use codemap; +use codemap::dummy_sp; use syntax::fold; export maybe_inject_libcore_ref; diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index 75b7c70db9f8d..47e391f9fd030 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -21,11 +21,12 @@ use core::option; use core::vec; use syntax::ast_util::*; use syntax::attr; -use syntax::codemap::span; +use codemap::span; use syntax::fold; use syntax::print::pprust; use syntax::{ast, ast_util}; use syntax::attr::attrs_contains_name; +use codemap::dummy_sp; export modify_for_testing; diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs index 0099683102de3..f906309276515 100644 --- a/src/librustc/metadata/creader.rs +++ b/src/librustc/metadata/creader.rs @@ -24,7 +24,8 @@ use core::either; use core::option; use core::vec; use syntax::attr; -use syntax::codemap::span; +use codemap; +use codemap::span; use syntax::diagnostic::span_handler; use syntax::parse::token::ident_interner; use syntax::print::pprust; @@ -295,7 +296,7 @@ fn resolve_crate_deps(e: env, cdata: @~[u8]) -> cstore::cnum_map { // This is a new one so we've got to load it // FIXME (#2404): Need better error reporting than just a bogus // span. - let fake_span = ast_util::dummy_sp(); + let fake_span = codemap::dummy_sp(); let local_cnum = resolve_crate(e, cname, cmetas, /*bad*/copy dep.hash, fake_span); cnum_map.insert(extrn_cnum, local_cnum); diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs index 28f900c59dd72..0c8cc7f96b141 100644 --- a/src/librustc/metadata/csearch.rs +++ b/src/librustc/metadata/csearch.rs @@ -26,7 +26,7 @@ use std::ebml; use std::map::HashMap; use syntax::ast; use syntax::ast_map; -use syntax::ast_util::dummy_sp; +use codemap::dummy_sp; use syntax::ast_util; use syntax::diagnostic::expect; use syntax::diagnostic::span_handler; diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 3d532070166dd..034f647d6c939 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -45,6 +45,7 @@ use syntax::diagnostic::span_handler; use syntax::parse::token::ident_interner; use syntax::print::pprust; use syntax::{ast, ast_util}; +use codemap; export struct_dtor; export get_struct_fields; @@ -1023,7 +1024,7 @@ fn get_attributes(md: ebml::Doc) -> ~[ast::attribute] { value: /*bad*/copy *meta_item, is_sugared_doc: false, }, - span: ast_util::dummy_sp() + span: codemap::dummy_sp() }); }; } diff --git a/src/librustc/metadata/loader.rs b/src/librustc/metadata/loader.rs index f15817551b684..9001b18b473ee 100644 --- a/src/librustc/metadata/loader.rs +++ b/src/librustc/metadata/loader.rs @@ -18,7 +18,7 @@ use metadata::decoder; use metadata::encoder; use metadata::filesearch::FileSearch; use metadata::filesearch; -use syntax::codemap::span; +use codemap::span; use syntax::diagnostic::span_handler; use syntax::parse::token::ident_interner; use syntax::print::pprust; diff --git a/src/librustc/metadata/tydecode.rs b/src/librustc/metadata/tydecode.rs index 787a1d3c906c2..d87a8d99256de 100644 --- a/src/librustc/metadata/tydecode.rs +++ b/src/librustc/metadata/tydecode.rs @@ -28,6 +28,7 @@ use syntax::ast; use syntax::ast::*; use syntax::ast_util; use syntax::ast_util::respan; +use codemap; use std::map::HashMap; export parse_state_from_data; @@ -122,7 +123,7 @@ fn parse_path(st: @pstate) -> @ast::path { ':' => { next(st); next(st); } c => { if c == '(' { - return @ast::path { span: ast_util::dummy_sp(), + return @ast::path { span: codemap::dummy_sp(), global: false, idents: idents, rp: None, diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index f39bd552c3bb6..a1e48343e57dd 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -39,8 +39,8 @@ use std::serialize::Decodable; use syntax::ast; use syntax::ast_map; use syntax::ast_util; -use syntax::codemap::span; -use syntax::codemap; +use codemap::span; +use codemap; use syntax::diagnostic; use syntax::fold::*; use syntax::fold; @@ -221,7 +221,7 @@ impl extended_decode_ctxt { ast::def_id { crate: ast::local_crate, node: self.tr_id(did.node) } } fn tr_span(_span: span) -> span { - ast_util::dummy_sp() // FIXME (#1972): handle span properly + codemap::dummy_sp() // FIXME (#1972): handle span properly } } diff --git a/src/librustc/middle/borrowck/check_loans.rs b/src/librustc/middle/borrowck/check_loans.rs index bdb889b68f116..68ddeb305a00b 100644 --- a/src/librustc/middle/borrowck/check_loans.rs +++ b/src/librustc/middle/borrowck/check_loans.rs @@ -37,7 +37,7 @@ use std::map::HashMap; use syntax::ast::{m_const, m_imm, m_mutbl}; use syntax::ast; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::visit; diff --git a/src/librustc/middle/borrowck/gather_loans.rs b/src/librustc/middle/borrowck/gather_loans.rs index 6f913f99e11fd..b586e54815f3d 100644 --- a/src/librustc/middle/borrowck/gather_loans.rs +++ b/src/librustc/middle/borrowck/gather_loans.rs @@ -36,7 +36,7 @@ use core::vec; use std::map::HashMap; use syntax::ast::{m_const, m_imm, m_mutbl}; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::visit; diff --git a/src/librustc/middle/borrowck/mod.rs b/src/librustc/middle/borrowck/mod.rs index 2afdcc9d47d53..ba4dca714e34c 100644 --- a/src/librustc/middle/borrowck/mod.rs +++ b/src/librustc/middle/borrowck/mod.rs @@ -247,7 +247,7 @@ use syntax::ast::{mutability, m_mutbl, m_imm, m_const}; use syntax::ast; use syntax::ast_map; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::visit; diff --git a/src/librustc/middle/capture.rs b/src/librustc/middle/capture.rs index bd8d1b6490659..e9b9bd9f071d6 100644 --- a/src/librustc/middle/capture.rs +++ b/src/librustc/middle/capture.rs @@ -17,7 +17,7 @@ use core::option; use core::vec; use std::map::HashMap; use std::map; -use syntax::codemap::span; +use codemap::span; use syntax::{ast, ast_util}; export capture_mode; diff --git a/src/librustc/middle/check_match.rs b/src/librustc/middle/check_match.rs index d76e1b179b1a9..68bc5cc9e9e31 100644 --- a/src/librustc/middle/check_match.rs +++ b/src/librustc/middle/check_match.rs @@ -25,9 +25,9 @@ use core::vec; use std::map::HashMap; use std::sort; use syntax::ast::*; -use syntax::ast_util::{variant_def_ids, dummy_sp, unguarded_pat, walk_pat}; +use syntax::ast_util::{variant_def_ids, unguarded_pat, walk_pat}; use syntax::ast_util; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; use syntax::print::pprust::pat_to_str; use syntax::visit; @@ -478,7 +478,7 @@ fn ctor_arity(cx: @MatchCheckCtxt, ctor: ctor, ty: ty::t) -> uint { } fn wild() -> @pat { - @pat {id: 0, node: pat_wild, span: ast_util::dummy_sp()} + @pat {id: 0, node: pat_wild, span: dummy_sp()} } fn specialize(cx: @MatchCheckCtxt, +r: ~[@pat], ctor_id: ctor, arity: uint, diff --git a/src/librustc/middle/freevars.rs b/src/librustc/middle/freevars.rs index 9e9f814110e16..92833968b9369 100644 --- a/src/librustc/middle/freevars.rs +++ b/src/librustc/middle/freevars.rs @@ -19,7 +19,7 @@ use core::int; use core::option::*; use core::vec; use std::map::*; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::path_to_str; use syntax::{ast, ast_util, visit}; diff --git a/src/librustc/middle/kind.rs b/src/librustc/middle/kind.rs index eee0a48ec67f9..c12b409d1f20d 100644 --- a/src/librustc/middle/kind.rs +++ b/src/librustc/middle/kind.rs @@ -27,7 +27,7 @@ use core::str; use core::vec; use std::map::HashMap; use syntax::ast::*; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::expr_to_str; use syntax::{visit, ast_util}; diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs index af490aef3f470..928c084738cf2 100644 --- a/src/librustc/middle/lint.rs +++ b/src/librustc/middle/lint.rs @@ -38,7 +38,7 @@ use std::smallintmap::{Map, SmallIntMap}; use std::smallintmap; use syntax::ast_util::{path_to_ident}; use syntax::attr; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::{expr_to_str, mode_to_str, pat_to_str}; use syntax::{ast, ast_util, visit}; diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index eb07e286f6289..63e47d943ccff 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -122,7 +122,7 @@ use core::uint; use core::vec; use std::map::HashMap; use syntax::ast::*; -use syntax::codemap::span; +use codemap::span; use syntax::parse::token::special_idents; use syntax::print::pprust::{expr_to_str, block_to_str}; use syntax::visit::{fk_anon, fk_dtor, fk_fn_block, fk_item_fn, fk_method}; diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs index 9ea03440ad6b4..d76c405ac18b5 100644 --- a/src/librustc/middle/mem_categorization.rs +++ b/src/librustc/middle/mem_categorization.rs @@ -59,7 +59,7 @@ use core::to_bytes; use core::uint; use syntax::ast::{m_imm, m_const, m_mutbl}; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; #[deriving_eq] diff --git a/src/librustc/middle/mode.rs b/src/librustc/middle/mode.rs index 149821db28938..6a05f6aa73695 100644 --- a/src/librustc/middle/mode.rs +++ b/src/librustc/middle/mode.rs @@ -33,7 +33,7 @@ use syntax::ast::{fn_decl, blk}; use syntax::visit; use syntax::visit::{fn_kind, vt}; use syntax::print::pprust; -use syntax::codemap::span; +use codemap::span; struct VisitContext { tcx: ctxt, diff --git a/src/librustc/middle/pat_util.rs b/src/librustc/middle/pat_util.rs index 5a4d36f1d10a9..3b416af3a1995 100644 --- a/src/librustc/middle/pat_util.rs +++ b/src/librustc/middle/pat_util.rs @@ -19,7 +19,7 @@ use syntax::ast_util; use syntax::ast_util::{path_to_ident, respan, walk_pat}; use syntax::fold; use syntax::fold::*; -use syntax::codemap::span; +use codemap::span; use std::map::HashMap; export pat_binding_ids, pat_bindings, pat_id_map, PatIdMap; diff --git a/src/librustc/middle/privacy.rs b/src/librustc/middle/privacy.rs index 401510328da0b..c6e1d9852c0c1 100644 --- a/src/librustc/middle/privacy.rs +++ b/src/librustc/middle/privacy.rs @@ -30,7 +30,7 @@ use syntax::ast_map::{node_item, node_method}; use syntax::ast_map; use syntax::ast_util::{Private, Public, has_legacy_export_attr, is_local}; use syntax::ast_util::{visibility_to_privacy}; -use syntax::codemap::span; +use codemap::span; use syntax::visit; fn check_crate(tcx: ty::ctxt, method_map: &method_map, crate: @ast::crate) { diff --git a/src/librustc/middle/region.rs b/src/librustc/middle/region.rs index ac3a16b07a0b1..9d3753375c044 100644 --- a/src/librustc/middle/region.rs +++ b/src/librustc/middle/region.rs @@ -34,7 +34,7 @@ use std::list; use std::list::list; use std::map::HashMap; use syntax::ast_map; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::{ast, visit}; diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index 60ed64b1c1d5e..e8cd5f983a72b 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -58,7 +58,7 @@ use syntax::ast::{variant, view_item, view_item_export, view_item_import}; use syntax::ast::{view_item_use, view_path_glob, view_path_list}; use syntax::ast::{view_path_simple, visibility, anonymous, named, not}; use syntax::ast::{unsafe_fn}; -use syntax::ast_util::{def_id_of_def, dummy_sp, local_def}; +use syntax::ast_util::{def_id_of_def, local_def}; use syntax::ast_util::{path_to_ident, walk_pat, trait_method_to_ty_method}; use syntax::ast_util::{Privacy, Public, Private, visibility_to_privacy}; use syntax::ast_util::has_legacy_export_attr; @@ -66,7 +66,7 @@ use syntax::attr::{attr_metas, contains_name, attrs_contains_name}; use syntax::parse::token::ident_interner; use syntax::parse::token::special_idents; use syntax::print::pprust::{pat_to_str, path_to_str}; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; use syntax::visit::{default_visitor, fk_method, mk_vt, Visitor, visit_block}; use syntax::visit::{visit_crate, visit_expr, visit_expr_opt, visit_fn}; use syntax::visit::{visit_foreign_item, visit_item, visit_method_helper}; diff --git a/src/librustc/middle/trans/_match.rs b/src/librustc/middle/trans/_match.rs index 084f0ba421e08..5f54d2eb97862 100644 --- a/src/librustc/middle/trans/_match.rs +++ b/src/librustc/middle/trans/_match.rs @@ -168,9 +168,9 @@ use core::dvec; use std::map::HashMap; use syntax::ast::def_id; use syntax::ast; -use syntax::ast_util::{dummy_sp, path_to_ident}; +use syntax::ast_util::path_to_ident; use syntax::ast_util; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; use syntax::print::pprust::pat_to_str; fn macros() { include!("macros.rs"); } // FIXME(#3114): Macro import/export. diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index f4814b4657b97..73411d4aa5dd7 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -80,7 +80,7 @@ use std::{map, time, list}; use syntax::ast_map::{path, path_elt_to_str, path_mod, path_name}; use syntax::ast_util::{def_id_of_def, local_def, path_to_ident}; use syntax::attr; -use syntax::codemap::span; +use codemap::span; use syntax::diagnostic::expect; use syntax::parse::token::special_idents; use syntax::print::pprust::{expr_to_str, stmt_to_str, path_to_str}; @@ -1849,7 +1849,7 @@ fn trans_enum_variant(ccx: @crate_ctxt, ty: varg.ty, pat: ast_util::ident_to_pat( ccx.tcx.sess.next_node_id(), - ast_util::dummy_sp(), + codemap::dummy_sp(), special_idents::arg), id: varg.id, } @@ -1912,7 +1912,7 @@ fn trans_tuple_struct(ccx: @crate_ctxt, is_mutbl: false, ty: field.node.ty, pat: ast_util::ident_to_pat(ccx.tcx.sess.next_node_id(), - ast_util::dummy_sp(), + codemap::dummy_sp(), special_idents::arg), id: field.node.id } diff --git a/src/librustc/middle/trans/build.rs b/src/librustc/middle/trans/build.rs index 060bef1a44c62..371b126a9470d 100644 --- a/src/librustc/middle/trans/build.rs +++ b/src/librustc/middle/trans/build.rs @@ -23,7 +23,7 @@ use core::libc; use core::str; use core::vec; use std::map::HashMap; -use syntax::codemap; +use codemap; fn terminate(cx: block, _: &str) { unsafe { diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs index a3f07431bc8e8..69be40c5bf64a 100644 --- a/src/librustc/middle/trans/closure.rs +++ b/src/librustc/middle/trans/closure.rs @@ -31,7 +31,7 @@ use std::map::HashMap; use syntax::ast; use syntax::ast_map::{path, path_mod, path_name}; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::expr_to_str; // ___Good to know (tm)__________________________________________________ diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index 3babfbd8285fd..0f5f43442eb9d 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -56,7 +56,7 @@ use core::vec; use std::map::{HashMap, Set}; use syntax::ast::ident; use syntax::ast_map::path; -use syntax::codemap::span; +use codemap::span; use syntax::parse::token::ident_interner; use syntax::print::pprust::expr_to_str; use syntax::{ast, ast_map}; diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs index 01533e162830f..29bf671794bdf 100644 --- a/src/librustc/middle/trans/consts.rs +++ b/src/librustc/middle/trans/consts.rs @@ -17,7 +17,8 @@ use middle::trans::consts; use middle::trans::expr; use middle::ty; -use syntax::{ast, ast_util, codemap, ast_map}; +use syntax::{ast, ast_util, ast_map}; +use codemap; fn const_lit(cx: @crate_ctxt, e: @ast::expr, lit: ast::lit) -> ValueRef { diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index 6b368555637bb..f0191a4ba040b 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -29,9 +29,10 @@ use core::sys; use std::map::HashMap; use std::map; use syntax::ast::Ty; -use syntax::codemap::{span, CharPos}; +use codemap; +use codemap::{span, CharPos}; use syntax::parse::token::ident_interner; -use syntax::{ast, codemap, ast_util, ast_map}; +use syntax::{ast, ast_util, ast_map}; export create_local_var; export create_function; diff --git a/src/librustc/middle/trans/foreign.rs b/src/librustc/middle/trans/foreign.rs index 317a64ea52875..fb4514c3d6a45 100644 --- a/src/librustc/middle/trans/foreign.rs +++ b/src/librustc/middle/trans/foreign.rs @@ -35,7 +35,7 @@ use middle::ty::{FnTyBase, FnMeta, FnSig, arg}; use util::ppaux::ty_to_str; use core::libc::c_uint; -use syntax::codemap::span; +use codemap::span; use syntax::{ast, ast_util}; use syntax::{attr, ast_map}; use syntax::parse::token::special_idents; diff --git a/src/librustc/middle/trans/reachable.rs b/src/librustc/middle/trans/reachable.rs index 29051837e4a0f..3fa7daebca85a 100644 --- a/src/librustc/middle/trans/reachable.rs +++ b/src/librustc/middle/trans/reachable.rs @@ -225,7 +225,7 @@ fn traverse_inline_body(cx: ctx, body: blk) { fn traverse_all_resources_and_impls(cx: ctx, crate_mod: _mod) { visit::visit_mod( - crate_mod, ast_util::dummy_sp(), 0, cx, + crate_mod, codemap::dummy_sp(), 0, cx, visit::mk_vt(@visit::Visitor { visit_expr: |_e, _cx, _v| { }, visit_item: |i, cx, v| { diff --git a/src/librustc/middle/trans/shape.rs b/src/librustc/middle/trans/shape.rs index 3403df6c1cc62..c974caf152ba1 100644 --- a/src/librustc/middle/trans/shape.rs +++ b/src/librustc/middle/trans/shape.rs @@ -28,8 +28,7 @@ use core::option::is_some; use core::vec; use std::map::HashMap; use syntax::ast; -use syntax::ast_util::dummy_sp; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; use syntax::util::interner; use ty_ctxt = middle::ty::ctxt; diff --git a/src/librustc/middle/trans/tvec.rs b/src/librustc/middle/trans/tvec.rs index eb2fd91e6051f..e3dab38d6cf63 100644 --- a/src/librustc/middle/trans/tvec.rs +++ b/src/librustc/middle/trans/tvec.rs @@ -24,7 +24,7 @@ use util::common::indenter; use util::ppaux::ty_to_str; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::{expr_to_str}; // Boxed vector types are in some sense currently a "shorthand" for a box diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 26f4310bf1cfa..18846abef0312 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -46,7 +46,7 @@ use std::{map, smallintmap}; use syntax::ast::*; use syntax::ast_util::{is_local, local_def}; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::{ast, ast_map}; use syntax; diff --git a/src/librustc/middle/typeck/astconv.rs b/src/librustc/middle/typeck/astconv.rs index e845904956d95..82cda44ebe45c 100644 --- a/src/librustc/middle/typeck/astconv.rs +++ b/src/librustc/middle/typeck/astconv.rs @@ -68,7 +68,7 @@ use middle::typeck::{crate_ctxt, write_substs_to_tcx, write_ty_to_tcx}; use core::result; use core::vec; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::path_to_str; use util::common::indent; diff --git a/src/librustc/middle/typeck/check/_match.rs b/src/librustc/middle/typeck/check/_match.rs index ebfce27a4c8bb..9dd91ff5bce92 100644 --- a/src/librustc/middle/typeck/check/_match.rs +++ b/src/librustc/middle/typeck/check/_match.rs @@ -24,7 +24,7 @@ use std::map::HashMap; use syntax::ast; use syntax::ast_util::walk_pat; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; fn check_match(fcx: @fn_ctxt, diff --git a/src/librustc/middle/typeck/check/demand.rs b/src/librustc/middle/typeck/check/demand.rs index c8a644fef101c..65869435dcb4a 100644 --- a/src/librustc/middle/typeck/check/demand.rs +++ b/src/librustc/middle/typeck/check/demand.rs @@ -16,7 +16,7 @@ use middle::typeck::infer; use core::result::{Err, Ok}; use core::result; use syntax::ast; -use syntax::codemap::span; +use codemap::span; // Requires that the two types unify, and prints an error message if they // don't. diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 543adbd53aac8..056ec3c419f72 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -108,8 +108,7 @@ use syntax::ast::{m_const, m_mutbl, m_imm}; use syntax::ast; use syntax::ast_map; use syntax::ast_map::node_id_to_str; -use syntax::ast_util::dummy_sp; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; fn lookup( fcx: @fn_ctxt, diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs index 3d5f6e9d303d9..448312589ff97 100644 --- a/src/librustc/middle/typeck/check/mod.rs +++ b/src/librustc/middle/typeck/check/mod.rs @@ -124,8 +124,8 @@ use syntax::ast_map; use syntax::ast_util::{Private, Public, is_local, local_def, respan}; use syntax::ast_util::{visibility_to_privacy}; use syntax::ast_util; -use syntax::codemap::span; -use syntax::codemap; +use codemap::span; +use codemap; use syntax::parse::token::special_idents; use syntax::print::pprust; use syntax::visit; @@ -560,7 +560,7 @@ fn check_struct(ccx: @crate_ctxt, struct_def: @ast::struct_def, def_id: local_def(id), explicit_self: spanned { node: ast::sty_by_ref, - span: ast_util::dummy_sp() } }; + span: codemap::dummy_sp() } }; // typecheck the dtor let dtor_dec = ast_util::dtor_dec(); check_bare_fn(ccx, &dtor_dec, diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs index 43c1cb7816694..7e3097e3c938f 100644 --- a/src/librustc/middle/typeck/check/regionck.rs +++ b/src/librustc/middle/typeck/check/regionck.rs @@ -45,7 +45,7 @@ use core::result; use syntax::ast::{ProtoBare, ProtoBox, ProtoUniq, ProtoBorrowed}; use syntax::ast::{def_arg, def_binding, def_local, def_self, def_upvar}; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust; use syntax::visit; @@ -533,7 +533,7 @@ mod guarantor { use middle::typeck::check::regionck::{rcx, infallibly_mk_subr}; use middle::ty; use syntax::ast; - use syntax::codemap::span; + use codemap::span; use util::ppaux::{ty_to_str}; pub fn for_addr_of(rcx: @rcx, expr: @ast::expr, base: @ast::expr) { diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs index 9f6cc6835b715..867eb3fd260e5 100644 --- a/src/librustc/middle/typeck/check/vtable.rs +++ b/src/librustc/middle/typeck/check/vtable.rs @@ -31,7 +31,7 @@ use result::{Result, Ok, Err}; use std::map::HashMap; use syntax::ast; use syntax::ast_util; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::expr_to_str; use syntax::print::pprust; use syntax::visit; diff --git a/src/librustc/middle/typeck/check/writeback.rs b/src/librustc/middle/typeck/check/writeback.rs index c5374af2dd060..21380e0cb59cc 100644 --- a/src/librustc/middle/typeck/check/writeback.rs +++ b/src/librustc/middle/typeck/check/writeback.rs @@ -30,7 +30,7 @@ use core::result::{Result, Ok, Err}; use core::vec; use std::map::HashMap; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::pat_to_str; use syntax::visit; diff --git a/src/librustc/middle/typeck/coherence.rs b/src/librustc/middle/typeck/coherence.rs index 4cd2eaaf003c9..1b8123ae15605 100644 --- a/src/librustc/middle/typeck/coherence.rs +++ b/src/librustc/middle/typeck/coherence.rs @@ -46,9 +46,9 @@ use syntax::ast::{trait_ref}; use syntax::ast; use syntax::ast_map::node_item; use syntax::ast_map; -use syntax::ast_util::{def_id_of_def, dummy_sp, local_def}; +use syntax::ast_util::{def_id_of_def, local_def}; use syntax::attr; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; use syntax::parse; use syntax::visit::{default_simple_visitor, default_visitor}; use syntax::visit::{mk_simple_visitor, mk_vt, visit_crate, visit_item}; diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs index 8374a65f63c30..a8e35d755dcc0 100644 --- a/src/librustc/middle/typeck/collect.rs +++ b/src/librustc/middle/typeck/collect.rs @@ -56,8 +56,8 @@ use syntax::ast_map; use syntax::ast_util::{local_def, split_trait_methods}; use syntax::ast_util::{trait_method_to_ty_method}; use syntax::ast_util; -use syntax::codemap::span; -use syntax::codemap; +use codemap::span; +use codemap; use syntax::print::pprust::path_to_str; use syntax::visit; diff --git a/src/librustc/middle/typeck/infer/combine.rs b/src/librustc/middle/typeck/infer/combine.rs index d1c57a21a3b2f..b720e7aba6b26 100644 --- a/src/librustc/middle/typeck/infer/combine.rs +++ b/src/librustc/middle/typeck/infer/combine.rs @@ -70,7 +70,7 @@ use core::result::{iter_vec2, map_vec2}; use core::vec; use syntax::ast::{Onceness, purity, ret_style}; use syntax::ast; -use syntax::codemap::span; +use codemap::span; fn macros() { include!("macros.rs"); } // FIXME(#3114): Macro import/export. diff --git a/src/librustc/middle/typeck/infer/mod.rs b/src/librustc/middle/typeck/infer/mod.rs index cab40ce21b154..664f2c1761809 100644 --- a/src/librustc/middle/typeck/infer/mod.rs +++ b/src/librustc/middle/typeck/infer/mod.rs @@ -284,9 +284,8 @@ use syntax::ast::{ret_style, purity}; use syntax::ast::{m_const, m_imm, m_mutbl}; use syntax::ast::{unsafe_fn, impure_fn, pure_fn, extern_fn}; use syntax::ast; -use syntax::ast_util::dummy_sp; use syntax::ast_util; -use syntax::codemap::span; +use codemap::{span, dummy_sp}; export InferCtxt; export new_infer_ctxt; @@ -430,7 +429,7 @@ fn can_mk_subty(cx: @InferCtxt, a: ty::t, b: ty::t) -> ures { debug!("can_mk_subty(%s <: %s)", a.inf_str(cx), b.inf_str(cx)); do indent { do cx.probe { - cx.sub(true, ast_util::dummy_sp()).tys(a, b) + cx.sub(true, dummy_sp()).tys(a, b) } }.to_ures() } @@ -471,7 +470,7 @@ fn can_mk_coercety(cx: @InferCtxt, a: ty::t, b: ty::t) -> ures { debug!("can_mk_coercety(%s -> %s)", a.inf_str(cx), b.inf_str(cx)); do indent { do cx.probe { - let span = ast_util::dummy_sp(); + let span = dummy_sp(); Coerce(cx.combine_fields(true, span)).tys(a, b) } }.to_ures() diff --git a/src/librustc/middle/typeck/infer/region_inference.rs b/src/librustc/middle/typeck/infer/region_inference.rs index 1113029a13706..0c7cc807628fa 100644 --- a/src/librustc/middle/typeck/infer/region_inference.rs +++ b/src/librustc/middle/typeck/infer/region_inference.rs @@ -548,7 +548,7 @@ use middle::ty::{Region, RegionVid, re_static, re_infer, re_free, re_bound}; use middle::ty::{re_scope, ReVar, ReSkolemized, br_fresh}; use middle::typeck::infer::to_str::InferStr; use middle::typeck::infer::cres; -use syntax::codemap; +use codemap; use util::common::indenter; use util::ppaux::note_and_explain_region; @@ -562,8 +562,8 @@ use result::{Ok, Err}; use std::map::HashMap; use std::cell::{Cell, empty_cell}; use std::list::{List, Nil, Cons}; -use syntax::codemap::span; -use syntax::codemap; +use codemap::span; +use codemap; export RegionVarBindings; export make_subregion; diff --git a/src/librustc/middle/typeck/infer/test.rs b/src/librustc/middle/typeck/infer/test.rs index 5f85d6c4268e2..32a54e891d1b4 100644 --- a/src/librustc/middle/typeck/infer/test.rs +++ b/src/librustc/middle/typeck/infer/test.rs @@ -31,7 +31,7 @@ use std::getopts::{opt_present}; use std::getopts; use std::getopts; use std::map::HashMap; -use syntax::ast_util::dummy_sp; +use codemap::dummy_sp; use syntax::parse::parse_crate_from_source_str; use syntax::{ast, attr, parse}; diff --git a/src/librustc/middle/typeck/mod.rs b/src/librustc/middle/typeck/mod.rs index 142f1e989a037..149430d114ff3 100644 --- a/src/librustc/middle/typeck/mod.rs +++ b/src/librustc/middle/typeck/mod.rs @@ -76,7 +76,7 @@ use syntax::ast::{provided, required, spanned}; use syntax::ast_map::node_id_to_str; use syntax::ast_util::{has_legacy_export_attr}; use syntax::ast_util::{local_def, respan, split_trait_methods}; -use syntax::codemap::span; +use codemap::span; use syntax::print::pprust::*; use syntax::visit; use syntax::{ast, ast_util, ast_map}; diff --git a/src/librustc/middle/typeck/rscope.rs b/src/librustc/middle/typeck/rscope.rs index f1655f2a363b1..bb19eaec394d9 100644 --- a/src/librustc/middle/typeck/rscope.rs +++ b/src/librustc/middle/typeck/rscope.rs @@ -15,7 +15,7 @@ use middle::ty; use core::result::Result; use core::result; use syntax::ast; -use syntax::codemap::span; +use codemap::span; use syntax::parse::token::special_idents; trait region_scope { diff --git a/src/librustc/rustc.rc b/src/librustc/rustc.rc index 059ada8b46efc..e152206f9ca94 100644 --- a/src/librustc/rustc.rc +++ b/src/librustc/rustc.rc @@ -35,6 +35,7 @@ use core::*; extern mod std(vers = "0.6"); extern mod syntax(vers = "0.6"); +extern mod codemap(vers = "0.6"); /* Alternate names for some modules. @@ -204,7 +205,7 @@ use std::getopts; use std::map::HashMap; use getopts::{opt_present}; use getopts::groups; -use syntax::codemap; +use codemap; use syntax::diagnostic; use driver::driver::{host_triple, optgroups, early_error, str_input, file_input, build_session_options, diff --git a/src/librustc/util/common.rs b/src/librustc/util/common.rs index 2017af05e3599..36b13c7efc93c 100644 --- a/src/librustc/util/common.rs +++ b/src/librustc/util/common.rs @@ -11,7 +11,7 @@ use core::prelude::*; use syntax::ast; -use syntax::codemap::{span}; +use codemap::{span}; use syntax::visit; use syntax::print; use syntax; diff --git a/src/librustc/util/ppaux.rs b/src/librustc/util/ppaux.rs index fb9e0f36c2f25..9554dd515cda7 100644 --- a/src/librustc/util/ppaux.rs +++ b/src/librustc/util/ppaux.rs @@ -27,8 +27,8 @@ use middle::ty::{ty_ptr, ty_rec, ty_rptr, ty_self, ty_tup}; use middle::ty::{ty_type, ty_uniq, ty_uint, ty_infer}; use middle::ty::{ty_unboxed_vec}; use metadata::encoder; -use syntax::codemap; -use syntax::codemap::span; +use codemap; +use codemap::span; use syntax::print::pprust; use syntax::print::pprust::{path_to_str, proto_to_str, mode_to_str}; use syntax::{ast, ast_util}; diff --git a/src/librustdoc/astsrv.rs b/src/librustdoc/astsrv.rs index bc332615eaa0e..517796967a02b 100644 --- a/src/librustdoc/astsrv.rs +++ b/src/librustdoc/astsrv.rs @@ -34,7 +34,7 @@ use rustc::metadata::filesearch; use std::map::HashMap; use syntax::ast; use syntax::ast_map; -use syntax::codemap; +use codemap; use syntax::diagnostic::handler; use syntax::diagnostic; use syntax; diff --git a/src/librustdoc/attr_parser.rs b/src/librustdoc/attr_parser.rs index 311245ccc345d..1474114e62a17 100644 --- a/src/librustdoc/attr_parser.rs +++ b/src/librustdoc/attr_parser.rs @@ -22,7 +22,7 @@ use core::tuple; use core::vec; use syntax::ast; use syntax::attr; -use syntax::codemap; +use codemap; use syntax; pub type CrateAttrs = { @@ -40,7 +40,7 @@ mod test { use syntax::parse; use syntax::parse::parser; use syntax::parse::attr::parser_attr; - use syntax::codemap; + use codemap; use syntax::diagnostic; let parse_sess = syntax::parse::new_parse_sess(None); diff --git a/src/librustdoc/parse.rs b/src/librustdoc/parse.rs index 48eb3d47a167a..a12140b64608a 100644 --- a/src/librustdoc/parse.rs +++ b/src/librustdoc/parse.rs @@ -16,7 +16,7 @@ use rustc::driver::driver::{file_input, str_input}; use rustc::driver::driver; use rustc::driver::session; use syntax::ast; -use syntax::codemap; +use codemap; use syntax::diagnostic; use syntax::parse; diff --git a/src/librustdoc/rustdoc.rc b/src/librustdoc/rustdoc.rc index ce42910f70191..2d57097075dee 100644 --- a/src/librustdoc/rustdoc.rc +++ b/src/librustdoc/rustdoc.rc @@ -33,6 +33,7 @@ extern mod core(vers = "0.6"); extern mod std(vers = "0.6"); extern mod rustc(vers = "0.6"); extern mod syntax(vers = "0.6"); +extern mod codemap(vers = "0.6"); use core::*; use std::par; diff --git a/src/librusti/rusti.rc b/src/librusti/rusti.rc index a8dba459aba2f..833e6348c48df 100644 --- a/src/librusti/rusti.rc +++ b/src/librusti/rusti.rc @@ -37,7 +37,7 @@ use rustc::lib::llvm::llvm; use rustc::metadata::{creader, filesearch}; use rustc::middle::{freevars, kind, lint, trans, ty, typeck}; use rustc::middle; -use syntax::{ast, ast_util, codemap, diagnostic, fold, parse, print, visit}; +use syntax::{ast, diagnostic, fold, parse, print, visit}; use syntax::ast_util::*; use syntax::parse::token; use syntax::print::{pp, pprust}; diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 8113834a66dd1..d8ecb7aad78d4 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -29,7 +29,7 @@ source code snippets, etc. #[ link(name = "codemap", - vers = "1.0", + vers = "0.6", uuid = "A0F4AB1E-002B-4CF2-A280-5DE62C8E13A3") ]; #[ crate_type = "lib" ]; @@ -165,7 +165,7 @@ pub impl span: Decodable { } } -/* assuming that we're not in macro expansion */ +// assuming that we're not in macro expansion pub pure fn mk_sp(+lo: BytePos, +hi: BytePos) -> span { span {lo: lo, hi: hi, expn_info: None} } @@ -496,7 +496,7 @@ mod test { use super::*; extern mod testingfuns; use testingfuns::check_equal; - + #[test] fn t1 () { let cm = CodeMap::new(); diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs index 949b9da46d10e..4d74f2926228f 100644 --- a/src/libsyntax/ext/pipes/ast_builder.rs +++ b/src/libsyntax/ext/pipes/ast_builder.rs @@ -329,19 +329,19 @@ pub impl ext_ctxt: ext_ctxt_ast_builder { self.ident_of(~"kinds"), self.ident_of(~"Owned") ], - ast_util::dummy_sp() + dummy_sp() ), ast::type_value_ns, self.next_id() ), - span: ast_util::dummy_sp() + span: dummy_sp() } ]); let vi = @ast::view_item { node: vi, attrs: ~[], vis: ast::private, - span: ast_util::dummy_sp() + span: dummy_sp() }; self.item( diff --git a/src/libsyntax/ext/tt/transcribe.rs b/src/libsyntax/ext/tt/transcribe.rs index b3b1e04976a86..80b57c028c84c 100644 --- a/src/libsyntax/ext/tt/transcribe.rs +++ b/src/libsyntax/ext/tt/transcribe.rs @@ -12,7 +12,7 @@ use core::prelude::*; use ast; use ast::{token_tree, tt_delim, tt_tok, tt_seq, tt_nonterminal,ident}; -use ast_util; +use codemap; use codemap::span; use diagnostic::span_handler; use ext::tt::macro_parser::{named_match, matched_seq, matched_nonterminal}; @@ -69,7 +69,7 @@ pub fn new_tt_reader(sp_diag: span_handler, itr: @ident_interner, mut repeat_len: ~[], /* dummy values, never read: */ mut cur_tok: EOF, - mut cur_span: ast_util::dummy_sp() + mut cur_span: codemap::dummy_sp() }; tt_next_token(r); /* get cur_tok and cur_span set up */ return r; diff --git a/src/libsyntax/parse/eval.rs b/src/libsyntax/parse/eval.rs index caab03afb7612..98e9060a9781e 100644 --- a/src/libsyntax/parse/eval.rs +++ b/src/libsyntax/parse/eval.rs @@ -75,7 +75,7 @@ fn parse_companion_mod(cx: ctx, prefix: &Path, suffix: &Option) // XXX: Using a dummy span, but this code will go away soon let p0 = new_sub_parser_from_file(cx.sess, cx.cfg, modpath, - ast_util::dummy_sp()); + codemap::dummy_sp()); let inner_attrs = p0.parse_inner_attrs_and_next(); let m0 = p0.parse_mod_items(token::EOF, inner_attrs.next); return (m0.view_items, m0.items, inner_attrs.inner); diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index f8d7473c96a77..fb06558efe140 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -82,7 +82,7 @@ pub fn new_low_level_string_reader(span_diagnostic: span_handler, filemap: filemap, interner: itr, /* dummy values; not read */ mut peek_tok: token::EOF, - mut peek_span: ast_util::dummy_sp()}; + mut peek_span: codemap::dummy_sp()}; bump(r); return r; } diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 437943a0f47fb..705018dea4a67 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2275,7 +2275,7 @@ pub mod test { inputs: ~[], output: @ast::Ty {id: 0, node: ast::ty_nil, - span: ast_util::dummy_sp()}, + span: codemap::dummy_sp()}, cf: ast::return_val }; check_equal (&fun_to_str(decl, abba_ident, ~[],mock_interner), @@ -2287,7 +2287,7 @@ pub mod test { let mock_interner = parse::token::mk_fake_ident_interner(); let ident = mock_interner.intern(@~"principal_skinner"); - let var = ast_util::respan(ast_util::dummy_sp(), ast::variant_ { + let var = ast_util::respan(codemap::dummy_sp(), ast::variant_ { name: ident, attrs: ~[], // making this up as I go.... ? diff --git a/src/test/compile-fail/qquote-1.rs b/src/test/compile-fail/qquote-1.rs index a343158337d09..b98b4c6c11d5e 100644 --- a/src/test/compile-fail/qquote-1.rs +++ b/src/test/compile-fail/qquote-1.rs @@ -17,7 +17,7 @@ use io::*; use syntax::diagnostic; use syntax::ast; -use syntax::codemap; +use codemap; use syntax::parse; use syntax::print::*; diff --git a/src/test/compile-fail/qquote-2.rs b/src/test/compile-fail/qquote-2.rs index b7e33f99e3b48..fa5ca4c2cd59c 100644 --- a/src/test/compile-fail/qquote-2.rs +++ b/src/test/compile-fail/qquote-2.rs @@ -17,7 +17,7 @@ use std::io::*; use syntax::diagnostic; use syntax::ast; -use syntax::codemap; +use codemap; use syntax::parse::parser; use syntax::print::*; diff --git a/src/test/run-pass-fulldeps/issue-1926.rs b/src/test/run-pass-fulldeps/issue-1926.rs index 7d52f13b0750a..2066e6d892f42 100644 --- a/src/test/run-pass-fulldeps/issue-1926.rs +++ b/src/test/run-pass-fulldeps/issue-1926.rs @@ -13,7 +13,7 @@ use syntax; use syntax::diagnostic; use syntax::ast; -use syntax::codemap; +use codemap; use syntax::print::pprust; use syntax::parse::parser; diff --git a/src/test/run-pass-fulldeps/qquote.rs b/src/test/run-pass-fulldeps/qquote.rs index 5a82d0104383b..813bd47113339 100644 --- a/src/test/run-pass-fulldeps/qquote.rs +++ b/src/test/run-pass-fulldeps/qquote.rs @@ -19,8 +19,8 @@ use core::io::*; use syntax::diagnostic; use syntax::ast; -use syntax::codemap; -use syntax::codemap::span; +use codemap; +use codemap::span; use syntax::parse; use syntax::print::*; From 9144e655efa2bd4ee274af280b7a6502fc80d331 Mon Sep 17 00:00:00 2001 From: John Clements Date: Tue, 29 Jan 2013 11:25:58 -0800 Subject: [PATCH 3/4] cleanup, refactoring --- mk/target.mk | 4 ++++ mk/tests.mk | 3 ++- src/libsyntax/ast_util.rs | 6 ++---- src/libsyntax/codemap.rs | 5 ++++- src/libsyntax/parse/lexer.rs | 1 + src/libsyntax/parse/parser.rs | 1 + src/libsyntax/parse/token.rs | 17 ++++++++--------- src/libsyntax/print/pprust.rs | 5 ++++- src/libsyntax/syntax.rc | 5 +++++ src/libsyntax/util/testing.rs | 2 +- src/libsyntax/visit.rs | 6 +++--- 11 files changed, 35 insertions(+), 20 deletions(-) diff --git a/mk/target.mk b/mk/target.mk index 9065bdec95a1d..f28ab5f20348f 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -50,11 +50,14 @@ ifdef CFG_ENABLE_PAX_FLAGS @"$(CFG_PAXCTL)" -cm "$$@" endif +# FIXME (#4677) explicit dependencies on libtestingfuns disappear +# when it's possible to move those "extern mod" decls into test modules. $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBCODEMAP) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBTESTINGFUNS) \ $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) @@ -64,6 +67,7 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBCODEMAP): \ $$(LIBCODEMAP_CRATE) $$(LIBCODEMAP_INPUTS) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBTESTINGFUNS) \ $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) diff --git a/mk/tests.mk b/mk/tests.mk index e9b407b8d795b..bad40c45a0c69 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -367,7 +367,8 @@ check-stage$(1)-T-$(2)-H-$(3)-std-dummy: \ $(3)/test/syntaxtest.stage$(1)-$(2)$$(X): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ - $$(SREQ$(1)_T_$(2)_H_$(3)) + $$(LIBTESTINGFUNS_CRATE) \ + $$(SREQ$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index b6fdd4e86d2f9..c3ccc421cf97f 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -12,9 +12,7 @@ use core::prelude::*; use ast::*; use ast; -use ast_util; -use codemap::{span, BytePos, dummy_sp}; -use codemap::mk_sp; +use codemap::{span, BytePos, dummy_sp, mk_sp}; use parse::token; use visit; @@ -501,7 +499,7 @@ pub fn id_visitor(vfn: fn@(node_id)) -> visit::vt<()> { }, visit_stmt: fn@(s: @stmt) { - vfn(ast_util::stmt_id(*s)); + vfn(stmt_id(*s)); }, visit_arm: fn@(_a: arm) { }, diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index d8ecb7aad78d4..dcbe9b8f0f7f8 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -38,6 +38,10 @@ source code snippets, etc. extern mod core(vers = "0.6"); extern mod std(vers = "0.6"); +// FIXME (#4677) : move into test module (down at the bottom) when +// it works correctly +extern mod testingfuns(vers = "0.6"); + use std::serialize::{Encodable, Decodable, Encoder, Decoder}; use core::prelude::*; @@ -494,7 +498,6 @@ priv impl CodeMap { #[cfg(test)] mod test { use super::*; - extern mod testingfuns; use testingfuns::check_equal; #[test] diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index fb06558efe140..c70cc72099ef0 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -166,6 +166,7 @@ pub fn get_str_from(rdr: StringReader, start: BytePos) -> ~str { } } +// advance the StringReader by one character. pub fn bump(rdr: StringReader) { rdr.last_pos = rdr.pos; let current_byte_offset = byte_offset(rdr).to_uint();; diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index adfc090447d33..d0fec00b22e2e 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -233,6 +233,7 @@ pub struct Parser { } pub impl Parser { + // advance the parser by one token fn bump() { self.last_span = self.span; let next = if self.buffer_start == self.buffer_end { diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 30d2489a5eeb2..4ec2be187e434 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -12,7 +12,6 @@ use core::prelude::*; use ast; use ast_util; -use parse::token; use util::interner::Interner; use util::interner; @@ -254,14 +253,14 @@ pub pure fn can_begin_expr(t: Token) -> bool { } /// what's the opposite delimiter? -pub fn flip_delimiter(t: token::Token) -> token::Token { +pub fn flip_delimiter(t: Token) -> Token { match t { - token::LPAREN => token::RPAREN, - token::LBRACE => token::RBRACE, - token::LBRACKET => token::RBRACKET, - token::RPAREN => token::LPAREN, - token::RBRACE => token::LBRACE, - token::RBRACKET => token::LBRACKET, + LPAREN => RPAREN, + LBRACE => RBRACE, + LBRACKET => RBRACKET, + RPAREN => LPAREN, + RBRACE => LBRACE, + RBRACKET => LBRACKET, _ => fail } } @@ -374,7 +373,7 @@ pub impl ident_interner { * so we have to use a unique number. See taskgroup_key! in task.rs * for another case of this. */ macro_rules! interner_key ( - () => (cast::transmute::<(uint, uint), &fn(+v: @@token::ident_interner)>( + () => (cast::transmute::<(uint, uint), &fn(+v: @@ident_interner)>( (-3 as uint, 0u))) ) diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 705018dea4a67..400903df75302 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2264,7 +2264,10 @@ pub mod test { use ast_util; use parse; use super::*; - use util::testing::check_equal; + // FIXME (#4677) : uncomment this and remove the one in syntax.rc + // when this issue is resolved. + //extern mod testingfuns(vers = "0.6"); + use testingfuns::check_equal; #[test] fn test_fun_to_str() { diff --git a/src/libsyntax/syntax.rc b/src/libsyntax/syntax.rc index e467c488506c8..3db4e935130ab 100644 --- a/src/libsyntax/syntax.rc +++ b/src/libsyntax/syntax.rc @@ -37,6 +37,11 @@ extern mod codemap (vers = "0.6"); // modules once that's supported. extern mod testingfuns (vers="0.6"); +// FIXME (#4677) : move into test module (down at the bottom) when +// it works correctly +extern mod testingfuns(vers = "0.6"); + + pub mod syntax { pub use ext; pub use parse; diff --git a/src/libsyntax/util/testing.rs b/src/libsyntax/util/testing.rs index f18dbccb2eaf8..676baecc268c3 100644 --- a/src/libsyntax/util/testing.rs +++ b/src/libsyntax/util/testing.rs @@ -12,7 +12,7 @@ // Linkage attributes #[ link(name = "testingfuns", - vers = "1.0", + vers = "0.6", uuid = "F8BF9F34-147D-47FF-9849-E6C17D34D2FF") ]; // Specify the output type diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 196ee349b7934..911f2ac9192b4 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -14,7 +14,7 @@ use ast::*; use ast; use ast_util; use codemap::span; -use parse; +use parse::token; use core::option; use core::vec; @@ -44,8 +44,8 @@ pub fn name_of_fn(fk: fn_kind) -> ident { fk_item_fn(name, _, _) | fk_method(name, _, _) => { /* FIXME (#2543) */ copy name } - fk_anon(*) | fk_fn_block(*) => parse::token::special_idents::anon, - fk_dtor(*) => parse::token::special_idents::dtor + fk_anon(*) | fk_fn_block(*) => token::special_idents::anon, + fk_dtor(*) => token::special_idents::dtor } } From 523edf1c5aafdef54281f770912a520a86f80af4 Mon Sep 17 00:00:00 2001 From: John Clements Date: Tue, 29 Jan 2013 14:57:39 -0800 Subject: [PATCH 4/4] cleanup of libsyntax --- src/libsyntax/codemap.rs | 69 +++++++++++++++++----------- src/libsyntax/parse/lexer.rs | 37 ++++++++------- src/libsyntax/syntax.rc | 5 -- src/test/run-pass-fulldeps/qquote.rs | 1 + 4 files changed, 64 insertions(+), 48 deletions(-) diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index dcbe9b8f0f7f8..1d9138871b220 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -38,9 +38,10 @@ source code snippets, etc. extern mod core(vers = "0.6"); extern mod std(vers = "0.6"); -// FIXME (#4677) : move into test module (down at the bottom) when -// it works correctly -extern mod testingfuns(vers = "0.6"); +// FIXME (#4677) extern mod decl can move down into +// test module once that's supported. +extern mod testingfuns (vers="0.6"); + use std::serialize::{Encodable, Decodable, Encoder, Decoder}; @@ -187,6 +188,21 @@ pub struct Loc { col: CharPos } +/// A source code location used as the result of lookup_char_pos_adj +// Actually, *none* of the clients use the filename *or* file field; +// perhaps they should just be removed. +pub struct LocWithOpt { + filename: ~str, + line: uint, + col: CharPos, + file: Option<@FileMap>, +} + +// used to be structural records. Better names, anyone? +pub struct FileMapAndLine {fm: @FileMap, line: uint} +pub struct FileMapAndBytePos {fm: @FileMap, pos: BytePos} + + /// Extra information for tracking macro expansion of spans pub enum ExpnInfo { ExpandedFrom({call_site: span, @@ -316,27 +332,25 @@ pub impl CodeMap { return self.lookup_pos(pos); } - pub fn lookup_char_pos_adj(&self, +pos: BytePos) - -> {filename: ~str, line: uint, col: CharPos, file: Option<@FileMap>} + pub fn lookup_char_pos_adj(&self, +pos: BytePos) -> LocWithOpt { let loc = self.lookup_char_pos(pos); match (loc.file.substr) { - FssNone => { - {filename: /* FIXME (#2543) */ copy loc.file.name, - line: loc.line, - col: loc.col, - file: Some(loc.file)} - } - FssInternal(sp) => { - self.lookup_char_pos_adj( - sp.lo + (pos - loc.file.start_pos)) - } - FssExternal(ref eloc) => { - {filename: /* FIXME (#2543) */ copy (*eloc).filename, - line: (*eloc).line + loc.line - 1u, - col: if loc.line == 1 {eloc.col + loc.col} else {loc.col}, - file: None} - } + FssNone => + LocWithOpt { + filename: /* FIXME (#2543) */ copy loc.file.name, + line: loc.line, + col: loc.col, + file: Some(loc.file)}, + FssInternal(sp) => + self.lookup_char_pos_adj( + sp.lo + (pos - loc.file.start_pos)), + FssExternal(ref eloc) => + LocWithOpt { + filename: /* FIXME (#2543) */ copy (*eloc).filename, + line: (*eloc).line + loc.line - 1u, + col: if loc.line == 1 {eloc.col + loc.col} else {loc.col}, + file: None} } } @@ -398,6 +412,7 @@ pub impl CodeMap { } + priv impl CodeMap { fn lookup_filemap_idx(&self, pos: BytePos) -> uint { @@ -420,8 +435,7 @@ priv impl CodeMap { return a; } - fn lookup_line(&self, pos: BytePos) - -> {fm: @FileMap, line: uint} + fn lookup_line(&self, pos: BytePos) -> FileMapAndLine { let idx = self.lookup_filemap_idx(pos); let f = self.files[idx]; @@ -431,11 +445,11 @@ priv impl CodeMap { let m = (a + b) / 2u; if f.lines[m] > pos { b = m; } else { a = m; } } - return {fm: f, line: a}; + return FileMapAndLine {fm: f, line: a}; } fn lookup_pos(&self, pos: BytePos) -> Loc { - let {fm: f, line: a} = self.lookup_line(pos); + let FileMapAndLine {fm: f, line: a} = self.lookup_line(pos); let line = a + 1u; // Line numbers start at 1 let chpos = self.bytepos_to_local_charpos(pos); let linebpos = f.lines[a]; @@ -461,11 +475,11 @@ priv impl CodeMap { } fn lookup_byte_offset(&self, bpos: BytePos) - -> {fm: @FileMap, pos: BytePos} { + -> FileMapAndBytePos { let idx = self.lookup_filemap_idx(bpos); let fm = self.files[idx]; let offset = bpos - fm.start_pos; - return {fm: fm, pos: offset}; + return FileMapAndBytePos {fm: fm, pos: offset}; } // Converts an absolute BytePos to a CharPos relative to the file it is @@ -498,6 +512,7 @@ priv impl CodeMap { #[cfg(test)] mod test { use super::*; + extern mod testingfuns; use testingfuns::check_equal; #[test] diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index c70cc72099ef0..b07696cb60a30 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -11,7 +11,6 @@ use core::prelude::*; use ast; -use ast_util; use codemap::{BytePos, CharPos, CodeMap, Pos, span}; use codemap; use diagnostic::span_handler; @@ -136,21 +135,23 @@ pub impl tt_reader: reader { fn dup() -> reader { dup_tt_reader(self) as reader } } +// advance peek_tok and peek_span to refer to the next token. fn string_advance_token(&&r: StringReader) { - for consume_whitespace_and_comments(r).each |comment| { - r.peek_tok = comment.tok; - r.peek_span = comment.sp; - return; + match (consume_whitespace_and_comments(r)) { + Some(comment) => { + r.peek_tok = comment.tok; + r.peek_span = comment.sp; + return; }, + None => { + if is_eof(r) { + r.peek_tok = token::EOF; + } else { + let start_bytepos = r.last_pos; + r.peek_tok = next_token_inner(r); + r.peek_span = codemap::mk_sp(start_bytepos, r.last_pos); + }; + }, } - - if is_eof(r) { - r.peek_tok = token::EOF; - } else { - let start_bytepos = r.last_pos; - r.peek_tok = next_token_inner(r); - r.peek_span = ast_util::mk_sp(start_bytepos, r.last_pos); - }; - } fn byte_offset(rdr: StringReader) -> BytePos { @@ -262,7 +263,7 @@ fn consume_any_line_comment(rdr: StringReader) } return Some({ tok: token::DOC_COMMENT(rdr.interner.intern(@acc)), - sp: ast_util::mk_sp(start_bpos, rdr.pos) + sp: codemap::mk_sp(start_bpos, rdr.pos) }); } else { while rdr.curr != '\n' && !is_eof(rdr) { bump(rdr); } @@ -307,7 +308,7 @@ fn consume_block_comment(rdr: StringReader) bump(rdr); return Some({ tok: token::DOC_COMMENT(rdr.interner.intern(@acc)), - sp: ast_util::mk_sp(start_bpos, rdr.pos) + sp: codemap::mk_sp(start_bpos, rdr.pos) }); } } else { @@ -706,6 +707,10 @@ fn consume_whitespace(rdr: StringReader) { while is_whitespace(rdr.curr) && !is_eof(rdr) { bump(rdr); } } +#[cfg(test)] +pub mod test { + #[test] fn t1 () {} +} // // Local Variables: diff --git a/src/libsyntax/syntax.rc b/src/libsyntax/syntax.rc index 3db4e935130ab..1bd3d0674d9eb 100644 --- a/src/libsyntax/syntax.rc +++ b/src/libsyntax/syntax.rc @@ -33,10 +33,6 @@ use core::*; extern mod std(vers = "0.6"); extern mod codemap (vers = "0.6"); -// FIXME (#4677) extern mod decl can move down into -// modules once that's supported. -extern mod testingfuns (vers="0.6"); - // FIXME (#4677) : move into test module (down at the bottom) when // it works correctly extern mod testingfuns(vers = "0.6"); @@ -49,7 +45,6 @@ pub mod syntax { pub mod attr; pub mod diagnostic; -pub mod codemap; pub mod ast; pub mod ast_util; pub mod ast_map; diff --git a/src/test/run-pass-fulldeps/qquote.rs b/src/test/run-pass-fulldeps/qquote.rs index 813bd47113339..4b4fec0378b2d 100644 --- a/src/test/run-pass-fulldeps/qquote.rs +++ b/src/test/run-pass-fulldeps/qquote.rs @@ -14,6 +14,7 @@ extern mod std; extern mod syntax; +extern mod codemap; use core::io::*;