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) { diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index ec5ac638605..9ce03ff77a4 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -1202,7 +1202,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 { diff --git a/tests/baselines/reference/useStrictLikePrologueString01.js b/tests/baselines/reference/useStrictLikePrologueString01.js new file mode 100644 index 00000000000..56df03abfe5 --- /dev/null +++ b/tests/baselines/reference/useStrictLikePrologueString01.js @@ -0,0 +1,14 @@ +//// [useStrictLikePrologueString01.ts] + +"hey!" +" use strict " +export function f() { +} + +//// [useStrictLikePrologueString01.js] +"hey!"; +" use strict "; +"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 +} 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