pub enum FileV1 {
Document {
headers: Vec<HeaderV1>,
body: Expr,
eoi: EoiTok,
},
Library {
headers: Vec<HeaderV1>,
module_kw: KwModule,
name: CtorTok,
sig_annot: Option<SigAnnotV1>,
eq: DefEqTok,
struct_kw: KwStruct,
binds: Vec<Bind>,
end_kw: KwEnd,
eoi: EoiTok,
},
}Expand description
A whole 0.1 .saty/.satyh file (main, upstream parser_v1.mly:364- 368): a header list followed by either a library (main_lib) or a
document expression. Unlike 0.0.6’s crate::cst::File (a flat prelude
of top-level lets with an optional trailing in body), 0.1 has no flat
top-level binding sequence at all: a document body is just an
ast::Expr (every let chains its own in), and a library is exactly
one module … = struct … end.
Variants§
Document
header* expr EOI (parser_v1.mly:367).
Library
header* MODULE UPPER option(sig_annot) EXACT_EQ STRUCT bind* END EOI (parser_v1.mly:372-375, main_lib; sig_annot = COERCE sigexpr, :555-557). Note 0.1’s annotation sigil is
:> (COERCE), never 0.0.6’s : sig … end.
Trait Implementations§
Source§impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for FileV1where
__SyanMacro_Atom: Spanned + Clone,
Vec<HeaderV1>: Parse<__SyanMacro_Atom>,
Expr: Parse<__SyanMacro_Atom>,
EoiTok: Parse<__SyanMacro_Atom>,
KwModule: Parse<__SyanMacro_Atom>,
CtorTok: Parse<__SyanMacro_Atom>,
Option<SigAnnotV1>: Parse<__SyanMacro_Atom>,
DefEqTok: Parse<__SyanMacro_Atom>,
KwStruct: Parse<__SyanMacro_Atom>,
Vec<Bind>: Parse<__SyanMacro_Atom>,
KwEnd: Parse<__SyanMacro_Atom>,
impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for FileV1where
__SyanMacro_Atom: Spanned + Clone,
Vec<HeaderV1>: Parse<__SyanMacro_Atom>,
Expr: Parse<__SyanMacro_Atom>,
EoiTok: Parse<__SyanMacro_Atom>,
KwModule: Parse<__SyanMacro_Atom>,
CtorTok: Parse<__SyanMacro_Atom>,
Option<SigAnnotV1>: Parse<__SyanMacro_Atom>,
DefEqTok: Parse<__SyanMacro_Atom>,
KwStruct: Parse<__SyanMacro_Atom>,
Vec<Bind>: Parse<__SyanMacro_Atom>,
KwEnd: Parse<__SyanMacro_Atom>,
Source§type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
Every error must be convertible to the universal one, so a field’s failure can become the
enclosing type’s failure with no per-field where-predicate. Stating it HERE rather than at
each derived impl is what keeps it out of the obligation graph: a per-field
<FieldTy as Parse<Atom>>::Error: Into<…> predicate re-creates a projection cycle on a
recursive field (E0275), which decycle’s bound-peeling does not break.Source§fn parse_stream<__SyanMacro_S: ParseStream<Atom = __SyanMacro_Atom>>(
__syan_stream: &mut __SyanMacro_S,
) -> Result<Self, Self::Error>
fn parse_stream<__SyanMacro_S: ParseStream<Atom = __SyanMacro_Atom>>( __syan_stream: &mut __SyanMacro_S, ) -> Result<Self, Self::Error>
Parse from a reborrowable stream. Read more
impl StructuralPartialEq for FileV1
Source§impl<__SyanMacro_Atom> Unparse<__SyanMacro_Atom> for FileV1where
Vec<HeaderV1>: Unparse<__SyanMacro_Atom>,
Expr: Unparse<__SyanMacro_Atom>,
EoiTok: Unparse<__SyanMacro_Atom>,
KwModule: Unparse<__SyanMacro_Atom>,
CtorTok: Unparse<__SyanMacro_Atom>,
Option<SigAnnotV1>: Unparse<__SyanMacro_Atom>,
DefEqTok: Unparse<__SyanMacro_Atom>,
KwStruct: Unparse<__SyanMacro_Atom>,
Vec<Bind>: Unparse<__SyanMacro_Atom>,
KwEnd: Unparse<__SyanMacro_Atom>,
impl<__SyanMacro_Atom> Unparse<__SyanMacro_Atom> for FileV1where
Vec<HeaderV1>: Unparse<__SyanMacro_Atom>,
Expr: Unparse<__SyanMacro_Atom>,
EoiTok: Unparse<__SyanMacro_Atom>,
KwModule: Unparse<__SyanMacro_Atom>,
CtorTok: Unparse<__SyanMacro_Atom>,
Option<SigAnnotV1>: Unparse<__SyanMacro_Atom>,
DefEqTok: Unparse<__SyanMacro_Atom>,
KwStruct: Unparse<__SyanMacro_Atom>,
Vec<Bind>: Unparse<__SyanMacro_Atom>,
KwEnd: Unparse<__SyanMacro_Atom>,
Auto Trait Implementations§
impl Freeze for FileV1
impl RefUnwindSafe for FileV1
impl Send for FileV1
impl Sync for FileV1
impl Unpin for FileV1
impl UnsafeUnpin for FileV1
impl UnwindSafe for FileV1
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more