From: Mark Wooding Date: Thu, 26 May 2016 08:26:09 +0000 (+0100) Subject: src/module-parse.lisp (read-module): Use requested pathname for location. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/commitdiff_plain/e783e65bc434b69ad73684c035aac345878ba6e9?hp=a8bc78318db49efeb25d4a042fafde7c0ca1c0a5 src/module-parse.lisp (read-module): Use requested pathname for location. The default behaviour for `charbuf-scanner' is to use the pathname from its underlying stream; but (at least on some implementations) this is an absolute pathname which is actually rather annoying in error messages. Instead, arrange for `read-module' to attach the namestring of the pathname it was given directly to the scanner. This will be the correct possibly-relative pathname to the module file, because `find-file' has already done that part of the work, but it will be relative if that's how it was specified on the command line, if it was found by merging with a relative pathname in the `*module-dirs*' list, or if it was imported by a name relative to a module with a relative pathname. --- diff --git a/src/module-parse.lisp b/src/module-parse.lisp index 211f2c7..f90f360 100644 --- a/src/module-parse.lisp +++ b/src/module-parse.lisp @@ -103,7 +103,8 @@ (define-module (pathname :location location :truename truename) (let* ((*readtable* (copy-readtable)) (*package* (find-package '#:sod-user)) (char-scanner (make-instance 'charbuf-scanner - :stream f-stream)) + :stream f-stream + :filename (namestring pathname))) (scanner (make-instance 'sod-token-scanner :char-scanner char-scanner))) (with-default-error-location (scanner)