pub enum Expression {
Show 37 variants NumberLiteral(NumberStructure, Span, ExpressionId), StringLiteral(String, Quoted, Span, ExpressionId), BooleanLiteral(bool, Span, ExpressionId), RegexLiteral { pattern: String, flags: Option<String>, position: Span, id: ExpressionId, }, ArrayLiteral(Vec<SpreadExpression>, Span, ExpressionId), ObjectLiteral(ObjectLiteral), TemplateLiteral(TemplateLiteral), ParenthesizedExpression(Box<MultipleExpression>, Span, ExpressionId), BinaryOperation { lhs: Box<Expression>, operator: BinaryOperator, rhs: Box<Expression>, id: ExpressionId, }, SpecialOperators(SpecialOperators, Span, ExpressionId), UnaryOperation { operator: UnaryOperator, operand: Box<Expression>, position: Span, id: ExpressionId, }, Assignment { lhs: LHSOfAssignment, rhs: Box<Expression>, id: ExpressionId, }, BinaryAssignmentOperation { lhs: VariableOrPropertyAccess, operator: BinaryAssignmentOperator, rhs: Box<Expression>, id: ExpressionId, }, UnaryPrefixAssignmentOperation { operator: UnaryPrefixAssignmentOperator, operand: VariableOrPropertyAccess, position: Span, id: ExpressionId, }, UnaryPostfixAssignmentOperation { operand: VariableOrPropertyAccess, operator: UnaryPostfixAssignmentOperator, position: Span, id: ExpressionId, }, VariableReference(String, Span, ExpressionId), ThisReference(Span, ExpressionId), SuperExpression(SuperReference, Span, ExpressionId), NewTarget(Span, ExpressionId), DynamicImport { path: Box<Expression>, position: Span, expression_id: ExpressionId, }, PropertyAccess { parent: Box<Expression>, property: PropertyReference, position: Span, expression_id: ExpressionId, is_optional: bool, }, Index { indexee: Box<Expression>, indexer: Box<MultipleExpression>, position: Span, expression_id: ExpressionId, }, FunctionCall { function: Box<Expression>, type_arguments: Option<Vec<TypeReference>>, arguments: Vec<SpreadExpression>, position: Span, expression_id: ExpressionId, }, ConstructorCall { constructor: Box<Expression>, type_arguments: Option<Vec<TypeReference>>, arguments: Option<Vec<SpreadExpression>>, position: Span, expression_id: ExpressionId, }, TernaryExpression { condition: Box<Expression>, truthy_result: Box<Expression>, falsy_result: Box<Expression>, id: ExpressionId, }, ArrowFunction(ArrowFunction), ExpressionFunction(ExpressionFunction), ExtractedArrowFunction(ExtractedFunction<ArrowFunctionBase>), ExtractedExpressionFunction(ExtractedFunction<ExpressionFunctionBase>), ClassExpression(ClassDeclaration<ExpressionPosition>, ExpressionId), Null(Span, ExpressionId), PrefixComment(String, Box<Expression>, Span, ExpressionId), PostfixComment(Box<Expression>, String, Span, ExpressionId), Comment(String, Span), JSXRoot(JSXRoot), IsExpression(IsExpression), Cursor { cursor_id: CursorId<Expression>, position: Span, expression_id: ExpressionId, },
}
Expand description

Expression structures

Comma is implemented as a BinaryOperator

Variants§

§

NumberLiteral(NumberStructure, Span, ExpressionId)

§

StringLiteral(String, Quoted, Span, ExpressionId)

§

BooleanLiteral(bool, Span, ExpressionId)

§

RegexLiteral

Fields

§pattern: String
§position: Span
§

ArrayLiteral(Vec<SpreadExpression>, Span, ExpressionId)

§

ObjectLiteral(ObjectLiteral)

§

TemplateLiteral(TemplateLiteral)

§

ParenthesizedExpression(Box<MultipleExpression>, Span, ExpressionId)

§

BinaryOperation

§

SpecialOperators(SpecialOperators, Span, ExpressionId)

§

UnaryOperation

Fields

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

Assignment

§

BinaryAssignmentOperation

Modified assignment cannot have destructured thingies

§

UnaryPrefixAssignmentOperation

§

UnaryPostfixAssignmentOperation

§

VariableReference(String, Span, ExpressionId)

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

§

ThisReference(Span, ExpressionId)

§

SuperExpression(SuperReference, Span, ExpressionId)

§

NewTarget(Span, ExpressionId)

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

§

DynamicImport

Fields

§position: Span
§expression_id: ExpressionId
§

PropertyAccess

Fields

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

Index

Fields

§indexee: Box<Expression>
§position: Span
§expression_id: ExpressionId

e.g ...[4]

§

FunctionCall

Fields

§function: Box<Expression>
§type_arguments: Option<Vec<TypeReference>>
§position: Span
§expression_id: ExpressionId
§

ConstructorCall

Fields

§constructor: Box<Expression>
§type_arguments: Option<Vec<TypeReference>>
§position: Span
§expression_id: ExpressionId
§

TernaryExpression

Fields

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

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

§

ArrowFunction(ArrowFunction)

§

ExpressionFunction(ExpressionFunction)

§

ExtractedArrowFunction(ExtractedFunction<ArrowFunctionBase>)

§

ExtractedExpressionFunction(ExtractedFunction<ExpressionFunctionBase>)

§

ClassExpression(ClassDeclaration<ExpressionPosition>, ExpressionId)

Yes classes can exist in expr position :?

§

Null(Span, ExpressionId)

§

PrefixComment(String, Box<Expression>, Span, ExpressionId)

§

PostfixComment(Box<Expression>, String, Span, ExpressionId)

§

Comment(String, Span)

Allowed in trailing functions and JSX for some reason

§

JSXRoot(JSXRoot)

TODO under cfg A start of a JSXNode

§

IsExpression(IsExpression)

Not to be confused with binary operator is

§

Cursor

Fields

§position: Span
§expression_id: ExpressionId

TODO under cfg

Implementations§

source§

impl Expression

source

pub fn get_precedence(&self) -> u8

source§

impl Expression

source

pub fn get_expression_id(&self) -> Option<ExpressionId>

source

pub fn build_iife(block: Block) -> Self

IIFE = immediate invoked function execution

source

pub fn is_iife<'a>( &self, functions: &'a ExtractedFunctions ) -> Option<&'a ExpressionOrBlock>

source

pub fn get_non_parenthesized(&self) -> &Self

Recurses to find first non parenthesized expression

source

pub fn is_small(&self) -> bool

For prettier printing

TODO temp

Trait Implementations§

source§

impl ASTNode for Expression

source§

fn from_reader( reader: &mut impl TokenReader<TSXToken, Span>, state: &mut ParsingState, settings: &ParseSettings ) -> ParseResult<Expression>

source§

fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, settings: &ToStringSettingsAndData, depth: u8 )

source§

fn get_position(&self) -> Cow<'_, Span>

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

fn from_string( source: String, settings: ParseSettings, source_id: SourceId, offset: Option<usize>, cursors: Vec<(usize, EmptyCursorId)> ) -> ParseResult<ParseOutput<Self>>

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

fn to_string(&self, settings: &ToStringSettingsAndData) -> 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§

fn decl_from_reader( reader: &mut impl TokenReader<TSXToken, Span>, state: &mut ParsingState, settings: &ParseSettings ) -> ParseResult<Self>

source§

fn decl_to_string_from_buffer<T: ToString>( &self, buf: &mut T, settings: &ToStringSettingsAndData, depth: u8 )

source§

fn get_decl_position(&self) -> Option<Cow<'_, Span>>

source§

fn as_option_mut_expr(&mut self) -> Option<&mut Expression>

source§

impl From<Expression> for MultipleExpression

source§

fn from(expr: Expression) -> Self

Converts to this type from the input type.
source§

impl From<Expression> for SpreadExpression

source§

fn from(value: 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<'a> IntoAST<Expression> for &'a str

source§

impl IntoAST<Expression> for f64

source§

impl IntoAST<Expression> for usize

source§

impl IntoAST<Statement> for Expression

source§

impl PartialEq<Expression> 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 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, settings: &VisitSettings, functions: &mut ExtractedFunctions, chain: &mut Annex<'_, Chain> )

source§

fn visit_mut<TData>( &mut self, visitors: &mut impl VisitorMutReceiver<TData> + ?Sized, data: &mut TData, settings: &VisitSettings, functions: &mut ExtractedFunctions, 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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> ToOwned for Twhere 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.