From a1724dae5204eeae81f503ee5cbd2d129ff3e356 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 21 Apr 2023 18:36:01 -0400 Subject: [PATCH] Combine the error types. --- src/compare/mod.rs | 1 - src/compare/sexp.rs | 5 +++-- src/{compare => error}/error.rs | 0 src/error/mod.rs | 4 ++++ src/lib.rs | 1 + src/parser/comment.rs | 6 +++--- src/parser/document.rs | 4 +++- src/parser/drawer.rs | 6 +++--- src/parser/dynamic_block.rs | 6 +++--- src/parser/element_parser.rs | 4 +++- src/parser/error.rs | 25 ------------------------- src/parser/footnote_definition.rs | 6 +++--- src/parser/greater_block.rs | 6 +++--- src/parser/lesser_block.rs | 4 +++- src/parser/mod.rs | 1 - src/parser/object_parser.rs | 4 +++- src/parser/paragraph.rs | 4 +++- src/parser/parser_context.rs | 6 +++--- src/parser/plain_list.rs | 6 +++--- src/parser/plain_text.rs | 10 ++++------ src/parser/property_drawer.rs | 6 +++--- src/parser/table.rs | 4 +++- src/parser/util.rs | 6 +++--- 23 files changed, 57 insertions(+), 68 deletions(-) rename src/{compare => error}/error.rs (100%) create mode 100644 src/error/mod.rs delete mode 100644 src/parser/error.rs diff --git a/src/compare/mod.rs b/src/compare/mod.rs index 07f9207..6b00e6d 100644 --- a/src/compare/mod.rs +++ b/src/compare/mod.rs @@ -1,5 +1,4 @@ mod diff; -mod error; mod parse; mod sexp; mod util; diff --git a/src/compare/sexp.rs b/src/compare/sexp.rs index e8ac1f4..8de70da 100644 --- a/src/compare/sexp.rs +++ b/src/compare/sexp.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use std::collections::HashMap; use nom::branch::alt; @@ -16,8 +19,6 @@ use nom::sequence::delimited; use nom::sequence::preceded; use nom::sequence::tuple; -use super::error::Res; - #[derive(Debug)] pub enum Token<'s> { Atom(&'s str), diff --git a/src/compare/error.rs b/src/error/error.rs similarity index 100% rename from src/compare/error.rs rename to src/error/error.rs diff --git a/src/error/mod.rs b/src/error/mod.rs new file mode 100644 index 0000000..d6e822d --- /dev/null +++ b/src/error/mod.rs @@ -0,0 +1,4 @@ +mod error; +pub use error::CustomError; +pub use error::MyError; +pub use error::Res; diff --git a/src/lib.rs b/src/lib.rs index bea65b3..50cdbae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ #![feature(round_char_boundary)] #![feature(exit_status_error)] mod compare; +mod error; mod parser; pub use compare::compare_document; pub use compare::emacs_parse_org_document; diff --git a/src/parser/comment.rs b/src/parser/comment.rs index 558af0b..5f6f4ec 100644 --- a/src/parser/comment.rs +++ b/src/parser/comment.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::bytes::complete::is_not; use nom::bytes::complete::tag; @@ -13,9 +16,6 @@ use nom::sequence::tuple; use super::util::get_consumed; use super::Context; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; -use crate::parser::error::Res; use crate::parser::parser_context::ContextElement; use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; diff --git a/src/parser/document.rs b/src/parser/document.rs index e5f5933..3555c57 100644 --- a/src/parser/document.rs +++ b/src/parser/document.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use crate::parser::comment::comment; use crate::parser::element_parser::element; use crate::parser::exiting::ExitClass; @@ -25,7 +28,6 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::element::Element; -use super::error::Res; use super::object::Object; use super::parser_with_context::parser_with_context; use super::source::Source; diff --git a/src/parser/drawer.rs b/src/parser/drawer.rs index 8cac28d..fa5db04 100644 --- a/src/parser/drawer.rs +++ b/src/parser/drawer.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::bytes::complete::tag; use nom::bytes::complete::tag_no_case; @@ -12,9 +15,6 @@ use nom::sequence::tuple; use super::Context; use crate::parser::element_parser::element; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; -use crate::parser::error::Res; use crate::parser::exiting::ExitClass; use crate::parser::parser_context::ContextElement; use crate::parser::parser_context::ExitMatcherNode; diff --git a/src/parser/dynamic_block.rs b/src/parser/dynamic_block.rs index 728f49f..1cbe4b4 100644 --- a/src/parser/dynamic_block.rs +++ b/src/parser/dynamic_block.rs @@ -1,8 +1,8 @@ -use super::error::Res; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::DynamicBlock; use crate::parser::lesser_element::Paragraph; diff --git a/src/parser/element_parser.rs b/src/parser/element_parser.rs index 1c865e7..f187ea3 100644 --- a/src/parser/element_parser.rs +++ b/src/parser/element_parser.rs @@ -2,7 +2,6 @@ use super::comment::comment; use super::drawer::drawer; use super::dynamic_block::dynamic_block; use super::element::Element; -use super::error::Res; use super::footnote_definition::footnote_definition; use super::greater_block::greater_block; use super::lesser_block::comment_block; @@ -13,6 +12,9 @@ use super::lesser_block::verse_block; use super::paragraph::paragraph; use super::plain_list::plain_list; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use crate::parser::parser_with_context::parser_with_context; use crate::parser::table::org_mode_table; use nom::branch::alt; diff --git a/src/parser/error.rs b/src/parser/error.rs deleted file mode 100644 index eb23965..0000000 --- a/src/parser/error.rs +++ /dev/null @@ -1,25 +0,0 @@ -use nom::error::ErrorKind; -use nom::error::ParseError; -use nom::IResult; - -pub type Res = IResult>; - -#[derive(Debug, PartialEq)] -pub enum CustomError { - MyError(MyError), - Nom(I, ErrorKind), -} - -#[derive(Debug, PartialEq)] -pub struct MyError(pub I); - -impl ParseError for CustomError { - fn from_error_kind(input: I, kind: ErrorKind) -> Self { - CustomError::Nom(input, kind) - } - - fn append(_input: I, _kind: ErrorKind, mut other: Self) -> Self { - // Doesn't do append like VerboseError - other - } -} diff --git a/src/parser/footnote_definition.rs b/src/parser/footnote_definition.rs index 176aeb1..c401b40 100644 --- a/src/parser/footnote_definition.rs +++ b/src/parser/footnote_definition.rs @@ -1,9 +1,9 @@ -use super::error::Res; use super::util::WORD_CONSTITUENT_CHARACTERS; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::FootnoteDefinition; use crate::parser::parser_context::ContextElement; diff --git a/src/parser/greater_block.rs b/src/parser/greater_block.rs index f22dd4b..4a8f896 100644 --- a/src/parser/greater_block.rs +++ b/src/parser/greater_block.rs @@ -1,8 +1,8 @@ -use super::error::Res; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use super::Context; use crate::parser::element_parser::element; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::GreaterBlock; use crate::parser::parser_context::ContextElement; diff --git a/src/parser/lesser_block.rs b/src/parser/lesser_block.rs index 7db6420..c202fda 100644 --- a/src/parser/lesser_block.rs +++ b/src/parser/lesser_block.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::bytes::complete::is_not; use nom::bytes::complete::tag_no_case; @@ -12,7 +15,6 @@ use nom::combinator::verify; use nom::multi::many_till; use nom::sequence::tuple; -use super::error::Res; use super::Context; use crate::parser::exiting::ExitClass; use crate::parser::lesser_element::CommentBlock; diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 3f6e752..eaa1969 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -4,7 +4,6 @@ mod drawer; mod dynamic_block; mod element; mod element_parser; -mod error; mod exiting; mod footnote_definition; mod greater_block; diff --git a/src/parser/object_parser.rs b/src/parser/object_parser.rs index aacff7f..1f774bc 100644 --- a/src/parser/object_parser.rs +++ b/src/parser/object_parser.rs @@ -1,9 +1,11 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::combinator::map; use nom::combinator::not; use crate::parser::object::Object; -use super::error::Res; use super::parser_with_context::parser_with_context; use super::plain_text::plain_text; use super::Context; diff --git a/src/parser/paragraph.rs b/src/parser/paragraph.rs index 8b18ce8..61a4ec1 100644 --- a/src/parser/paragraph.rs +++ b/src/parser/paragraph.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::combinator::eof; use nom::combinator::recognize; @@ -16,7 +19,6 @@ use crate::parser::util::maybe_consume_trailing_whitespace_if_not_exiting; use crate::parser::util::start_of_line; use super::element_parser::non_paragraph_element; -use super::error::Res; use super::lesser_element::Paragraph; use super::util::blank_line; use super::util::get_consumed; diff --git a/src/parser/parser_context.rs b/src/parser/parser_context.rs index 8737ade..1943eda 100644 --- a/src/parser/parser_context.rs +++ b/src/parser/parser_context.rs @@ -1,8 +1,8 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use std::rc::Rc; -use super::error::CustomError; -use super::error::MyError; -use super::error::Res; use super::list::List; use super::list::Node; use super::Context; diff --git a/src/parser/plain_list.rs b/src/parser/plain_list.rs index afe48c5..1b6745f 100644 --- a/src/parser/plain_list.rs +++ b/src/parser/plain_list.rs @@ -1,12 +1,12 @@ -use super::error::CustomError; -use super::error::MyError; -use super::error::Res; use super::greater_element::PlainList; use super::greater_element::PlainListItem; use super::parser_with_context::parser_with_context; use super::util::maybe_consume_trailing_whitespace_if_not_exiting; use super::util::non_whitespace_character; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use crate::parser::element_parser::element; use crate::parser::exiting::ExitClass; use crate::parser::parser_context::ContextElement; diff --git a/src/parser/plain_text.rs b/src/parser/plain_text.rs index 3eb7697..6b515aa 100644 --- a/src/parser/plain_text.rs +++ b/src/parser/plain_text.rs @@ -1,11 +1,9 @@ -use nom::combinator::not; - -use crate::parser::error::CustomError; -use crate::parser::error::MyError; - -use super::error::Res; use super::object::PlainText; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; +use nom::combinator::not; #[tracing::instrument(ret, level = "debug")] pub fn plain_text<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, PlainText<'s>> { diff --git a/src/parser/property_drawer.rs b/src/parser/property_drawer.rs index f8283c6..6eb5832 100644 --- a/src/parser/property_drawer.rs +++ b/src/parser/property_drawer.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::bytes::complete::is_not; use nom::bytes::complete::tag; @@ -13,9 +16,6 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::Context; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; -use crate::parser::error::Res; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::NodeProperty; use crate::parser::greater_element::PropertyDrawer; diff --git a/src/parser/table.rs b/src/parser/table.rs index 734d8d9..263590c 100644 --- a/src/parser/table.rs +++ b/src/parser/table.rs @@ -1,3 +1,6 @@ +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::bytes::complete::is_not; use nom::bytes::complete::tag; @@ -13,7 +16,6 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::Context; -use crate::parser::error::Res; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::TableRow; use crate::parser::lesser_element::TableCell; diff --git a/src/parser/util.rs b/src/parser/util.rs index a0beb1f..b1ed386 100644 --- a/src/parser/util.rs +++ b/src/parser/util.rs @@ -1,10 +1,10 @@ use crate::parser::parser_with_context::parser_with_context; -use super::error::CustomError; -use super::error::MyError; -use super::error::Res; use super::parser_context::ContextElement; use super::Context; +use crate::error::CustomError; +use crate::error::MyError; +use crate::error::Res; use nom::branch::alt; use nom::character::complete::line_ending; use nom::character::complete::multispace0;