Basic constructor macro for expression-static-call structures.
(make-expression-static-call [:type <type>]
[:fun <fun>]
[:args <args>])
This is the usual way to construct expression-static-call structures. It simply conses together a structure with the specified fields.
This macro generates a new expression-static-call structure from scratch. See also change-expression-static-call, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-expression-static-call (&rest args) (std::make-aggregate 'expression-static-call args '((:type) (:fun) (:args)) 'make-expression-static-call nil))
Function:
(defun expression-static-call (type fun args) (declare (xargs :guard (and (typep type) (identifierp fun) (expression-listp args)))) (declare (xargs :guard (type-namedp type))) (let ((__function__ 'expression-static-call)) (declare (ignorable __function__)) (b* ((type (mbe :logic (type-fix type) :exec type)) (fun (mbe :logic (identifier-fix fun) :exec fun)) (args (mbe :logic (expression-list-fix args) :exec args))) (let ((type (mbe :logic (if (type-namedp type) type (make-type-internal-named :get (identifier-fix :irrelevant) :recordp nil)) :exec type))) (cons :static-call (list type fun args))))))