+ (main-vals '())
+ (unless (lambda-var-ignorep rest)
+ ;; Make up two extra variables, and squirrel them away in
+ ;; ARG-INFO-DEFAULT for transforming (VALUES-LIST REST) into
+ ;; (%MORE-ARG-VALUES CONTEXT 0 COUNT) when possible.
+ (let* ((context-name (gensym "REST-CONTEXT"))
+ (context (make-lambda-var :%source-name context-name
+ :arg-info (make-arg-info :kind :more-context)))
+ (count-name (gensym "REST-COUNT"))
+ (count (make-lambda-var :%source-name count-name
+ :arg-info (make-arg-info :kind :more-count)
+ :type (specifier-type 'index))))
+ (setf (arg-info-default (lambda-var-arg-info rest)) (list context count)
+ (lambda-var-ever-used context) t
+ (lambda-var-ever-used count) t)
+ (setf more-context context
+ more-count count))))