integrate CodegenError to compiler-core::Error

This commit is contained in:
Jeong YunWon 2022-08-22 18:38:55 +09:00
parent 9d67b944cf
commit 1192a11d39
4 changed files with 24 additions and 22 deletions

View file

@ -1,12 +1,6 @@
use rustpython_compiler_core::Location;
use std::{error::Error, fmt};
#[derive(Debug)]
pub struct CodegenError {
pub error: CodegenErrorType,
pub location: Location,
pub source_path: String,
}
pub type CodegenError = rustpython_compiler_core::Error<CodegenErrorType>;
#[derive(Debug)]
#[non_exhaustive]
@ -87,15 +81,3 @@ impl fmt::Display for CodegenErrorType {
}
impl Error for CodegenErrorType {}
impl fmt::Display for CodegenError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.location.fmt_with(f, &self.error)
}
}
impl Error for CodegenError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
None
}
}

View file

@ -1,3 +1,5 @@
use std::fmt::Display;
use crate::Location;
#[derive(Debug, PartialEq, Eq)]
@ -15,6 +17,24 @@ impl<T> std::ops::Deref for Error<T> {
}
}
impl<T> std::error::Error for Error<T>
where
T: std::fmt::Display + std::fmt::Debug,
{
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
None
}
}
impl<T> Display for Error<T>
where
T: std::fmt::Display,
{
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.location.fmt_with(f, &self.error)
}
}
impl<T> Error<T> {
pub fn error(self) -> T {
self.error

View file

@ -193,7 +193,7 @@ impl ParseError {
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.location.fmt_with(f, &self.error)
self.0.fmt(f)
}
}

View file

@ -11,7 +11,7 @@ pub use rustpython_codegen::compile::CompileOpts;
pub use rustpython_compiler_core::Mode;
#[derive(Debug, thiserror::Error)]
pub enum CodegenErrorType {
pub enum CompileErrorType {
#[error(transparent)]
Compile(#[from] rustpython_codegen::error::CodegenErrorType),
#[error(transparent)]
@ -20,7 +20,7 @@ pub enum CodegenErrorType {
#[derive(Debug, thiserror::Error)]
pub struct CompileError {
pub error: CodegenErrorType,
pub error: CompileErrorType,
pub source_path: String,
pub location: Location,
pub statement: Option<String>,