X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/ceed01afc84505ed0d116ee7a00e8b4a1a4bed6c..e783e65bc434b69ad73684c035aac345878ba6e9:/src/module-parse.lisp diff --git a/src/module-parse.lisp b/src/module-parse.lisp index 4d4d818..f90f360 100644 --- a/src/module-parse.lisp +++ b/src/module-parse.lisp @@ -35,7 +35,7 @@ (declare (ignore pset)) (with-parser-context (token-scanner-context :scanner scanner) (parse (and "typename" - (skip-many (:min 1) + (skip-many () (seq ((id :id)) (if (gethash id *module-type-map*) (cerror* "Type `~A' already defined" id) @@ -103,7 +103,8 @@ (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) @@ -112,7 +113,9 @@ (parse (skip-many () (seq ((pset (parse-property-set scanner)) (nil (error () - (plug module scanner pset)))) + (plug module scanner pset) + (skip-until (:keep-end nil) + #\; #\})))) (check-unused-properties pset)))) (declare (ignore consumedp)) (unless winp (syntax-error scanner result))))))))) @@ -178,7 +181,7 @@ (parse (skip-many (:min 0) (error (:ignore-unconsumed t) (parse-property scanner module-pset) - (skip-until (:keep-end t) #\, #\;)) + (skip-until () #\, #\;)) #\,)))) #\;)))) @@ -351,8 +354,7 @@ ;; definition; otherwise it might be a message or slot. (cond ((not (typep type 'c-function-type)) (when (consp name) - (cerror*-with-location - scanner + (cerror* "Method declarations must have function type") (setf name (cdr name))) (parse-slot-item sub-pset base-type type name))