tamer: src::pipeline: Eliminate most error type references

Just cleaning up a bit, removing some unnecessary types, since there are so
many involved.

DEV-13162
main
Mike Gerwitz 2023-05-25 16:58:44 -04:00
parent ea6259570e
commit 57a805b495
3 changed files with 21 additions and 16 deletions

View File

@ -31,7 +31,8 @@ pub mod util;
pub use error::{FinalizeError, ParseError}; pub use error::{FinalizeError, ParseError};
pub use lower::{ pub use lower::{
lowerable, terminal, Lower, LowerIter, LowerSource, ParsedObject, lowerable, terminal, FromParseError, Lower, LowerIter, LowerSource,
ParsedObject,
}; };
pub use parser::{FinalizedParser, Parsed, ParsedResult, Parser}; pub use parser::{FinalizedParser, Parsed, ParsedResult, Parser};
pub use state::{ pub use state::{

View File

@ -239,6 +239,16 @@ pub trait WidenedError<S: ParseState, LS: ParseState> = Diagnostic
+ From<ParseError<<S as ParseState>::Token, <S as ParseState>::Error>> + From<ParseError<<S as ParseState>::Token, <S as ParseState>::Error>>
+ From<ParseError<<LS as ParseState>::Token, <LS as ParseState>::Error>>; + From<ParseError<<LS as ParseState>::Token, <LS as ParseState>::Error>>;
/// Convenience trait for converting [`From`] a [`ParseError`] for the
/// provided [`ParseState`] `S`.
///
/// This allows specifying this type in terms of only the [`ParseState`]
/// that is almost certainly already utilized,
/// rather than having to either import more types or use the verbose
/// associated type.
pub trait FromParseError<S: ParseState> =
From<ParseError<<S as ParseState>::Token, <S as ParseState>::Error>>;
/// A [`ParsedResult`](super::ParsedResult) with a [`WidenedError`]. /// A [`ParsedResult`](super::ParsedResult) with a [`WidenedError`].
pub type WidenedParsedResult<S, E> = pub type WidenedParsedResult<S, E> =
Result<Parsed<<S as ParseState>::Object>, E>; Result<Parsed<<S as ParseState>::Object>, E>;

View File

@ -41,21 +41,15 @@
//! see [`Lower`]. //! see [`Lower`].
use crate::{ use crate::{
asg::{ asg::air::{AirAggregate, AirAggregateCtx},
air::{Air, AirAggregate, AirAggregateCtx},
AsgError,
},
diagnose::Diagnostic, diagnose::Diagnostic,
obj::xmlo::{ obj::xmlo::{XmloAirContext, XmloReader, XmloToAir, XmloToken},
XmloAirContext, XmloAirError, XmloError, XmloReader, XmloToAir,
XmloToken,
},
parse::{ parse::{
FinalizeError, Lower, LowerSource, ParseError, Parsed, ParsedObject, FinalizeError, FromParseError, Lower, LowerSource, ParseError, Parsed,
UnknownToken, ParsedObject, UnknownToken,
}, },
xir::{ xir::{
flat::{PartialXirToXirf, Text, XirToXirfError, XirfToken}, flat::{PartialXirToXirf, Text},
Error as XirError, Token as XirToken, Error as XirError, Token as XirToken,
}, },
}; };
@ -76,10 +70,10 @@ pub fn load_xmlo<EO: Diagnostic + PartialEq>(
) -> Result<(AirAggregateCtx, XmloAirContext), EO> ) -> Result<(AirAggregateCtx, XmloAirContext), EO>
where where
EO: From<ParseError<UnknownToken, XirError>> EO: From<ParseError<UnknownToken, XirError>>
+ From<ParseError<XirfToken<Text>, XmloError>> + FromParseError<PartialXirToXirf<4, Text>>
+ From<ParseError<XirToken, XirToXirfError>> + FromParseError<XmloReader>
+ From<ParseError<XmloToken, XmloAirError>> + FromParseError<XmloToAir>
+ From<ParseError<Air, AsgError>> + FromParseError<AirAggregate>
+ From<FinalizeError>, + From<FinalizeError>,
{ {
// TODO: This entire block is a WIP and will be incrementally // TODO: This entire block is a WIP and will be incrementally