pub enum Expression {
Show 33 variants NumberLiteral(NumberRepresentation, Span), StringLiteral(String, Quoted, Span), BooleanLiteral(bool, Span), RegexLiteral { pattern: String, flags: Option<String>, position: Span, }, ArrayLiteral(Vec<ArrayElement>, Span), ObjectLiteral(ObjectLiteral), TemplateLiteral(TemplateLiteral), ParenthesizedExpression(Box<MultipleExpression>, Span), BinaryOperation { lhs: Box<Expression>, operator: BinaryOperator, rhs: Box<Expression>, position: Span, }, SpecialOperators(SpecialOperators, Span), UnaryOperation { operator: UnaryOperator, operand: Box<Expression>, position: Span, }, Assignment { lhs: LHSOfAssignment, rhs: Box<Expression>, position: Span, }, BinaryAssignmentOperation { lhs: VariableOrPropertyAccess, operator: BinaryAssignmentOperator, rhs: Box<Expression>, position: Span, }, UnaryPrefixAssignmentOperation { operator: UnaryPrefixAssignmentOperator, operand: VariableOrPropertyAccess, position: Span, }, UnaryPostfixAssignmentOperation { operand: VariableOrPropertyAccess, operator: UnaryPostfixAssignmentOperator, position: Span, }, VariableReference(String, Span), ThisReference(Span), SuperExpression(SuperReference, Span), NewTarget(Span), DynamicImport { path: Box<Expression>, options: Option<Box<Expression>>, position: Span, }, PropertyAccess { parent: Box<Expression>, property: PropertyReference, is_optional: bool, position: Span, }, Index { indexee: Box<Expression>, indexer: Box<MultipleExpression>, is_optional: bool, position: Span, }, FunctionCall { function: Box<Expression>, type_arguments: Option<Vec<TypeAnnotation>>, arguments: Vec<FunctionArgument>, is_optional: bool, position: Span, }, ConstructorCall { constructor: Box<Expression>, type_arguments: Option<Vec<TypeAnnotation>>, arguments: Option<Vec<FunctionArgument>>, position: Span, }, ConditionalTernary { condition: Box<Expression>, truthy_result: Box<Expression>, falsy_result: Box<Expression>, position: Span, }, ArrowFunction(ArrowFunction), ExpressionFunction(ExpressionFunction), ClassExpression(ClassDeclaration<ExpressionPosition>), Null(Span), Comment { content: String, on: Box<Expression>, position: Span, is_multiline: bool, prefix: bool, }, JSXRoot(JSXRoot), IsExpression(IsExpression), Marker { marker_id: Marker<Expression>, position: Span, },
}
Expand description

Expression structures

Comma is implemented as a BinaryOperator

Variants§

§

NumberLiteral(NumberRepresentation, Span)

§

StringLiteral(String, Quoted, Span)

§

BooleanLiteral(bool, Span)

§

RegexLiteral

Fields

§pattern: String
§position: Span
§

ArrayLiteral(Vec<ArrayElement>, Span)

§

ObjectLiteral(ObjectLiteral)

§

TemplateLiteral(TemplateLiteral)

§

ParenthesizedExpression(Box<MultipleExpression>, Span)

§

BinaryOperation

Fields

§position: Span
§

SpecialOperators(SpecialOperators, Span)

§

UnaryOperation

Fields

§operator: UnaryOperator
§operand: Box<Expression>
§position: Span
§

Assignment

Fields

§position: Span
§

BinaryAssignmentOperation

Modified assignment cannot have destructured thingies

§

UnaryPrefixAssignmentOperation

§

UnaryPostfixAssignmentOperation

§

VariableReference(String, Span)

e.g x or (...).hi

§

ThisReference(Span)

§

SuperExpression(SuperReference, Span)

§

NewTarget(Span)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target

§

DynamicImport

Fields

§position: Span
§

PropertyAccess

Fields

§parent: Box<Expression>
§is_optional: bool
§position: Span
§

Index

e.g ...[4]

Fields

§indexee: Box<Expression>
§is_optional: bool
§position: Span
§

FunctionCall

Fields

§function: Box<Expression>
§type_arguments: Option<Vec<TypeAnnotation>>
§is_optional: bool
§position: Span
§

ConstructorCall

Fields

§constructor: Box<Expression>
§type_arguments: Option<Vec<TypeAnnotation>>
§position: Span
§

ConditionalTernary

e.g ... ? ... ? ...

Fields

§condition: Box<Expression>
§truthy_result: Box<Expression>
§falsy_result: Box<Expression>
§position: Span
§

ArrowFunction(ArrowFunction)

§

ExpressionFunction(ExpressionFunction)

§

ClassExpression(ClassDeclaration<ExpressionPosition>)

Yes classes can exist in expr position :?

§

Null(Span)

§

Comment

Fields

§content: String
§position: Span
§is_multiline: bool
§prefix: bool
§

JSXRoot(JSXRoot)

A start of a JSXNode

§

IsExpression(IsExpression)

Not to be confused with binary operator is

§

Marker

Fields

§marker_id: Marker<Expression>
§position: Span

Implementations§

source§

impl Expression

source

pub fn from_reader_with_precedence( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, return_precedence: u8, start: Option<TokenStart> ) -> ParseResult<Self>

source

pub fn get_precedence(&self) -> u8

source§

impl Expression

source

pub fn build_iife(block: Block) -> Self

IIFE = immediate invoked function execution

source

pub fn is_iife(&self) -> Option<&ExpressionOrBlock>

source

pub fn get_non_parenthesized(&self) -> &Self

Recurses to find first non parenthesized expression

Trait Implementations§

source§

impl ASTNode for Expression

source§

fn from_reader( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions ) -> ParseResult<Expression>

source§

fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, options: &ToStringOptions, local: LocalToStringInformation )

source§

fn get_position(&self) -> Span

Returns position of node as span AS IT WAS PARSED. May be Span::NULL if AST was doesn’t match anything in source
source§

fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>

From string, with default impl to call abstract method from_reader
source§

fn from_string_with_options( script: String, options: ParseOptions, offset: Option<u32> ) -> ParseResult<(Self, ParsingState)>

source§

fn to_string(&self, options: &ToStringOptions) -> String

Returns structure as valid string
source§

impl Clone for Expression

source§

fn clone(&self) -> Expression

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Expression

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl DeclarationExpression for Expression

source§

impl From<Expression> for FunctionArgument

source§

fn from(value: Expression) -> Self

Converts to this type from the input type.
source§

impl From<Expression> for MultipleExpression

source§

fn from(expr: Expression) -> Self

Converts to this type from the input type.
source§

impl From<VariableOrPropertyAccess> for Expression

source§

fn from(this: VariableOrPropertyAccess) -> Self

Converts to this type from the input type.
source§

impl GetFieldByType<BaseSpan<()>> for Expression

source§

fn get(&self) -> &Span

Get the value of a field that has type T
source§

impl<'a> IntoAST<Expression> for &'a str

source§

impl<'a> IntoAST<Expression> for Ident<'a>

source§

impl IntoAST<Expression> for f64

source§

impl IntoAST<Expression> for usize

source§

impl IntoAST<Statement> for Expression

source§

impl PartialEq for Expression

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl SelfRustTokenize for Expression

source§

fn append_to_token_stream(&self, token_stream: &mut TokenStream)

source§

fn to_tokens(&self) -> TokenStream

Returns the tokens used to construct self
source§

impl Serialize for Expression

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<Expression> for LHSOfAssignment

§

type Error = ParseError

The type returned in the event of a conversion error.
source§

fn try_from(value: Expression) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Expression> for VariableOrPropertyAccess

§

type Error = ParseError

The type returned in the event of a conversion error.
source§

fn try_from(expression: Expression) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Visitable for Expression

source§

fn visit<TData>( &self, visitors: &mut (impl VisitorReceiver<TData> + ?Sized), data: &mut TData, options: &VisitOptions, chain: &mut Annex<'_, Chain> )

source§

fn visit_mut<TData>( &mut self, visitors: &mut (impl VisitorMutReceiver<TData> + ?Sized), data: &mut TData, options: &VisitOptions, chain: &mut Annex<'_, Chain> )

source§

impl Eq for Expression

source§

impl SelfVisitable for Expression

source§

impl SelfVisitableMut for Expression

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoAST<T> for T
where T: ASTNode,

source§

fn into_ast(self) -> T

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.