Changeset 5573
- Timestamp:
- Dec 3, 2006, 1:41:38 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/nx0.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/nx0.lisp
r5531 r5573 2163 2163 new)) 2164 2164 2165 2165 ;;; Treat (VALUES x . y) as X if it appears in a THE form 2166 2166 (defun nx-form-type (form &optional (env *nx-lexical-environment*)) 2167 2167 (if (self-evaluating-p form) 2168 2168 (type-of form) 2169 (if (and (consp form) ; Kinda bogus now, but require-type2169 (if (and (consp form) ; Kinda bogus now, but require-type 2170 2170 (eq (%car form) 'require-type) ; should be special some day 2171 2171 (quoted-form-p (caddr form))) … … 2175 2175 (nx-target-type (nx-declared-type form env)) 2176 2176 (if (consp form) 2177 (if (eq (%car form) 'the) 2178 (nx-target-type (cadr form)) 2177 (if (eq (%car form) 'the) 2178 (destructuring-bind (typespec val) (%cdr form) 2179 (declare (ignore val)) 2180 (let* ((ctype (values-specifier-type typespec))) 2181 (if (typep ctype 'values-ctype) 2182 (let* ((req (values-ctype-required ctype))) 2183 (if req 2184 (nx-target-type (type-specifier (car req))) 2185 '*)) 2186 (nx-target-type (type-specifier ctype))))) 2179 2187 (if (eq (%car form) 'setq) 2180 2188 (nx-declared-type (cadr form) env) 2181 2189 (let* ((op (gethash (%car form) *nx1-operators*))) 2182 (or (and op (cdr (assq op *nx-operator-result-types*))) ;2190 (or (and op (cdr (assq op *nx-operator-result-types*))) 2183 2191 (and (not op)(cdr (assq (car form) *nx-operator-result-types-by-name*))) 2184 2192 (and (memq (car form) *numeric-ops*)
Note:
See TracChangeset
for help on using the changeset viewer.
