((call :initarg :call
:reader cross-type-style-warning-call)
(message :reader cross-type-style-warning-message
- #+cmu :initarg #+cmu :message ; (to stop bogus non-STYLE WARNING)
+ #+cmu #+cmu :initarg :message ; (to stop bogus non-STYLE WARNING)
))
(:report (lambda (c s)
(format
(define-condition cross-type-giving-up-conservatively
(cross-type-style-warning)
((message :initform "giving up conservatively"
- #+cmu :reader #+cmu #.(gensym) ; (to stop bogus non-STYLE WARNING)
+ #+cmu #+cmu :reader #.(gensym) ; (to stop bogus non-STYLE WARNING)
)))
;;; This warning refers to the flexibility in the ANSI spec with
'fixnum)
(t
'integer)))
+ ((subtypep raw-result 'simple-string)
+ `(simple-base-string ,(length object)))
+ ((subtypep raw-result 'string) 'base-string)
((some (lambda (type) (subtypep raw-result type))
'(array character list symbol))
raw-result)
(t
- (error "can't handle TYPE-OF ~S in cross-compilation")))))
+ (error "can't handle TYPE-OF ~S in cross-compilation" object)))))
;;; Is SYMBOL in the CL package? Note that we're testing this on the
;;; cross-compilation host, which could do things any old way. In
(make-member-type :members (list x)))
(number
(ctype-of-number x))
+ (string
+ (make-array-type :dimensions (array-dimensions x)
+ :complexp (not (typep x 'simple-array))
+ :element-type (specifier-type 'base-char)
+ :specialized-element-type (specifier-type 'base-char)))
(array
(let ((etype (specifier-type (array-element-type x))))
(make-array-type :dimensions (array-dimensions x)
(cond ((typep x 'standard-char)
;; (Note that SBCL doesn't distinguish between BASE-CHAR and
;; CHARACTER.)
- (find-classoid 'base-char))
+ (specifier-type 'base-char))
((not (characterp x))
nil)
(t