summaryrefslogtreecommitdiff
path: root/module/language/ecmascript/parse.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-11-18 13:03:49 +0100
committerAndy Wingo <wingo@pobox.com>2010-11-18 13:03:49 +0100
commit96fa68966d1290a55100eedcb94f6f922f3b4cb1 (patch)
tree5f4b04b4e1de966582fed8c7ae32175e24224cf2 /module/language/ecmascript/parse.scm
parentb8b63433182674b3d7de4d52073b3243c9355146 (diff)
downloadguile-96fa68966d1290a55100eedcb94f6f922f3b4cb1.tar.gz
better errors for ecmascript parser too
* module/language/ecmascript/parse.scm (syntax-error): Better errors here too.
Diffstat (limited to 'module/language/ecmascript/parse.scm')
-rw-r--r--module/language/ecmascript/parse.scm11
1 files changed, 9 insertions, 2 deletions
diff --git a/module/language/ecmascript/parse.scm b/module/language/ecmascript/parse.scm
index 4c2311798..b8868a39d 100644
--- a/module/language/ecmascript/parse.scm
+++ b/module/language/ecmascript/parse.scm
@@ -23,8 +23,15 @@
#:use-module (language ecmascript tokenize)
#:export (read-ecmascript read-ecmascript/1 make-parser))
-(define (syntax-error message . args)
- (throw 'syntax-error 'tokenize #f message #f #f args))
+(define* (syntax-error message #:optional token)
+ (if (lexical-token? token)
+ (throw 'syntax-error #f message
+ (and=> (lexical-token-source token)
+ source-location->source-properties)
+ (or (lexical-token-value token)
+ (lexical-token-category token))
+ #f)
+ (throw 'syntax-error #f message #f token #f)))
(define (read-ecmascript port)
(let ((parse (make-parser)))