Compare commits
No commits in common. "4e3f1677be4f1d798ff33698d5875f67b83b50b1" and "56196551b89426633e754201c8f70b61093af32e" have entirely different histories.
4e3f1677be
...
56196551b8
@ -105,14 +105,12 @@ fn compile_statement(
|
||||
register_count: usize,
|
||||
constants_table: &mut ConstantsTable,
|
||||
) -> Result<Function, Diagnostics> {
|
||||
let maybe_statement = parse_statement(input);
|
||||
if !maybe_statement.is_ok() {
|
||||
Err(maybe_statement.into_diagnostics())
|
||||
let (maybe_statement, parse_diagnostics) = parse_statement(input);
|
||||
if !parse_diagnostics.is_empty() {
|
||||
Err(parse_diagnostics)
|
||||
} else if let Some(statement) = maybe_statement {
|
||||
session.compile_statement(&statement, register_count, constants_table)
|
||||
} else {
|
||||
session.compile_statement(
|
||||
&maybe_statement.into_inner(),
|
||||
register_count,
|
||||
constants_table,
|
||||
)
|
||||
panic!("Unable to unwrap statement from previous input.")
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,10 +118,11 @@ impl<'a> Lexer<'a> {
|
||||
}
|
||||
}
|
||||
if !terminated {
|
||||
let err =
|
||||
LexerError::new(self.position, end, LexerErrorKind::UnterminatedString);
|
||||
self.position = end;
|
||||
return Some(Err(err));
|
||||
return Some(Err(LexerError::new(
|
||||
self.position,
|
||||
end,
|
||||
LexerErrorKind::UnterminatedString,
|
||||
)));
|
||||
}
|
||||
(end, TokenKind::String)
|
||||
} else {
|
||||
@ -136,13 +137,11 @@ impl<'a> Lexer<'a> {
|
||||
}
|
||||
|
||||
if prefix.len() == 0 {
|
||||
let err = LexerError::new(
|
||||
return Some(Err(LexerError::new(
|
||||
self.position,
|
||||
self.position + 1,
|
||||
LexerErrorKind::UnrecognizedCharacter(chunk.chars().next().unwrap()),
|
||||
);
|
||||
self.position += 1;
|
||||
return Some(Err(err));
|
||||
)));
|
||||
}
|
||||
|
||||
let token_kind = match prefix.as_str() {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user