Skip to main content

ExprKind

Enum ExprKind 

Source
pub enum ExprKind {
Show 53 variants Int(i64), Float(f64), String(Box<str>), InterpolatedString(Box<[StringPart]>), Heredoc { label: Box<str>, parts: Box<[StringPart]>, }, Nowdoc { label: Box<str>, value: Box<str>, }, ShellExec(Box<[StringPart]>), Bool(bool), Null, Variable(Box<str>), VariableVariable(Box<Expr>), Identifier(Box<str>), Assign(AssignExpr), Binary(BinaryExpr), UnaryPrefix(UnaryPrefixExpr), UnaryPostfix(UnaryPostfixExpr), Ternary(TernaryExpr), NullCoalesce(NullCoalesceExpr), FunctionCall(FunctionCallExpr), Array(Box<[ArrayElement]>), ArrayAccess(ArrayAccessExpr), Print(Box<Expr>), Parenthesized(Box<Expr>), Cast(CastKind, Box<Expr>), ErrorSuppress(Box<Expr>), Isset(Box<[Expr]>), Empty(Box<Expr>), Include(IncludeKind, Box<Expr>), Eval(Box<Expr>), Exit(Option<Box<Expr>>), MagicConst(MagicConstKind), Clone(Box<Expr>), CloneWith(Box<Expr>, Box<Expr>), New(NewExpr), PropertyAccess(PropertyAccessExpr), NullsafePropertyAccess(PropertyAccessExpr), MethodCall(Box<MethodCallExpr>), NullsafeMethodCall(Box<MethodCallExpr>), StaticPropertyAccess(StaticAccessExpr), StaticMethodCall(Box<StaticMethodCallExpr>), StaticDynMethodCall(Box<StaticDynMethodCallExpr>), ClassConstAccess(StaticAccessExpr), ClassConstAccessDynamic { class: Box<Expr>, member: Box<Expr>, }, StaticPropertyAccessDynamic { class: Box<Expr>, member: Box<Expr>, }, Closure(Box<ClosureExpr>), ArrowFunction(Box<ArrowFunctionExpr>), Match(MatchExpr), ThrowExpr(Box<Expr>), Yield(YieldExpr), AnonymousClass(Box<ClassDecl>), CallableCreate(CallableCreateExpr), Omit, Error,
}
Expand description

The kind of an expression.

Variants§

§

Int(i64)

Integer literal.

§

Float(f64)

Float literal.

§

String(Box<str>)

String literal without interpolation.

§

InterpolatedString(Box<[StringPart]>)

Double-quoted string with interpolation.

§

Heredoc

Heredoc string.

Fields

§label: Box<str>

Heredoc delimiter.

§parts: Box<[StringPart]>

Body segments.

§

Nowdoc

Nowdoc string.

Fields

§label: Box<str>

Nowdoc delimiter.

§value: Box<str>

Raw body text.

§

ShellExec(Box<[StringPart]>)

Backtick shell command.

§

Bool(bool)

true or false.

§

Null

null.

§

Variable(Box<str>)

Variable name without $.

§

VariableVariable(Box<Expr>)

$$x or ${expr}.

§

Identifier(Box<str>)

Bare identifier such as a constant name.

§

Assign(AssignExpr)

Assignment.

§

Binary(BinaryExpr)

Binary operation.

§

UnaryPrefix(UnaryPrefixExpr)

Prefix unary operation.

§

UnaryPostfix(UnaryPostfixExpr)

Postfix unary operation.

§

Ternary(TernaryExpr)

Ternary conditional.

§

NullCoalesce(NullCoalesceExpr)

?? expression.

§

FunctionCall(FunctionCallExpr)

Function call.

§

Array(Box<[ArrayElement]>)

Array literal.

§

ArrayAccess(ArrayAccessExpr)

Array offset access.

§

Print(Box<Expr>)

print expression.

§

Parenthesized(Box<Expr>)

Parenthesized expression.

§

Cast(CastKind, Box<Expr>)

Type cast.

§

ErrorSuppress(Box<Expr>)

@ error suppression.

§

Isset(Box<[Expr]>)

isset(...).

§

Empty(Box<Expr>)

empty(...).

§

Include(IncludeKind, Box<Expr>)

include/require variant.

§

Eval(Box<Expr>)

eval(...).

§

Exit(Option<Box<Expr>>)

exit/die with optional argument.

§

MagicConst(MagicConstKind)

Magic constant such as __LINE__.

§

Clone(Box<Expr>)

clone expression.

§

CloneWith(Box<Expr>, Box<Expr>)

clone with property overrides.

§

New(NewExpr)

new expression.

§

PropertyAccess(PropertyAccessExpr)

-> property access.

§

NullsafePropertyAccess(PropertyAccessExpr)

?-> property access.

§

MethodCall(Box<MethodCallExpr>)

-> method call.

§

NullsafeMethodCall(Box<MethodCallExpr>)

?-> method call.

§

StaticPropertyAccess(StaticAccessExpr)

Class::$prop access.

§

StaticMethodCall(Box<StaticMethodCallExpr>)

Class::method() call.

§

StaticDynMethodCall(Box<StaticDynMethodCallExpr>)

Class::$method() call.

§

ClassConstAccess(StaticAccessExpr)

Class::CONST access.

§

ClassConstAccessDynamic

Class::{expr} constant access.

Fields

§class: Box<Expr>

Class expression.

§member: Box<Expr>

Constant name expression.

§

StaticPropertyAccessDynamic

Class::$$member property access.

Fields

§class: Box<Expr>

Class expression.

§member: Box<Expr>

Property name expression.

§

Closure(Box<ClosureExpr>)

Anonymous function.

§

ArrowFunction(Box<ArrowFunctionExpr>)

Arrow function.

§

Match(MatchExpr)

match expression.

§

ThrowExpr(Box<Expr>)

throw used as an expression.

§

Yield(YieldExpr)

yield expression.

§

AnonymousClass(Box<ClassDecl>)

new class { ... }.

§

CallableCreate(CallableCreateExpr)

First-class callable syntax.

§

Omit

Skipped slot in a list destructuring pattern.

§

Error

Placeholder for an expression that failed to parse.

Trait Implementations§

Source§

impl Clone for ExprKind

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ExprKind

Source§

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

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

impl Serialize for ExprKind

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

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

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>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.