207 |
|
|
208 |
(defun form-to-values-type (form) |
(defun form-to-values-type (form) |
209 |
(if (and (consp form) (eq (car form) 'values)) form |
(if (and (consp form) (eq (car form) 'values)) form |
210 |
(let ((frt (fun-ret-type form))) |
(let ((frt (info-type (cadr (c1symbol-fun (car form) (cdr form)))))) |
211 |
(if (and (consp frt) (eq (car frt) 'values)) frt |
(if (and (consp frt) (eq (car frt) 'values)) frt |
212 |
(list 'values frt))))) |
(list 'values frt))))) |
213 |
|
|
220 |
((or (null vars) (null mv-form)) nil) |
((or (null vars) (null mv-form)) nil) |
221 |
(t |
(t |
222 |
(let ((var (car vars))) |
(let ((var (car vars))) |
223 |
(let ((outer (and (symbolp (car mv-form)) (cdr (assoc (car mv-form) *decls*)))) |
(let ((outer (and (not expn) (symbolp (car mv-form)) (cdr (assoc (car mv-form) *decls*)))) |
224 |
(inf (t-to-nil (var-is-inferred var body))) |
(inf (t-to-nil (var-is-inferred var body))) |
225 |
(exp (and (consp (car mv-form)) (eq (caar mv-form) 'the) (cadar mv-form))) |
(exp (and (not expn) (consp (car mv-form)) (eq (caar mv-form) 'the) (cadar mv-form))) |
226 |
(typ (and expn (t-to-nil (car mv-form)))) |
(typ (and expn (t-to-nil (car mv-form)))) |
227 |
(frt (and (consp (car mv-form)) |
(frt (and (not expn) (consp (car mv-form)) |
228 |
(symbolp (caar mv-form)) |
(symbolp (caar mv-form)) |
229 |
(t-to-nil (coerce-to-one-value (fun-ret-type (car mv-form)))))) |
(t-to-nil |
230 |
|
(coerce-to-one-value |
231 |
|
(info-type |
232 |
|
(cadr |
233 |
|
(c1symbol-fun (caar mv-form) (cdar mv-form)))))))) |
234 |
(dec (var-is-declared var body)) |
(dec (var-is-declared var body)) |
235 |
(chb (var-is-changed var body))) |
(chb (var-is-changed var body))) |
236 |
(let ((type (or exp typ frt inf outer)) |
(let ((type (or exp typ frt inf outer)) |