Skip to content

Commit f08cfda

Browse files
author
Andy
authored
Merge pull request #11709 from Microsoft/compiler_diagnostic_strings
Type arguments to formatStringFromArgs as strings instead of implicitly stringifying
2 parents ff17eed + 8dc9523 commit f08cfda

File tree

8 files changed

+28
-31
lines changed

8 files changed

+28
-31
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ namespace ts {
368368
return emitResolver;
369369
}
370370

371-
function error(location: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): void {
371+
function error(location: Node, message: DiagnosticMessage, arg0?: string | number, arg1?: string | number, arg2?: string | number): void {
372372
const diagnostic = location
373373
? createDiagnosticForNode(location, message, arg0, arg1, arg2)
374374
: createCompilerDiagnostic(message, arg0, arg1, arg2);
@@ -8537,7 +8537,7 @@ namespace ts {
85378537
// An evolving array type tracks the element types that have so far been seen in an
85388538
// 'x.push(value)' or 'x[n] = value' operation along the control flow graph. Evolving
85398539
// array types are ultimately converted into manifest array types (using getFinalArrayType)
8540-
// and never escape the getFlowTypeOfReference function.
8540+
// and never escape the getFlowTypeOfReference function.
85418541
function createEvolvingArrayType(elementType: Type): AnonymousType {
85428542
const result = <AnonymousType>createObjectType(TypeFlags.Anonymous);
85438543
result.elementType = elementType;

src/compiler/commandLineParser.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,10 +515,7 @@ namespace ts {
515515

516516
/* @internal */
517517
export function createCompilerDiagnosticForInvalidCustomType(opt: CommandLineOptionOfCustomType): Diagnostic {
518-
const namesOfType: string[] = [];
519-
for (const key in opt.type) {
520-
namesOfType.push(` '${key}'`);
521-
}
518+
const namesOfType = Object.keys(opt.type).map(key => `'${key}'`).join(", ");
522519
return createCompilerDiagnostic(Diagnostics.Argument_for_0_option_must_be_Colon_1, `--${opt.name}`, namesOfType);
523520
}
524521

src/compiler/core.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ namespace ts {
940940
}
941941
}
942942

943-
function formatStringFromArgs(text: string, args: { [index: number]: any; }, baseIndex?: number): string {
943+
function formatStringFromArgs(text: string, args: { [index: number]: string; }, baseIndex?: number): string {
944944
baseIndex = baseIndex || 0;
945945

946946
return text.replace(/{(\d+)}/g, (match, index?) => args[+index + baseIndex]);
@@ -952,7 +952,7 @@ namespace ts {
952952
return localizedDiagnosticMessages && localizedDiagnosticMessages[message.key] || message.message;
953953
}
954954

955-
export function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage, ...args: any[]): Diagnostic;
955+
export function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage, ...args: (string | number)[]): Diagnostic;
956956
export function createFileDiagnostic(file: SourceFile, start: number, length: number, message: DiagnosticMessage): Diagnostic {
957957
const end = start + length;
958958

@@ -992,7 +992,7 @@ namespace ts {
992992
return text;
993993
}
994994

995-
export function createCompilerDiagnostic(message: DiagnosticMessage, ...args: any[]): Diagnostic;
995+
export function createCompilerDiagnostic(message: DiagnosticMessage, ...args: (string | number)[]): Diagnostic;
996996
export function createCompilerDiagnostic(message: DiagnosticMessage): Diagnostic {
997997
let text = getLocaleSpecificMessage(message);
998998

src/compiler/utilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ namespace ts {
503503
return getFullWidth(name) === 0 ? "(Missing)" : getTextOfNode(name);
504504
}
505505

506-
export function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): Diagnostic {
506+
export function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: string | number, arg1?: string | number, arg2?: string | number): Diagnostic {
507507
const sourceFile = getSourceFileOfNode(node);
508508
const span = getErrorSpanForNode(sourceFile, node);
509509
return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2);

src/harness/unittests/commandLineParsing.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ namespace ts {
6060
assertParseResult(["--lib", "es5,invalidOption", "0.ts"],
6161
{
6262
errors: [{
63-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
63+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
6464
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
6565
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
6666

@@ -87,7 +87,7 @@ namespace ts {
8787
start: undefined,
8888
length: undefined,
8989
}, {
90-
messageText: "Argument for '--jsx' option must be: 'preserve', 'react'",
90+
messageText: "Argument for '--jsx' option must be: 'preserve', 'react'",
9191
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
9292
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
9393

@@ -113,7 +113,7 @@ namespace ts {
113113
start: undefined,
114114
length: undefined,
115115
}, {
116-
messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'",
116+
messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'",
117117
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
118118
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
119119

@@ -139,7 +139,7 @@ namespace ts {
139139
start: undefined,
140140
length: undefined,
141141
}, {
142-
messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'",
142+
messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'",
143143
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
144144
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
145145

@@ -165,7 +165,7 @@ namespace ts {
165165
start: undefined,
166166
length: undefined,
167167
}, {
168-
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017'",
168+
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017'",
169169
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
170170
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
171171

@@ -191,7 +191,7 @@ namespace ts {
191191
start: undefined,
192192
length: undefined,
193193
}, {
194-
messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'",
194+
messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'",
195195
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
196196
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
197197

@@ -263,7 +263,7 @@ namespace ts {
263263
assertParseResult(["--lib", "es5,", "es7", "0.ts"],
264264
{
265265
errors: [{
266-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
266+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
267267
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
268268
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
269269

@@ -283,7 +283,7 @@ namespace ts {
283283
assertParseResult(["--lib", "es5, ", "es7", "0.ts"],
284284
{
285285
errors: [{
286-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
286+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
287287
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
288288
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
289289

src/harness/unittests/convertCompilerOptionsFromJson.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ namespace ts {
9494
file: undefined,
9595
start: 0,
9696
length: 0,
97-
messageText: "Argument for '--jsx' option must be: 'preserve', 'react'",
97+
messageText: "Argument for '--jsx' option must be: 'preserve', 'react'",
9898
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
9999
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
100100
}]
@@ -122,7 +122,7 @@ namespace ts {
122122
file: undefined,
123123
start: 0,
124124
length: 0,
125-
messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'",
125+
messageText: "Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'",
126126
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
127127
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
128128
}]
@@ -150,7 +150,7 @@ namespace ts {
150150
file: undefined,
151151
start: 0,
152152
length: 0,
153-
messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'",
153+
messageText: "Argument for '--newLine' option must be: 'crlf', 'lf'",
154154
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
155155
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
156156
}]
@@ -176,7 +176,7 @@ namespace ts {
176176
file: undefined,
177177
start: 0,
178178
length: 0,
179-
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017'",
179+
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017'",
180180
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
181181
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
182182
}]
@@ -202,7 +202,7 @@ namespace ts {
202202
file: undefined,
203203
start: 0,
204204
length: 0,
205-
messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'",
205+
messageText: "Argument for '--moduleResolution' option must be: 'node', 'classic'",
206206
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
207207
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
208208
}]
@@ -233,7 +233,7 @@ namespace ts {
233233
file: undefined,
234234
start: 0,
235235
length: 0,
236-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
236+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
237237
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
238238
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
239239
}]
@@ -264,7 +264,7 @@ namespace ts {
264264
file: undefined,
265265
start: 0,
266266
length: 0,
267-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
267+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
268268
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
269269
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
270270
}]
@@ -295,7 +295,7 @@ namespace ts {
295295
file: undefined,
296296
start: 0,
297297
length: 0,
298-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
298+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
299299
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
300300
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
301301
}]
@@ -326,7 +326,7 @@ namespace ts {
326326
file: undefined,
327327
start: 0,
328328
length: 0,
329-
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
329+
messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory'",
330330
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
331331
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
332332
}]
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
1+
error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
22

33

4-
!!! error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
4+
!!! error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
55
==== file.ts (0 errors) ====
66

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
1+
error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
22

33

4-
!!! error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
4+
!!! error TS6046: Argument for '--module' option must be: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015'
55
==== file.ts (0 errors) ====
66

0 commit comments

Comments
 (0)