24 lines
507 B
Rust
24 lines
507 B
Rust
|
use crate::common::*;
|
||
|
|
||
|
pub(crate) trait CompilationResultExt {
|
||
|
fn expected(self, kinds: &[TokenKind]) -> Self;
|
||
|
}
|
||
|
|
||
|
impl<'src, T> CompilationResultExt for CompilationResult<'src, T> {
|
||
|
fn expected(mut self, kinds: &[TokenKind]) -> Self {
|
||
|
if let Err(CompilationError {
|
||
|
kind: CompilationErrorKind::UnexpectedToken {
|
||
|
ref mut expected, ..
|
||
|
},
|
||
|
..
|
||
|
}) = &mut self
|
||
|
{
|
||
|
expected.extend_from_slice(kinds);
|
||
|
expected.sort();
|
||
|
expected.dedup();
|
||
|
}
|
||
|
|
||
|
self
|
||
|
}
|
||
|
}
|