treat unexpected EOF as incomplete reduction in bracketed_comment

This commit is contained in:
Mark
2023-07-07 13:04:27 -06:00
parent b7f77d1747
commit 4db0b385f3
2 changed files with 22 additions and 7 deletions

View File

@@ -117,7 +117,7 @@ impl<R: Read> CharReader<R> {
// Branch using `>=` instead of the more correct `==`
// to tell the compiler that the pos..cap slice is always valid.
if self.pos >= self.buf.len() {
debug_assert!(self.pos == self.buf.len());
debug_assert!(self.pos >= self.buf.len());
self.buf.clear();

View File

@@ -168,17 +168,32 @@ impl<'a, R: CharRead> Lexer<'a, R> {
let mut c = self.lookahead_char()?;
loop {
while !comment_2_char!(c) {
let mut comment_loop = || {
loop {
while !comment_2_char!(c) {
self.skip_char(c);
c = self.lookahead_char()?;
}
self.skip_char(c);
c = self.lookahead_char()?;
if comment_1_char!(c) {
break;
}
}
self.skip_char(c);
c = self.lookahead_char()?;
Ok(())
};
if comment_1_char!(c) {
break;
match comment_loop() {
Err(ParserError::UnexpectedEOF) => {
return Err(ParserError::IncompleteReduction(self.line_num, self.col_num));
}
Err(e) => {
return Err(e);
}
Ok(_) => {
}
}