kodept_parse/peg/
error.rs1use std::borrow::Cow;
2
3use kodept_core::code_point::CodePoint;
4
5use crate::common::ErrorAdapter;
6use crate::error::{ErrorLocation, Original, ParseError, ParseErrors};
7use crate::peg::compatibility::Position;
8
9impl<A, O, P> ErrorAdapter<A, O> for peg::error::ParseError<P>
10where
11 O: Original<A>,
12 P: Into<Position>
13{
14 fn adapt(self, original_input: O, position: usize) -> ParseErrors<A> {
15 let expected = self.expected.tokens().map(Cow::Borrowed).collect();
16 let loc: CodePoint = P::into(self.location).into();
17 let actual = original_input.actual(loc);
18 let location = ErrorLocation::new(position, loc);
19
20 ParseErrors::new(vec![ParseError::new(expected, actual, location)])
21 }
22}