Syntactic apply.
Syntactic apply. It is a method call if fun is a dot-select or bracket-select. It is a function call otherwise.
Binary operation (always preserves pureness).
Binary operation (always preserves pureness).
Operations which do not preserve pureness are not allowed in this tree. These are notably +=, -=, *=, /= and %=
export
statement.
export
statement.
This corresponds to the following syntax:
export { <binding1_1> as <binding1_2>, ..., <bindingN_1> as <bindingN_2> }
The _1
parts of bindings are therefore the identifiers from the current
module that are exported. The _2
parts are the names under which they
are exported to other modules.
The name of an ES module export.
The name of an ES module export.
It must be a valid IdentifierName
, as tested by
ExportName.isValidExportName.
import
statement, except namespace import.
import
statement, except namespace import.
This corresponds to the following syntax:
import { <binding1_1> as <binding1_2>, ..., <bindingN_1> as <bindingN_2> } from <from>
The _1
parts of bindings are therefore the identifier names that are
imported, as specified in export
clauses of the module. The _2
parts
are the names under which they are imported in the current module.
Special cases:
_1.name == _2.name
, there is shorter syntax in ES, i.e.,
import { binding } from 'from'
._1.name == "default"
, it is equivalent to a default import.
Dynamic import(arg)
.
Namespace import
statement.
Namespace import
statement.
This corresponds to the following syntax:
import * as <binding> from <from>
ES6 let or const (depending on the mutable flag).
Marker for literals.
Marker for literals. Literals are always pure.
...items
, the "spread" operator of ECMAScript 6.
...items
, the "spread" operator of ECMAScript 6.
It is only valid in ECMAScript 6, in the args
/items
of a New,
Apply, or ArrayConstr.
An iterable whose items will be spread
AST node of JavaScript.
Unary operation (always preserves pureness).
Unary operation (always preserves pureness).
Operations which do not preserve pureness are not allowed in this tree. These are notably ++ and --