From f0c79b60862138deb10286e8fe3edece3755dcdf Mon Sep 17 00:00:00 2001
From: Ludovic Court`es
Date: Tue, 28 Aug 2007 14:38:56 +0000
Subject: ast: Provide better error messages.

* src/guile/skribilo/ast.scm (handle-ast-error)[show-location]: Use it
  in all cases.  Internationalized error messages.

git-archimport-id: lcourtes@laas.fr--2006-libre/skribilo--devo--1.2--patch-95
---
 src/guile/skribilo/ast.scm | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/guile/skribilo/ast.scm b/src/guile/skribilo/ast.scm
index 3ed33c9..746cbbf 100644
--- a/src/guile/skribilo/ast.scm
+++ b/src/guile/skribilo/ast.scm
@@ -123,41 +123,48 @@
 
 (define (handle-ast-error c)
   ;; Issue a user-friendly error message for error condition C.
+  (define (show-location obj)
+    (let ((location (and (ast? obj) (ast-loc obj))))
+      (if (location? location)
+          (format (current-error-port) "~a:~a:~a: "
+                  (location-file location)
+                  (location-line location)
+                  (location-column location)))))
+
   (cond ((ast-orphan-error? c)
-	 (let* ((node (ast-orphan-error:ast c))
-		(location (and (ast? node) (ast-loc node))))
-	   (format (current-error-port) "orphan node: ~a~a~%"
-		   node
-		   (if (location? location)
-		       (string-append " "
-				      (location-file location) ":"
-				      (location-line location))
-		       ""))))
+	 (let ((node (ast-orphan-error:ast c)))
+           (show-location node)
+	   (format (current-error-port) (_ "orphan node: ~a~%")
+		   node)))
 
 	((ast-cycle-error? c)
 	 (let ((object (ast-cycle-error:object c)))
+           (show-location object)
 	   (format (current-error-port)
-		   "cycle found in AST: ~a~%" object)))
+		   (_ "cycle found in AST: ~a~%") object)))
 
 	((markup-unknown-option-error? c)
 	 (let ((markup (markup-unknown-option-error:markup c))
 	       (option (markup-unknown-option-error:option c)))
+           (show-location markup)
 	   (format (current-error-port)
-		   "~a: unknown markup option for `~a'~%"
+		   (_ "~a: unknown markup option for `~a'~%")
 		   option markup)))
 
 	((markup-already-bound-error? c)
 	 (let ((markup (markup-already-bound-error:markup c))
 	       (ident  (markup-already-bound-error:ident  c)))
+           (show-location markup)
 	   (format (current-error-port)
-		   "`~a' (~a): markup identifier already bound~%"
+		   (_ "`~a' (~a): markup identifier already bound~%")
 		   ident
 		   (if (markup? markup)
 		       (markup-markup markup)
 		       markup))))
 
 	(else
-	 (format (current-error-port) "undefined resolution error: ~a~%"
+	 (format (current-error-port)
+                 (_ "undefined AST error: ~a~%")
 		 c))))
 
 (register-error-condition-handler! ast-error? handle-ast-error)
-- 
cgit v1.2.3