X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fseq.lisp;h=d37da2c4196a2eda6f7506c86cfd632d6ee253d2;hb=a00ea11a89c9db677e60edf6832c905a4527b5cb;hp=4fb59114a432b7ab9e5e19024f46091ba8447dab;hpb=769e1d8a825c587df85896dc971d0f90748e134e;p=sbcl.git diff --git a/src/code/seq.lisp b/src/code/seq.lisp index 4fb5911..d37da2c 100644 --- a/src/code/seq.lisp +++ b/src/code/seq.lisp @@ -296,17 +296,18 @@ "Return a sequence of the given TYPE and LENGTH, with elements initialized to INITIAL-ELEMENT." (declare (fixnum length)) - (let* ((adjusted-type - (typecase type + (let* ((expanded-type (typexpand type)) + (adjusted-type + (typecase expanded-type (atom (cond - ((eq type 'string) '(vector character)) - ((eq type 'simple-string) '(simple-array character (*))) + ((eq expanded-type 'string) '(vector character)) + ((eq expanded-type 'simple-string) '(simple-array character (*))) (t type))) (cons (cond - ((eq (car type) 'string) `(vector character ,@(cdr type))) - ((eq (car type) 'simple-string) - `(simple-array character ,(if (cdr type) - (cdr type) + ((eq (car expanded-type) 'string) `(vector character ,@(cdr expanded-type))) + ((eq (car expanded-type) 'simple-string) + `(simple-array character ,(if (cdr expanded-type) + (cdr expanded-type) '(*)))) (t type))) (t type)))