]> Repositorios git - scryer-prolog.git/commitdiff
Fix Ctrl-D (#1168)
authorAdrián Arroyo Calle <[email protected]>
Tue, 18 Jan 2022 18:27:27 +0000 (19:27 +0100)
committerAdrián Arroyo Calle <[email protected]>
Tue, 18 Jan 2022 18:27:27 +0000 (19:27 +0100)
src/parser/lexer.rs

index d248766656d20460a9e6f923c78eb1917449714e..4696b2269a99c20e6c584842fe6bb0729cd1e2ec 100644 (file)
@@ -122,19 +122,11 @@ impl<'a, R: CharRead> Lexer<'a, R> {
     }
 
     pub fn eof(&mut self) -> Result<bool, ParserError> {
-        if self.reader.peek_char().is_none() {
-            return Ok(true);
-        }
-
         let mut c = is_not_eof!(self.reader, self.lookahead_char());
 
         while layout_char!(c) {
             self.skip_char(c);
 
-            if self.reader.peek_char().is_none() {
-                return Ok(true);
-            }
-
             c = is_not_eof!(self.reader, self.lookahead_char());
         }
 
@@ -1051,6 +1043,10 @@ impl<'a, R: CharRead> Lexer<'a, R> {
                     };
                 }
 
+                if c == '\u{0}' {
+                    return Err(ParserError::UnexpectedEOF);
+                }
+
                 self.name_token(c)
             }
             Err(e) => Err(e),