Skip to content

Commit cc6140f

Browse files
author
Yui T
committed
Only emit "use strict" when users ask for or the file is external module
1 parent ac67b94 commit cc6140f

File tree

66 files changed

+4
-66
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4
-66
lines changed

src/compiler/transformers/module/module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ namespace ts {
8989
startLexicalEnvironment();
9090

9191
const statements: Statement[] = [];
92-
const statementOffset = addPrologueDirectives(statements, node.statements, /*ensureUseStrict*/ !compilerOptions.noImplicitUseStrict, sourceElementVisitor);
92+
const ensureUseStrict = compilerOptions.alwaysStrict || (!compilerOptions.noImplicitUseStrict && isExternalModule(currentSourceFile));
93+
const statementOffset = addPrologueDirectives(statements, node.statements, ensureUseStrict, sourceElementVisitor);
9394

9495
if (shouldEmitUnderscoreUnderscoreESModule()) {
9596
append(statements, createUnderscoreUnderscoreESModule());

src/compiler/transformers/module/system.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ namespace ts {
225225
startLexicalEnvironment();
226226

227227
// Add any prologue directives.
228-
const statementOffset = addPrologueDirectives(statements, node.statements, /*ensureUseStrict*/ !compilerOptions.noImplicitUseStrict, sourceElementVisitor);
228+
const ensureUseStrict = compilerOptions.alwaysStrict || (!compilerOptions.noImplicitUseStrict && isExternalModule(currentSourceFile));
229+
const statementOffset = addPrologueDirectives(statements, node.statements, ensureUseStrict, sourceElementVisitor);
229230

230231
// var __moduleName = context_1 && context_1.id;
231232
statements.push(

tests/baselines/reference/importHelpersInIsolatedModules.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ C = tslib_1.__decorate([
6868
dec
6969
], C);
7070
//// [script.js]
71-
"use strict";
7271
var tslib_1 = require("tslib");
7372
var A = (function () {
7473
function A() {

tests/baselines/reference/isolatedModulesPlainFile-CommonJS.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ run(1);
55

66

77
//// [isolatedModulesPlainFile-CommonJS.js]
8-
"use strict";
98
run(1);

tests/baselines/reference/isolatedModulesPlainFile-System.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ run(1);
66

77
//// [isolatedModulesPlainFile-System.js]
88
System.register([], function (exports_1, context_1) {
9-
"use strict";
109
var __moduleName = context_1 && context_1.id;
1110
return {
1211
setters: [],

tests/baselines/reference/transpile/Does not generate semantic diagnostics.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/baselines/reference/transpile/Generates expected syntactic diagnostics.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/baselines/reference/transpile/Generates no diagnostics for missing file references.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/baselines/reference/transpile/Generates no diagnostics with valid inputs.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/baselines/reference/transpile/Report an error when compiler-options module-kind is out-of-range.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)