auto merge of #16659 : brson/rust/slowparse, r=alexcrichton
Note that this contains a 9.5MB test file, but it should compress thoroughly.
This commit is contained in:
commit
d0104d04fd
@ -412,14 +412,21 @@ pub fn str_lit(lit: &str) -> String {
|
||||
loop {
|
||||
match chars.next() {
|
||||
Some((i, c)) => {
|
||||
let em = error(i);
|
||||
match c {
|
||||
'\\' => {
|
||||
if chars.peek().expect(em.as_slice()).val1() == '\n' {
|
||||
let ch = chars.peek().unwrap_or_else(|| {
|
||||
fail!("{}", error(i).as_slice())
|
||||
}).val1();
|
||||
|
||||
if ch == '\n' {
|
||||
eat(&mut chars);
|
||||
} else if chars.peek().expect(em.as_slice()).val1() == '\r' {
|
||||
} else if ch == '\r' {
|
||||
chars.next();
|
||||
if chars.peek().expect(em.as_slice()).val1() != '\n' {
|
||||
let ch = chars.peek().unwrap_or_else(|| {
|
||||
fail!("{}", error(i).as_slice())
|
||||
}).val1();
|
||||
|
||||
if ch != '\n' {
|
||||
fail!("lexer accepted bare CR");
|
||||
}
|
||||
eat(&mut chars);
|
||||
@ -433,7 +440,11 @@ pub fn str_lit(lit: &str) -> String {
|
||||
}
|
||||
},
|
||||
'\r' => {
|
||||
if chars.peek().expect(em.as_slice()).val1() != '\n' {
|
||||
let ch = chars.peek().unwrap_or_else(|| {
|
||||
fail!("{}", error(i).as_slice())
|
||||
}).val1();
|
||||
|
||||
if ch != '\n' {
|
||||
fail!("lexer accepted bare CR");
|
||||
}
|
||||
chars.next();
|
||||
|
15
src/test/run-pass/slowparse-bstring.rs
Normal file
15
src/test/run-pass/slowparse-bstring.rs
Normal file
File diff suppressed because one or more lines are too long
15
src/test/run-pass/slowparse-string.rs
Normal file
15
src/test/run-pass/slowparse-string.rs
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user