diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs index e36b26c559e..f10701ceba5 100644 --- a/src/comp/syntax/parse/lexer.rs +++ b/src/comp/syntax/parse/lexer.rs @@ -490,8 +490,15 @@ fn next_token_inner(rdr: reader) -> token::token { ret token::LIT_CHAR(c2); } '"' { + let n = rdr.get_chpos(); rdr.bump(); while rdr.curr() != '"' { + if rdr.is_eof() { + rdr.err(#fmt["unterminated double quote string: %s", + rdr.get_str_from(n)]); + fail; + } + let ch = rdr.curr(); rdr.bump(); alt ch { diff --git a/src/test/compile-fail/unbalanced-doublequote.rs b/src/test/compile-fail/unbalanced-doublequote.rs new file mode 100644 index 00000000000..38df31a2b64 --- /dev/null +++ b/src/test/compile-fail/unbalanced-doublequote.rs @@ -0,0 +1,8 @@ +// -*- rust -*- + +// error-pattern: unterminated double quote string + + +fn main() { + " +}