From 8f9e9992364f527cd2fb3ccca2ec4532eb9d83c8 Mon Sep 17 00:00:00 2001 From: Robert Krimen Date: Thu, 15 Nov 2012 16:10:24 -0800 Subject: [PATCH] Throw proper SyntaxError if unable to parse a regular expression --- .test262/Makefile | 10 +++++++--- type_regexp.go | 7 ++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.test262/Makefile b/.test262/Makefile index b9d8c25..7771e9f 100644 --- a/.test262/Makefile +++ b/.test262/Makefile @@ -18,7 +18,7 @@ otto: build test-otto: $(TEST) $(WITH_otto) -test.otto: otto +test.otto: $(TEST) $(WITH_otto) | tee $@ test.otto-: @@ -36,9 +36,9 @@ test.v8-: release: otto gauntlet clean: - rm -f test.otto digest.json + rm -f test.otto digest.json .node.tmp.js -digest.json: +digest.json: test.otto ./digest < test.otto > $@ digest.json-: @@ -69,6 +69,10 @@ try-tmp: tmp.js cat shim.js $< | $(otto) @echo PASS +node-try-tmp: tmp.js + cat shim.js $< > .node.tmp.js + node ./.node.tmp.js + look: .fail cat $< @echo `readlink $<` diff --git a/type_regexp.go b/type_regexp.go index 3a65400..cf25bfd 100644 --- a/type_regexp.go +++ b/type_regexp.go @@ -50,8 +50,13 @@ func (runtime *_runtime) newRegExpObject(pattern string, flags string) *_object re2pattern = fmt.Sprintf("(?%s:%s)", re2flags, re2pattern) } + regularExpression, err := regexp.Compile(re2pattern) + if err != nil { + panic(newSyntaxError("Invalid regular expression: %s", err.Error()[22:])) + } + self._RegExp = &_regExpObject{ - RegularExpression: regexp.MustCompile(re2pattern), + RegularExpression: regularExpression, Global: global, IgnoreCase: ignoreCase, Multiline: multiline,