src/module-impl.lisp: Don't emit `#line' to non-position-aware streams.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 30 Aug 2015 10:03:22 +0000 (11:03 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 30 Aug 2015 17:11:38 +0000 (18:11 +0100)
Because we can't switch back afterwards, the compiler will blame the
wrong thing.  Also, if the output stream isn't position-aware, it's
probably because we're in the midst of pretty-printing something, and
forcing `#line' directives will produce hideous results.

This is all rather unfortunate.  It's clearly a bug that we can't
produce pretty output and have useful error location information, but I
think this is the best I can manage right now.

src/module-impl.lisp

index 9e74b27..fe6b545 100644 (file)
         (line (file-location-line location))
         (filename (file-location-filename location)))
     (cond (line
-          (format stream "~&#line ~D~@[ ~S~]~%" line filename)
+          (when (typep stream 'position-aware-stream)
+            (format stream "~&#line ~D~@[ ~S~]~%" line filename))
           (funcall thunk)
           (when (typep stream 'position-aware-stream)
             (fresh-line stream)