Skip to content

libsyntax: Remove the obsolete ability to parse from substrings. #11575

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 16, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 8 additions & 42 deletions src/libsyntax/codemap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,15 +191,6 @@ pub struct FileLines
lines: ~[uint]
}

// represents the origin of a file:
pub enum FileSubstr {
// indicates that this is a normal standalone file:
FssNone,
// indicates that this "file" is actually a substring
// of another file that appears earlier in the codemap
FssInternal(Span),
}

/// Identifies an offset of a multi-byte character in a FileMap
pub struct MultiByteChar {
/// The absolute offset of the character in the CodeMap
Expand All @@ -214,8 +205,6 @@ pub struct FileMap {
/// originate from files has names between angle brackets by convention,
/// e.g. `<anon>`
name: FileName,
/// Extra information used by qquote
substr: FileSubstr,
/// The complete source code
src: @str,
/// The start position of this source in the CodeMap
Expand Down Expand Up @@ -278,16 +267,7 @@ impl CodeMap {
}
}

/// Add a new FileMap to the CodeMap and return it
pub fn new_filemap(&self, filename: FileName, src: @str) -> @FileMap {
return self.new_filemap_w_substr(filename, FssNone, src);
}

pub fn new_filemap_w_substr(&self,
filename: FileName,
substr: FileSubstr,
src: @str)
-> @FileMap {
let mut files = self.files.borrow_mut();
let start_pos = if files.get().len() == 0 {
0
Expand All @@ -298,7 +278,8 @@ impl CodeMap {
};

let filemap = @FileMap {
name: filename, substr: substr, src: src,
name: filename,
src: src,
start_pos: Pos::from_uint(start_pos),
lines: RefCell::new(~[]),
multibyte_chars: RefCell::new(~[]),
Expand All @@ -322,31 +303,16 @@ impl CodeMap {

pub fn lookup_char_pos_adj(&self, pos: BytePos) -> LocWithOpt {
let loc = self.lookup_char_pos(pos);
match (loc.file.substr) {
FssNone =>
LocWithOpt {
filename: 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)),
LocWithOpt {
filename: loc.file.name,
line: loc.line,
col: loc.col,
file: Some(loc.file)
}
}

pub fn adjust_span(&self, sp: Span) -> Span {
let line = self.lookup_line(sp.lo);
match (line.fm.substr) {
FssNone => sp,
FssInternal(s) => {
self.adjust_span(Span {
lo: s.lo + (sp.lo - line.fm.start_pos),
hi: s.lo + (sp.hi - line.fm.start_pos),
expn_info: sp.expn_info
})
}
}
sp
}

pub fn span_to_str(&self, sp: Span) -> ~str {
Expand Down
41 changes: 1 addition & 40 deletions src/libsyntax/parse/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@


use ast;
use codemap::{Span, CodeMap, FileMap, FileSubstr};
use codemap::{Span, CodeMap, FileMap};
use codemap;
use diagnostic::{SpanHandler, mk_span_handler, mk_handler, Emitter};
use parse::attr::ParserAttr;
Expand Down Expand Up @@ -180,27 +180,6 @@ pub fn parse_tts_from_source_str(
maybe_aborted(p.parse_all_token_trees(),p)
}

// given a function and parsing information (source str,
// filename, crate cfg, and sess), create a parser,
// apply the function, and check that the parser
// consumed all of the input before returning the function's
// result.
pub fn parse_from_source_str<T>(
f: |&mut Parser| -> T,
name: @str,
ss: codemap::FileSubstr,
source: @str,
cfg: ast::CrateConfig,
sess: @ParseSess)
-> T {
let mut p = new_parser_from_source_substr(sess, cfg, name, ss, source);
let r = f(&mut p);
if !p.reader.is_eof() {
p.reader.fatal(~"expected end-of-string");
}
maybe_aborted(r,p)
}

// Create a new parser from a source string
pub fn new_parser_from_source_str(sess: @ParseSess,
cfg: ast::CrateConfig,
Expand All @@ -210,17 +189,6 @@ pub fn new_parser_from_source_str(sess: @ParseSess,
filemap_to_parser(sess,string_to_filemap(sess,source,name),cfg)
}

// Create a new parser from a source string where the origin
// is specified as a substring of another file.
pub fn new_parser_from_source_substr(sess: @ParseSess,
cfg: ast::CrateConfig,
name: @str,
ss: codemap::FileSubstr,
source: @str)
-> Parser {
filemap_to_parser(sess,substring_to_filemap(sess,source,name,ss),cfg)
}

/// Create a new parser, handling errors as appropriate
/// if the file doesn't exist
pub fn new_parser_from_file(
Expand Down Expand Up @@ -297,13 +265,6 @@ pub fn string_to_filemap(sess: @ParseSess, source: @str, path: @str)
sess.cm.new_filemap(path, source)
}

// given a session and a string and a path and a FileSubStr, add
// the string to the CodeMap and return the new FileMap
pub fn substring_to_filemap(sess: @ParseSess, source: @str, path: @str,
filesubstr: FileSubstr) -> @FileMap {
sess.cm.new_filemap_w_substr(path,filesubstr,source)
}

// given a filemap, produce a sequence of token-trees
pub fn filemap_to_tts(sess: @ParseSess, filemap: @FileMap)
-> ~[ast::TokenTree] {
Expand Down