Enum erg_parser::ast::TypeSpec
source · pub enum TypeSpec {
Show 15 variants
Infer(Token),
PreDeclTy(PreDeclTypeSpec),
List(ListTypeSpec),
SetWithLen(SetWithLenTypeSpec),
Tuple(TupleTypeSpec),
Dict(DictTypeSpec),
Record(RecordTypeSpec),
And(Box<TypeSpec>, Box<TypeSpec>),
Not(Box<TypeSpec>),
Or(Box<TypeSpec>, Box<TypeSpec>),
Enum(ConstArgs),
Interval {
op: Token,
lhs: ConstExpr,
rhs: ConstExpr,
},
Subr(SubrTypeSpec),
TypeApp {
spec: Box<TypeSpec>,
args: TypeAppArgs,
},
Refinement(RefinementTypeSpec),
}
Expand description
- List:
[Int; 3]
,[Int, Ratio, Complex]
, etc. - Dict:
[Str: Str]
, etc. - And (Intersection type): Add and Sub and Mul (== Num), etc.
- Not (Diff type): Pos == Nat not {0}, etc.
- Or (Union type): Int or None (== Option Int), etc.
- Enum:
{0, 1}
(== Binary), etc. - Range: 1..12, 0.0<..1.0, etc.
- Record: {.into_s: Self.() -> Str }, etc.
- Subr: Int -> Int, Int => None, T.(X) -> Int, etc.
- TypeApp: F|…|
- Refinement: {I: Int | I >= 0}
Variants§
Infer(Token)
PreDeclTy(PreDeclTypeSpec)
List(ListTypeSpec)
SetWithLen(SetWithLenTypeSpec)
Tuple(TupleTypeSpec)
Dict(DictTypeSpec)
Record(RecordTypeSpec)
And(Box<TypeSpec>, Box<TypeSpec>)
Not(Box<TypeSpec>)
Or(Box<TypeSpec>, Box<TypeSpec>)
Enum(ConstArgs)
Interval
Subr(SubrTypeSpec)
TypeApp
Refinement(RefinementTypeSpec)
Implementations§
source§impl TypeSpec
impl TypeSpec
pub fn and(lhs: TypeSpec, rhs: TypeSpec) -> Self
pub fn not(lhs: TypeSpec) -> Self
pub fn or(lhs: TypeSpec, rhs: TypeSpec) -> Self
pub const fn interval(op: Token, lhs: ConstExpr, rhs: ConstExpr) -> Self
pub fn type_app(spec: TypeSpec, args: TypeAppArgs) -> Self
pub fn enum_t_spec(elems: Vec<Literal>) -> Self
pub fn mono(ident: Identifier) -> Self
pub fn poly(acc: ConstAccessor, args: ConstArgs) -> Self
pub fn ident(&self) -> Option<String>
Trait Implementations§
source§impl Locational for TypeSpec
impl Locational for TypeSpec
source§impl PartialEq for TypeSpec
impl PartialEq for TypeSpec
impl Eq for TypeSpec
impl StructuralPartialEq for TypeSpec
Auto Trait Implementations§
impl Freeze for TypeSpec
impl RefUnwindSafe for TypeSpec
impl Send for TypeSpec
impl Sync for TypeSpec
impl Unpin for TypeSpec
impl UnwindSafe for TypeSpec
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