From 2abc7369554e5716e3c1a3e3e85cedb2138c0ce7 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Apr 2016 00:55:02 -0700 Subject: [PATCH 1/5] Ensure that the entire contents of the prologue are simply 'use strict'. --- src/compiler/factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index f7aa18fa7ea..0fd423d342c 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -1204,7 +1204,7 @@ namespace ts { // Utilities function isUseStrictPrologue(node: ExpressionStatement): boolean { - return !!(node.expression as StringLiteral).text.match(/use strict/); + return (node.expression as StringLiteral).text === "use strict"; } export function addPrologueDirectives(target: Statement[], source: Statement[], ensureUseStrict?: boolean): number { From c57e54eeae5fd3d13c93cb21cc34888b5d43d862 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Apr 2016 00:41:40 -0700 Subject: [PATCH 2/5] Added test. --- tests/cases/compiler/useStrictLikePrologueString01.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tests/cases/compiler/useStrictLikePrologueString01.ts diff --git a/tests/cases/compiler/useStrictLikePrologueString01.ts b/tests/cases/compiler/useStrictLikePrologueString01.ts new file mode 100644 index 00000000000..b76e38ebb06 --- /dev/null +++ b/tests/cases/compiler/useStrictLikePrologueString01.ts @@ -0,0 +1,7 @@ +//@target: commonjs +//@target: es5 + +"hey!" +" use strict " +export function f() { +} \ No newline at end of file From 3a35aa30da5a1ca2dd40b1f52467aa48ec3b0a36 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Apr 2016 00:42:04 -0700 Subject: [PATCH 3/5] Accepted baselines. --- .../reference/useStrictLikePrologueString01.js | 13 +++++++++++++ .../reference/useStrictLikePrologueString01.symbols | 7 +++++++ .../reference/useStrictLikePrologueString01.types | 11 +++++++++++ 3 files changed, 31 insertions(+) create mode 100644 tests/baselines/reference/useStrictLikePrologueString01.js create mode 100644 tests/baselines/reference/useStrictLikePrologueString01.symbols create mode 100644 tests/baselines/reference/useStrictLikePrologueString01.types diff --git a/tests/baselines/reference/useStrictLikePrologueString01.js b/tests/baselines/reference/useStrictLikePrologueString01.js new file mode 100644 index 00000000000..12cec220725 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.js @@ -0,0 +1,13 @@ +//// [useStrictLikePrologueString01.ts] + +"hey!" +" use strict " +export function f() { +} + +//// [useStrictLikePrologueString01.js] +"hey!"; +" use strict "; +function f() { +} +exports.f = f; diff --git a/tests/baselines/reference/useStrictLikePrologueString01.symbols b/tests/baselines/reference/useStrictLikePrologueString01.symbols new file mode 100644 index 00000000000..e96d48d9933 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/useStrictLikePrologueString01.ts === + +"hey!" +" use strict " +export function f() { +>f : Symbol(f, Decl(useStrictLikePrologueString01.ts, 2, 14)) +} diff --git a/tests/baselines/reference/useStrictLikePrologueString01.types b/tests/baselines/reference/useStrictLikePrologueString01.types new file mode 100644 index 00000000000..a12dfe3abd3 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/useStrictLikePrologueString01.ts === + +"hey!" +>"hey!" : string + +" use strict " +>" use strict " : string + +export function f() { +>f : () => void +} From 1e18618170ae03c8a6c1ffecd4961db96ac682cc Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Apr 2016 00:47:29 -0700 Subject: [PATCH 4/5] Ensure that the entire contents are simply 'use strict'. --- src/compiler/emitter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index d132e12e793..bb4d179704c 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -7636,7 +7636,7 @@ const _super = (function (geti, seti) { } function isUseStrictPrologue(node: ExpressionStatement): boolean { - return !!(node.expression as StringLiteral).text.match(/use strict/); + return (node.expression as StringLiteral).text === "use strict"; } function ensureUseStrictPrologue(startWithNewLine: boolean, writeUseStrict: boolean) { From cfb9001e188370d177643ee2672bc927a4f5b120 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Apr 2016 00:48:11 -0700 Subject: [PATCH 5/5] Accepted baselines. --- tests/baselines/reference/useStrictLikePrologueString01.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/baselines/reference/useStrictLikePrologueString01.js b/tests/baselines/reference/useStrictLikePrologueString01.js index 12cec220725..56df03abfe5 100644 --- a/tests/baselines/reference/useStrictLikePrologueString01.js +++ b/tests/baselines/reference/useStrictLikePrologueString01.js @@ -8,6 +8,7 @@ export function f() { //// [useStrictLikePrologueString01.js] "hey!"; " use strict "; +"use strict"; function f() { } exports.f = f;