Basic constructor macro for expr-cast/call-ambig structures.
(make-expr-cast/call-ambig [:type/fun <type/fun>] [:inc/dec <inc/dec>] [:arg/rest <arg/rest>])
This is the usual way to construct expr-cast/call-ambig structures. It simply conses together a structure with the specified fields.
This macro generates a new expr-cast/call-ambig structure from scratch. See also change-expr-cast/call-ambig, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-expr-cast/call-ambig (&rest args) (std::make-aggregate 'expr-cast/call-ambig args '((:type/fun) (:inc/dec) (:arg/rest)) 'make-expr-cast/call-ambig nil))
Function:
(defun expr-cast/call-ambig (type/fun inc/dec arg/rest) (declare (xargs :guard (and (amb-expr/tyname-p type/fun) (inc/dec-op-listp inc/dec) (exprp arg/rest)))) (declare (xargs :guard t)) (let ((__function__ 'expr-cast/call-ambig)) (declare (ignorable __function__)) (b* ((type/fun (mbe :logic (amb-expr/tyname-fix type/fun) :exec type/fun)) (inc/dec (mbe :logic (inc/dec-op-list-fix inc/dec) :exec inc/dec)) (arg/rest (mbe :logic (expr-fix arg/rest) :exec arg/rest))) (cons :cast/call-ambig (list type/fun inc/dec arg/rest)))))