require(“./core”); var types = require(“../lib/types”); var def = types.Type.def; var or = types.Type.or; var builtin = types.builtInTypes; var isBoolean = builtin.boolean; var defaults = require(“../lib/shared”).defaults;

def(“Function”)

.field("async", isBoolean, defaults["false"]);

def(“SpreadProperty”)

.bases("Node")
.build("argument")
.field("argument", def("Expression"));

def(“ObjectExpression”)

.field("properties", [or(def("Property"), def("SpreadProperty"))]);

def(“SpreadPropertyPattern”)

.bases("Pattern")
.build("argument")
.field("argument", def("Pattern"));

def(“ObjectPattern”)

.field("properties", [or(
    def("PropertyPattern"),
    def("SpreadPropertyPattern")
)]);

def(“AwaitExpression”)

.bases("Expression")
.build("argument", "all")
.field("argument", or(def("Expression"), null))
.field("all", isBoolean, defaults["false"]);