From 63143ea5e9fdbe34c6e0047d5eeae134d0f90394 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Thu, 13 Jul 2017 15:04:05 -0500 Subject: [PATCH] Fix incorrect parsing of %* (#624) --- src/tokenizer/index.js | 4 ++-- test/fixtures/es2016/exponentiation-operator/13/actual.js | 1 + test/fixtures/es2016/exponentiation-operator/13/options.json | 3 +++ test/fixtures/es2016/exponentiation-operator/14/actual.js | 1 + test/fixtures/es2016/exponentiation-operator/14/options.json | 3 +++ 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/es2016/exponentiation-operator/13/actual.js create mode 100644 test/fixtures/es2016/exponentiation-operator/13/options.json create mode 100644 test/fixtures/es2016/exponentiation-operator/14/actual.js create mode 100644 test/fixtures/es2016/exponentiation-operator/14/options.json diff --git a/src/tokenizer/index.js b/src/tokenizer/index.js index e116cc1cca..73388d8485 100644 --- a/src/tokenizer/index.js +++ b/src/tokenizer/index.js @@ -391,8 +391,8 @@ export default class Tokenizer extends LocationParser { let width = 1; let next = this.input.charCodeAt(this.state.pos + 1); - if (next === 42) { - // '*' + // Exponentiation operator ** + if (code === 42 && next === 42) { width++; next = this.input.charCodeAt(this.state.pos + 2); type = tt.exponent; diff --git a/test/fixtures/es2016/exponentiation-operator/13/actual.js b/test/fixtures/es2016/exponentiation-operator/13/actual.js new file mode 100644 index 0000000000..109dfad526 --- /dev/null +++ b/test/fixtures/es2016/exponentiation-operator/13/actual.js @@ -0,0 +1 @@ +1 %* 1; diff --git a/test/fixtures/es2016/exponentiation-operator/13/options.json b/test/fixtures/es2016/exponentiation-operator/13/options.json new file mode 100644 index 0000000000..05dbd26b33 --- /dev/null +++ b/test/fixtures/es2016/exponentiation-operator/13/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token (1:3)" +} diff --git a/test/fixtures/es2016/exponentiation-operator/14/actual.js b/test/fixtures/es2016/exponentiation-operator/14/actual.js new file mode 100644 index 0000000000..a32ddba1b3 --- /dev/null +++ b/test/fixtures/es2016/exponentiation-operator/14/actual.js @@ -0,0 +1 @@ +a %*= 1; diff --git a/test/fixtures/es2016/exponentiation-operator/14/options.json b/test/fixtures/es2016/exponentiation-operator/14/options.json new file mode 100644 index 0000000000..05dbd26b33 --- /dev/null +++ b/test/fixtures/es2016/exponentiation-operator/14/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token (1:3)" +}