kodept-parse 0.3.0

Simple compiler with dependent types support in mind
Documentation
use std::borrow::Cow;

use kodept_core::code_point::CodePoint;

use crate::common::ErrorAdapter;
use crate::error::{ErrorLocation, Original, ParseError, ParseErrors};
use crate::peg::compatibility::Position;

impl<A, O, P> ErrorAdapter<A, O> for peg::error::ParseError<P>
where
    O: Original<A>,
    P: Into<Position>
{
    fn adapt(self, original_input: O, position: usize) -> ParseErrors<A> {
        let expected = self.expected.tokens().map(Cow::Borrowed).collect();
        let loc: CodePoint = P::into(self.location).into();
        let actual = original_input.actual(loc);
        let location = ErrorLocation::new(position, loc);

        ParseErrors::new(vec![ParseError::new(expected, actual, location)])
    }
}