Skip to content

Commit b39f10f

Browse files
authored
Switch to var in emitter, writer, printer (#52906)
1 parent 27f20c9 commit b39f10f

File tree

3 files changed

+105
-95
lines changed

3 files changed

+105
-95
lines changed

src/compiler/emitter.ts

Lines changed: 66 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -737,15 +737,17 @@ export function getFirstProjectOutput(configFile: ParsedCommandLine, ignoreCase:
737737
/** @internal */
738738
// targetSourceFile is when users only want one file in entire project to be emitted. This is used in compileOnSave feature
739739
export function emitFiles(resolver: EmitResolver, host: EmitHost, targetSourceFile: SourceFile | undefined, { scriptTransformers, declarationTransformers }: EmitTransformers, emitOnly?: boolean | EmitOnly, onlyBuildInfo?: boolean, forceDtsEmit?: boolean): EmitResult {
740-
const compilerOptions = host.getCompilerOptions();
741-
const sourceMapDataList: SourceMapEmitResult[] | undefined = (compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions)) ? [] : undefined;
742-
const emittedFilesList: string[] | undefined = compilerOptions.listEmittedFiles ? [] : undefined;
743-
const emitterDiagnostics = createDiagnosticCollection();
744-
const newLine = getNewLineCharacter(compilerOptions);
745-
const writer = createTextWriter(newLine);
746-
const { enter, exit } = performance.createTimer("printTime", "beforePrint", "afterPrint");
747-
let bundleBuildInfo: BundleBuildInfo | undefined;
748-
let emitSkipped = false;
740+
/* eslint-disable no-var */
741+
var compilerOptions = host.getCompilerOptions();
742+
var sourceMapDataList: SourceMapEmitResult[] | undefined = (compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions)) ? [] : undefined;
743+
var emittedFilesList: string[] | undefined = compilerOptions.listEmittedFiles ? [] : undefined;
744+
var emitterDiagnostics = createDiagnosticCollection();
745+
var newLine = getNewLineCharacter(compilerOptions);
746+
var writer = createTextWriter(newLine);
747+
var { enter, exit } = performance.createTimer("printTime", "beforePrint", "afterPrint");
748+
var bundleBuildInfo: BundleBuildInfo | undefined;
749+
var emitSkipped = false;
750+
/* eslint-enable no-var */
749751

750752
// Emit each output file
751753
enter();
@@ -1356,7 +1358,8 @@ export const createPrinterWithRemoveCommentsNeverAsciiEscape = /* @__PURE__ */ m
13561358
export const createPrinterWithRemoveCommentsOmitTrailingSemicolon = /* @__PURE__ */ memoize(() => createPrinter({ removeComments: true, omitTrailingSemicolon: true }));
13571359

13581360
export function createPrinter(printerOptions: PrinterOptions = {}, handlers: PrintHandlers = {}): Printer {
1359-
const {
1361+
/* eslint-disable no-var */
1362+
var {
13601363
hasGlobalName,
13611364
onEmitNode = noEmitNotification,
13621365
isEmitNotificationEnabled,
@@ -1369,63 +1372,64 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
13691372
onAfterEmitToken
13701373
} = handlers;
13711374

1372-
const extendedDiagnostics = !!printerOptions.extendedDiagnostics;
1373-
const newLine = getNewLineCharacter(printerOptions);
1374-
const moduleKind = getEmitModuleKind(printerOptions);
1375-
const bundledHelpers = new Map<string, boolean>();
1376-
1377-
let currentSourceFile: SourceFile | undefined;
1378-
let nodeIdToGeneratedName: string[]; // Map of generated names for specific nodes.
1379-
let nodeIdToGeneratedPrivateName: string[]; // Map of generated names for specific nodes.
1380-
let autoGeneratedIdToGeneratedName: string[]; // Map of generated names for temp and loop variables.
1381-
let generatedNames: Set<string>; // Set of names generated by the NameGenerator.
1382-
let formattedNameTempFlagsStack: (Map<string, TempFlags> | undefined)[];
1383-
let formattedNameTempFlags: Map<string, TempFlags> | undefined;
1384-
let privateNameTempFlagsStack: TempFlags[]; // Stack of enclosing name generation scopes.
1385-
let privateNameTempFlags: TempFlags; // TempFlags for the current name generation scope.
1386-
let tempFlagsStack: TempFlags[]; // Stack of enclosing name generation scopes.
1387-
let tempFlags: TempFlags; // TempFlags for the current name generation scope.
1388-
let reservedNamesStack: (Set<string> | undefined)[]; // Stack of reserved names in enclosing name generation scopes.
1389-
let reservedNames: Set<string> | undefined; // Names reserved in nested name generation scopes.
1390-
let reservedPrivateNamesStack: (Set<string> | undefined)[]; // Stack of reserved member names in enclosing name generation scopes.
1391-
let reservedPrivateNames: Set<string> | undefined; // Member names reserved in nested name generation scopes.
1392-
let preserveSourceNewlines = printerOptions.preserveSourceNewlines; // Can be overridden inside nodes with the `IgnoreSourceNewlines` emit flag.
1393-
let nextListElementPos: number | undefined; // See comment in `getLeadingLineTerminatorCount`.
1394-
1395-
let writer: EmitTextWriter;
1396-
let ownWriter: EmitTextWriter; // Reusable `EmitTextWriter` for basic printing.
1397-
let write = writeBase;
1398-
let isOwnFileEmit: boolean;
1399-
const bundleFileInfo = printerOptions.writeBundleFileInfo ? { sections: [] } as BundleFileInfo : undefined;
1400-
const relativeToBuildInfo = bundleFileInfo ? Debug.checkDefined(printerOptions.relativeToBuildInfo) : undefined;
1401-
const recordInternalSection = printerOptions.recordInternalSection;
1402-
let sourceFileTextPos = 0;
1403-
let sourceFileTextKind: BundleFileTextLikeKind = BundleFileSectionKind.Text;
1375+
var extendedDiagnostics = !!printerOptions.extendedDiagnostics;
1376+
var newLine = getNewLineCharacter(printerOptions);
1377+
var moduleKind = getEmitModuleKind(printerOptions);
1378+
var bundledHelpers = new Map<string, boolean>();
1379+
1380+
var currentSourceFile: SourceFile | undefined;
1381+
var nodeIdToGeneratedName: string[]; // Map of generated names for specific nodes.
1382+
var nodeIdToGeneratedPrivateName: string[]; // Map of generated names for specific nodes.
1383+
var autoGeneratedIdToGeneratedName: string[]; // Map of generated names for temp and loop variables.
1384+
var generatedNames: Set<string>; // Set of names generated by the NameGenerator.
1385+
var formattedNameTempFlagsStack: (Map<string, TempFlags> | undefined)[];
1386+
var formattedNameTempFlags: Map<string, TempFlags> | undefined;
1387+
var privateNameTempFlagsStack: TempFlags[]; // Stack of enclosing name generation scopes.
1388+
var privateNameTempFlags: TempFlags; // TempFlags for the current name generation scope.
1389+
var tempFlagsStack: TempFlags[]; // Stack of enclosing name generation scopes.
1390+
var tempFlags: TempFlags; // TempFlags for the current name generation scope.
1391+
var reservedNamesStack: (Set<string> | undefined)[]; // Stack of reserved names in enclosing name generation scopes.
1392+
var reservedNames: Set<string> | undefined; // Names reserved in nested name generation scopes.
1393+
var reservedPrivateNamesStack: (Set<string> | undefined)[]; // Stack of reserved member names in enclosing name generation scopes.
1394+
var reservedPrivateNames: Set<string> | undefined; // Member names reserved in nested name generation scopes.
1395+
var preserveSourceNewlines = printerOptions.preserveSourceNewlines; // Can be overridden inside nodes with the `IgnoreSourceNewlines` emit flag.
1396+
var nextListElementPos: number | undefined; // See comment in `getLeadingLineTerminatorCount`.
1397+
1398+
var writer: EmitTextWriter;
1399+
var ownWriter: EmitTextWriter; // Reusable `EmitTextWriter` for basic printing.
1400+
var write = writeBase;
1401+
var isOwnFileEmit: boolean;
1402+
var bundleFileInfo = printerOptions.writeBundleFileInfo ? { sections: [] } as BundleFileInfo : undefined;
1403+
var relativeToBuildInfo = bundleFileInfo ? Debug.checkDefined(printerOptions.relativeToBuildInfo) : undefined;
1404+
var recordInternalSection = printerOptions.recordInternalSection;
1405+
var sourceFileTextPos = 0;
1406+
var sourceFileTextKind: BundleFileTextLikeKind = BundleFileSectionKind.Text;
14041407

14051408
// Source Maps
1406-
let sourceMapsDisabled = true;
1407-
let sourceMapGenerator: SourceMapGenerator | undefined;
1408-
let sourceMapSource: SourceMapSource;
1409-
let sourceMapSourceIndex = -1;
1410-
let mostRecentlyAddedSourceMapSource: SourceMapSource;
1411-
let mostRecentlyAddedSourceMapSourceIndex = -1;
1409+
var sourceMapsDisabled = true;
1410+
var sourceMapGenerator: SourceMapGenerator | undefined;
1411+
var sourceMapSource: SourceMapSource;
1412+
var sourceMapSourceIndex = -1;
1413+
var mostRecentlyAddedSourceMapSource: SourceMapSource;
1414+
var mostRecentlyAddedSourceMapSourceIndex = -1;
14121415

14131416
// Comments
1414-
let containerPos = -1;
1415-
let containerEnd = -1;
1416-
let declarationListContainerEnd = -1;
1417-
let currentLineMap: readonly number[] | undefined;
1418-
let detachedCommentsInfo: { nodePos: number, detachedCommentEndPos: number }[] | undefined;
1419-
let hasWrittenComment = false;
1420-
let commentsDisabled = !!printerOptions.removeComments;
1421-
let lastSubstitution: Node | undefined;
1422-
let currentParenthesizerRule: ParenthesizerRule<any> | undefined;
1423-
const { enter: enterComment, exit: exitComment } = performance.createTimerIf(extendedDiagnostics, "commentTime", "beforeComment", "afterComment");
1424-
const parenthesizer = factory.parenthesizer;
1425-
const typeArgumentParenthesizerRuleSelector: OrdinalParentheizerRuleSelector<TypeNode> = {
1417+
var containerPos = -1;
1418+
var containerEnd = -1;
1419+
var declarationListContainerEnd = -1;
1420+
var currentLineMap: readonly number[] | undefined;
1421+
var detachedCommentsInfo: { nodePos: number, detachedCommentEndPos: number }[] | undefined;
1422+
var hasWrittenComment = false;
1423+
var commentsDisabled = !!printerOptions.removeComments;
1424+
var lastSubstitution: Node | undefined;
1425+
var currentParenthesizerRule: ParenthesizerRule<any> | undefined;
1426+
var { enter: enterComment, exit: exitComment } = performance.createTimerIf(extendedDiagnostics, "commentTime", "beforeComment", "afterComment");
1427+
var parenthesizer = factory.parenthesizer;
1428+
var typeArgumentParenthesizerRuleSelector: OrdinalParentheizerRuleSelector<TypeNode> = {
14261429
select: index => index === 0 ? parenthesizer.parenthesizeLeadingTypeArgument : undefined
14271430
};
1428-
const emitBinaryExpression = createEmitBinaryExpression();
1431+
var emitBinaryExpression = createEmitBinaryExpression();
1432+
/* eslint-enable no-var */
14291433

14301434
reset();
14311435
return {
@@ -1567,7 +1571,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
15671571
writeLine();
15681572
const pos = writer.getTextPos();
15691573
const savedSections = bundleFileInfo && bundleFileInfo.sections;
1570-
if (savedSections) bundleFileInfo.sections = [];
1574+
if (savedSections) bundleFileInfo!.sections = [];
15711575
print(EmitHint.Unspecified, prepend, /*sourceFile*/ undefined);
15721576
if (bundleFileInfo) {
15731577
const newSections = bundleFileInfo.sections;

src/compiler/sourcemap.ts

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,39 +35,41 @@ export interface SourceMapGeneratorOptions {
3535

3636
/** @internal */
3737
export function createSourceMapGenerator(host: EmitHost, file: string, sourceRoot: string, sourcesDirectoryPath: string, generatorOptions: SourceMapGeneratorOptions): SourceMapGenerator {
38-
const { enter, exit } = generatorOptions.extendedDiagnostics
38+
/* eslint-disable no-var */
39+
var { enter, exit } = generatorOptions.extendedDiagnostics
3940
? performance.createTimer("Source Map", "beforeSourcemap", "afterSourcemap")
4041
: performance.nullTimer;
4142

4243
// Current source map file and its index in the sources list
43-
const rawSources: string[] = [];
44-
const sources: string[] = [];
45-
const sourceToSourceIndexMap = new Map<string, number>();
46-
let sourcesContent: (string | null)[] | undefined;
44+
var rawSources: string[] = [];
45+
var sources: string[] = [];
46+
var sourceToSourceIndexMap = new Map<string, number>();
47+
var sourcesContent: (string | null)[] | undefined;
4748

48-
const names: string[] = [];
49-
let nameToNameIndexMap: Map<string, number> | undefined;
50-
const mappingCharCodes: number[] = [];
51-
let mappings = "";
49+
var names: string[] = [];
50+
var nameToNameIndexMap: Map<string, number> | undefined;
51+
var mappingCharCodes: number[] = [];
52+
var mappings = "";
5253

5354
// Last recorded and encoded mappings
54-
let lastGeneratedLine = 0;
55-
let lastGeneratedCharacter = 0;
56-
let lastSourceIndex = 0;
57-
let lastSourceLine = 0;
58-
let lastSourceCharacter = 0;
59-
let lastNameIndex = 0;
60-
let hasLast = false;
61-
62-
let pendingGeneratedLine = 0;
63-
let pendingGeneratedCharacter = 0;
64-
let pendingSourceIndex = 0;
65-
let pendingSourceLine = 0;
66-
let pendingSourceCharacter = 0;
67-
let pendingNameIndex = 0;
68-
let hasPending = false;
69-
let hasPendingSource = false;
70-
let hasPendingName = false;
55+
var lastGeneratedLine = 0;
56+
var lastGeneratedCharacter = 0;
57+
var lastSourceIndex = 0;
58+
var lastSourceLine = 0;
59+
var lastSourceCharacter = 0;
60+
var lastNameIndex = 0;
61+
var hasLast = false;
62+
63+
var pendingGeneratedLine = 0;
64+
var pendingGeneratedCharacter = 0;
65+
var pendingSourceIndex = 0;
66+
var pendingSourceLine = 0;
67+
var pendingSourceCharacter = 0;
68+
var pendingNameIndex = 0;
69+
var hasPending = false;
70+
var hasPendingSource = false;
71+
var hasPendingName = false;
72+
/* eslint-enable no-var */
7173

7274
return {
7375
getSources: () => rawSources,

src/compiler/utilities.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,9 @@ export function isTransientSymbol(symbol: Symbol): symbol is TransientSymbol {
596596
const stringWriter = createSingleLineStringWriter();
597597

598598
function createSingleLineStringWriter(): EmitTextWriter {
599-
let str = "";
599+
/* eslint-disable no-var */
600+
var str = "";
601+
/* eslint-enable no-var */
600602
const writeText: (text: string) => void = text => str += text;
601603
return {
602604
getText: () => str,
@@ -5810,12 +5812,14 @@ export function isNightly() {
58105812

58115813
/** @internal */
58125814
export function createTextWriter(newLine: string): EmitTextWriter {
5813-
let output: string;
5814-
let indent: number;
5815-
let lineStart: boolean;
5816-
let lineCount: number;
5817-
let linePos: number;
5818-
let hasTrailingComment = false;
5815+
/* eslint-disable no-var */
5816+
var output: string;
5817+
var indent: number;
5818+
var lineStart: boolean;
5819+
var lineCount: number;
5820+
var linePos: number;
5821+
var hasTrailingComment = false;
5822+
/* eslint-enable no-var */
58195823

58205824
function updateLineCountAndPosFor(s: string) {
58215825
const lineStartsOfS = computeLineStarts(s);

0 commit comments

Comments
 (0)