Raymond Toy pushed to branch issue-140-stream-element-type-two-way-stream at cmucl / cmucl

Commits:

2 changed files:

Changes:

  • src/code/stream.lisp
    ... ... @@ -291,23 +291,12 @@
    291 291
         ;; simple-stream
    
    292 292
         (stream::%stream-external-format stream)
    
    293 293
         ;; lisp-stream
    
    294
    -    (typecase stream
    
    294
    +    ;; The stream is a file stream; signal an error if it's not.
    
    295
    +    (etypecase stream
    
    295 296
           #+unicode
    
    296 297
           (fd-stream (fd-stream-external-format stream))
    
    297 298
           (synonym-stream (stream-external-format
    
    298
    -		       (symbol-value (synonym-stream-symbol stream))))
    
    299
    -      (two-way-stream
    
    300
    -       (let ((input-format
    
    301
    -	       (stream-external-format (two-way-stream-input-stream stream)))
    
    302
    -	     (output-format
    
    303
    -	       (stream-external-format (two-way-stream-output-stream stream))))
    
    304
    -	 ;; If the input and output streams have the same format, we
    
    305
    -	 ;; can return the format.  If they differ, it's not clear
    
    306
    -	 ;; what to do, so just return :default.
    
    307
    -	 (if (eql input-format output-format)
    
    308
    -	     input-format
    
    309
    -	     :default)))
    
    310
    -      (t :default))
    
    299
    +		       (symbol-value (synonym-stream-symbol stream)))))
    
    311 300
         ;; fundamental-stream
    
    312 301
         :default))
    
    313 302
     
    

  • tests/issues.lisp
    ... ... @@ -672,12 +672,7 @@
    672 672
     
    
    673 673
     (define-test issue.140
    
    674 674
         (:tag :issues)
    
    675
    -  ;; Make sure *standard-input* is a two-way-stream
    
    676
    -  (assert-true (typep *standard-input* 'two-way-stream))
    
    677
    -  (let ((input-format (stream-external-format
    
    678
    -		       (two-way-stream-input-stream *standard-input*)))
    
    679
    -	(output-format (stream-external-format
    
    680
    -			(two-way-stream-output-stream *standard-input*))))
    
    681
    -    ;; By default, the input and output formats should be the same.
    
    682
    -    (assert-eql input-format output-format)
    
    683
    -    (assert-eql input-format (stream-external-format *standard-input*))))
    675
    +  (with-output-to-string (out)
    
    676
    +    (with-input-from-string (in "abc")
    
    677
    +      (let ((two-way-stream (make-two-way-stream in out)))
    
    678
    +	(assert-error 'type-error (stream-external-format two-way-stream))))))