From 7982fa0faccdbd52f3f06161fe1e7a571d400389 Mon Sep 17 00:00:00 2001 From: Robert Krimen Date: Wed, 17 Oct 2012 18:55:02 -0700 Subject: [PATCH] Fix scanning \r, \b, \f, \v as \t Copy and paste error of epic proportions? This will fix #5 --- Makefile | 3 ++- bug_test.go | 14 ++++++++++++++ lexer.go | 8 ++++---- lexer_test.go | 6 ++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 bug_test.go diff --git a/Makefile b/Makefile index baf2e39..47e0990 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,6 @@ TEST := -v --run underscoreUtility TEST := -v --run Array_slice TEST := -v --run Date TEST := -v . -TEST := -v --run Lexer TEST := -v --run Synopsis TEST := -v --run _eval TEST := -v --run Broken @@ -22,6 +21,8 @@ TEST := -v --run ParseFailure TEST := -v --run RegExp TEST := -v --run SwitchBreak TEST := -v --run Unicode +TEST := -v --run Lexer +TEST := -v --run Test_issue TEST := . test: test-i diff --git a/bug_test.go b/bug_test.go new file mode 100644 index 0000000..0d8d2af --- /dev/null +++ b/bug_test.go @@ -0,0 +1,14 @@ +package otto + +import ( + "testing" + . "github.com/robertkrimen/terst" +) + +func Test_issue5(t *testing.T) { + Terst(t) + + test := runTest() + test(`'abc' === 'def'`, "false") + test(`'\t' === '\r'`, "false") +} diff --git a/lexer.go b/lexer.go index be4c3e3..fba00fc 100644 --- a/lexer.go +++ b/lexer.go @@ -258,15 +258,15 @@ func (self *_lexer) scanQuoteLiteral() _token { case 'n': text.WriteRune('\n') case 'r': - text.WriteRune('\t') + text.WriteRune('\r') case 't': text.WriteRune('\t') case 'b': - text.WriteRune('\t') + text.WriteRune('\b') case 'f': - text.WriteRune('\t') + text.WriteRune('\f') case 'v': - text.WriteRune('\t') + text.WriteRune('\v') default: text.WriteRune(value) case 'u': diff --git a/lexer_test.go b/lexer_test.go index 4fd9da3..9fb1541 100644 --- a/lexer_test.go +++ b/lexer_test.go @@ -175,5 +175,11 @@ Second line \ "EOF", ) + test(`'\t' === '\r'`, + "string \t", + "===", + "string \r", + "EOF", + ) }