diff options
Diffstat (limited to 'src/compiletest/errors.rs')
| -rw-r--r-- | src/compiletest/errors.rs | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/src/compiletest/errors.rs b/src/compiletest/errors.rs index 9300cee432f..4e65115caa2 100644 --- a/src/compiletest/errors.rs +++ b/src/compiletest/errors.rs @@ -12,8 +12,8 @@ use std::io::{BufferedReader, File}; pub struct ExpectedError { pub line: uint, - pub kind: ~str, - pub msg: ~str, + pub kind: StrBuf, + pub msg: StrBuf, } // Load any test directives embedded in the file @@ -23,17 +23,18 @@ pub fn load_errors(testfile: &Path) -> Vec<ExpectedError> { let mut rdr = BufferedReader::new(File::open(testfile).unwrap()); let mut line_num = 1u; for ln in rdr.lines() { - error_patterns.push_all_move(parse_expected(line_num, ln.unwrap())); + error_patterns.push_all_move(parse_expected(line_num, + ln.unwrap().to_strbuf())); line_num += 1u; } return error_patterns; } -fn parse_expected(line_num: uint, line: ~str) -> Vec<ExpectedError> { - let line = line.trim(); - let error_tag = "//~".to_owned(); +fn parse_expected(line_num: uint, line: StrBuf) -> Vec<ExpectedError> { + let line = line.as_slice().trim().to_strbuf(); + let error_tag = "//~".to_strbuf(); let mut idx; - match line.find_str(error_tag) { + match line.as_slice().find_str(error_tag.as_slice()) { None => return Vec::new(), Some(nn) => { idx = (nn as uint) + error_tag.len(); } } @@ -42,25 +43,34 @@ fn parse_expected(line_num: uint, line: ~str) -> Vec<ExpectedError> { // three lines above current line: let mut adjust_line = 0u; let len = line.len(); - while idx < len && line[idx] == ('^' as u8) { + while idx < len && line.as_slice()[idx] == ('^' as u8) { adjust_line += 1u; idx += 1u; } // Extract kind: - while idx < len && line[idx] == (' ' as u8) { idx += 1u; } + while idx < len && line.as_slice()[idx] == (' ' as u8) { + idx += 1u; + } let start_kind = idx; - while idx < len && line[idx] != (' ' as u8) { idx += 1u; } + while idx < len && line.as_slice()[idx] != (' ' as u8) { + idx += 1u; + } - let kind = line.slice(start_kind, idx); - let kind = kind.to_ascii().to_lower().into_str(); + let kind = line.as_slice().slice(start_kind, idx); + let kind = kind.to_ascii().to_lower().into_str().to_strbuf(); // Extract msg: - while idx < len && line[idx] == (' ' as u8) { idx += 1u; } - let msg = line.slice(idx, len).to_owned(); + while idx < len && line.as_slice()[idx] == (' ' as u8) { + idx += 1u; + } + let msg = line.as_slice().slice(idx, len).to_strbuf(); debug!("line={} kind={} msg={}", line_num - adjust_line, kind, msg); - return vec!(ExpectedError{line: line_num - adjust_line, kind: kind, - msg: msg}); + return vec!(ExpectedError{ + line: line_num - adjust_line, + kind: kind, + msg: msg, + }); } |
