chiark / gitweb /
src/final.lisp (test-parser): Set error location after making the scanner.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 25 Mar 2017 18:20:43 +0000 (18:20 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 8 Jun 2018 18:58:28 +0000 (19:58 +0100)
Oops.

src/final.lisp

index 8cd42f83478d5834dd8424276a36a00d5c7a86f6..96e9625b3906957a4183cf9e7ae2921da2ab9390 100644 (file)
@@ -110,16 +110,16 @@ (defmacro test-parser ((scanner &key backtrace) parser input)
                              ,scanner (make-instance
                                        'sod-token-scanner
                                        :char-scanner ,char-scanner))
-                       (multiple-value-bind (,value ,winp ,consumedp)
-                           (parse ,parser)
-                         (declare (ignore ,consumedp))
-                         (cond (,winp ,value)
-                               (t (syntax-error ,scanner ,value)
-                                  nil)))))
+                       (with-default-error-location (,scanner)
+                         (multiple-value-bind (,value ,winp ,consumedp)
+                             (parse ,parser)
+                           (declare (ignore ,consumedp))
+                           (cond (,winp ,value)
+                                 (t (syntax-error ,scanner ,value)
+                                    nil))))))
                 (if ,backtrace (,body)
                     (count-and-report-errors ()
-                      (with-default-error-location (,scanner)
-                        (,body)))))
+                      (,body))))
             (let ((,where (scanner-capture-place ,char-scanner)))
               (values ,value
                       (list ,nerror ,nwarn)