diff --git a/core/src/error.rs b/core/src/error.rs index fde16d8..9619e1d 100644 --- a/core/src/error.rs +++ b/core/src/error.rs @@ -16,14 +16,7 @@ impl std::ops::Deref for BaseError { } } -impl std::error::Error for BaseError -where - T: std::fmt::Display + std::fmt::Debug, -{ - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { - None - } -} +impl std::error::Error for BaseError where T: std::fmt::Display + std::fmt::Debug {} impl Display for BaseError where diff --git a/parser/Cargo.toml b/parser/Cargo.toml index e6acbbd..3b5fd3b 100644 --- a/parser/Cargo.toml +++ b/parser/Cargo.toml @@ -28,6 +28,7 @@ phf = "0.10.1" unic-emoji-char = "0.9.0" unic-ucd-ident = "0.9.0" unicode_names2 = "0.5.0" +thiserror = "1.0" [dev-dependencies] insta = "1.14.0" diff --git a/parser/src/error.rs b/parser/src/error.rs index 4dd899e..19f885d 100644 --- a/parser/src/error.rs +++ b/parser/src/error.rs @@ -3,7 +3,7 @@ use crate::{ast::Location, token::Tok}; use lalrpop_util::ParseError as LalrpopError; -use std::{error::Error, fmt}; +use std::fmt; /// Represents an error during lexical scanning. #[derive(Debug, PartialEq)] @@ -119,7 +119,7 @@ impl From for LalrpopError { /// Represents an error during parsing pub type ParseError = rustpython_compiler_core::BaseError; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, thiserror::Error)] pub enum ParseErrorType { /// Parser encountered an unexpected end of input Eof, @@ -194,8 +194,6 @@ impl fmt::Display for ParseErrorType { } } -impl Error for ParseErrorType {} - impl ParseErrorType { pub fn is_indentation_error(&self) -> bool { match self {