Skip to content

Commit c05a866

Browse files
authored
Update LKG on 08/19 (#10445)
1 parent 7b6846d commit c05a866

File tree

6 files changed

+488
-258
lines changed

6 files changed

+488
-258
lines changed

lib/tsc.js

Lines changed: 74 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,17 @@ var ts;
191191
return undefined;
192192
}
193193
ts.forEach = forEach;
194-
function find(array, callback) {
194+
function find(array, predicate) {
195+
for (var i = 0, len = array.length; i < len; i++) {
196+
var value = array[i];
197+
if (predicate(value, i)) {
198+
return value;
199+
}
200+
}
201+
return undefined;
202+
}
203+
ts.find = find;
204+
function findMap(array, callback) {
195205
for (var i = 0, len = array.length; i < len; i++) {
196206
var result = callback(array[i], i);
197207
if (result) {
@@ -200,7 +210,7 @@ var ts;
200210
}
201211
Debug.fail();
202212
}
203-
ts.find = find;
213+
ts.findMap = findMap;
204214
function contains(array, value) {
205215
if (array) {
206216
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
@@ -1158,6 +1168,7 @@ var ts;
11581168
}
11591169
ts.getScriptKindFromFileName = getScriptKindFromFileName;
11601170
ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"];
1171+
ts.supportedTypescriptExtensionsForExtractExtension = [".d.ts", ".ts", ".tsx"];
11611172
ts.supportedJavascriptExtensions = [".js", ".jsx"];
11621173
var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions);
11631174
function getSupportedExtensions(options) {
@@ -1220,9 +1231,13 @@ var ts;
12201231
}
12211232
ts.removeFileExtension = removeFileExtension;
12221233
function tryRemoveExtension(path, extension) {
1223-
return fileExtensionIs(path, extension) ? path.substring(0, path.length - extension.length) : undefined;
1234+
return fileExtensionIs(path, extension) ? removeExtension(path, extension) : undefined;
12241235
}
12251236
ts.tryRemoveExtension = tryRemoveExtension;
1237+
function removeExtension(path, extension) {
1238+
return path.substring(0, path.length - extension.length);
1239+
}
1240+
ts.removeExtension = removeExtension;
12261241
function isJsxOrTsxExtension(ext) {
12271242
return ext === ".jsx" || ext === ".tsx";
12281243
}
@@ -2227,6 +2242,7 @@ var ts;
22272242
Cannot_find_type_definition_file_for_0: { code: 2688, category: ts.DiagnosticCategory.Error, key: "Cannot_find_type_definition_file_for_0_2688", message: "Cannot find type definition file for '{0}'." },
22282243
Cannot_extend_an_interface_0_Did_you_mean_implements: { code: 2689, category: ts.DiagnosticCategory.Error, key: "Cannot_extend_an_interface_0_Did_you_mean_implements_2689", message: "Cannot extend an interface '{0}'. Did you mean 'implements'?" },
22292244
A_class_must_be_declared_after_its_base_class: { code: 2690, category: ts.DiagnosticCategory.Error, key: "A_class_must_be_declared_after_its_base_class_2690", message: "A class must be declared after its base class." },
2245+
An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead: { code: 2691, category: ts.DiagnosticCategory.Error, key: "An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead_2691", message: "An import path cannot end with a '{0}' extension. Consider importing '{1}' instead." },
22302246
Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." },
22312247
Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." },
22322248
Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." },
@@ -6230,6 +6246,10 @@ var ts;
62306246
return ts.forEach(ts.supportedTypeScriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); });
62316247
}
62326248
ts.hasTypeScriptFileExtension = hasTypeScriptFileExtension;
6249+
function tryExtractTypeScriptExtension(fileName) {
6250+
return ts.find(ts.supportedTypescriptExtensionsForExtractExtension, function (extension) { return ts.fileExtensionIs(fileName, extension); });
6251+
}
6252+
ts.tryExtractTypeScriptExtension = tryExtractTypeScriptExtension;
62336253
function getExpandedCharCodes(input) {
62346254
var output = [];
62356255
var length = input.length;
@@ -8837,6 +8857,8 @@ var ts;
88378857
return parseTypeOfExpression();
88388858
case 103:
88398859
return parseVoidExpression();
8860+
case 119:
8861+
return parseAwaitExpression();
88408862
case 25:
88418863
return parseTypeAssertion();
88428864
default:
@@ -13902,7 +13924,7 @@ var ts;
1390213924
}
1390313925
}
1390413926
function getDeclarationOfAliasSymbol(symbol) {
13905-
return ts.find(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; });
13927+
return ts.findMap(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; });
1390613928
}
1390713929
function getTargetOfImportEqualsDeclaration(node) {
1390813930
if (node.moduleReference.kind === 240) {
@@ -14162,7 +14184,14 @@ var ts;
1416214184
}
1416314185
}
1416414186
if (moduleNotFoundError) {
14165-
error(moduleReferenceLiteral, moduleNotFoundError, moduleName);
14187+
var tsExtension = ts.tryExtractTypeScriptExtension(moduleName);
14188+
if (tsExtension) {
14189+
var diag = ts.Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
14190+
error(moduleReferenceLiteral, diag, tsExtension, ts.removeExtension(moduleName, tsExtension));
14191+
}
14192+
else {
14193+
error(moduleReferenceLiteral, moduleNotFoundError, moduleName);
14194+
}
1416614195
}
1416714196
return undefined;
1416814197
}
@@ -15526,25 +15555,23 @@ var ts;
1552615555
return checkIdentifier(declaration.name);
1552715556
}
1552815557
if (ts.isBindingPattern(declaration.name)) {
15529-
return getTypeFromBindingPattern(declaration.name, false);
15558+
return getTypeFromBindingPattern(declaration.name, false, true);
1553015559
}
1553115560
return undefined;
1553215561
}
15533-
function getTypeFromBindingElement(element, includePatternInType) {
15562+
function getTypeFromBindingElement(element, includePatternInType, reportErrors) {
1553415563
if (element.initializer) {
15535-
var type = checkExpressionCached(element.initializer);
15536-
reportErrorsFromWidening(element, type);
15537-
return getWidenedType(type);
15564+
return checkExpressionCached(element.initializer);
1553815565
}
1553915566
if (ts.isBindingPattern(element.name)) {
15540-
return getTypeFromBindingPattern(element.name, includePatternInType);
15567+
return getTypeFromBindingPattern(element.name, includePatternInType, reportErrors);
1554115568
}
15542-
if (compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
15569+
if (reportErrors && compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
1554315570
reportImplicitAnyError(element, anyType);
1554415571
}
1554515572
return anyType;
1554615573
}
15547-
function getTypeFromObjectBindingPattern(pattern, includePatternInType) {
15574+
function getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors) {
1554815575
var members = ts.createMap();
1554915576
var hasComputedProperties = false;
1555015577
ts.forEach(pattern.elements, function (e) {
@@ -15556,7 +15583,7 @@ var ts;
1555615583
var text = getTextOfPropertyName(name);
1555715584
var flags = 4 | 67108864 | (e.initializer ? 536870912 : 0);
1555815585
var symbol = createSymbol(flags, text);
15559-
symbol.type = getTypeFromBindingElement(e, includePatternInType);
15586+
symbol.type = getTypeFromBindingElement(e, includePatternInType, reportErrors);
1556015587
symbol.bindingElement = e;
1556115588
members[symbol.name] = symbol;
1556215589
});
@@ -15569,23 +15596,23 @@ var ts;
1556915596
}
1557015597
return result;
1557115598
}
15572-
function getTypeFromArrayBindingPattern(pattern, includePatternInType) {
15599+
function getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors) {
1557315600
var elements = pattern.elements;
1557415601
if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) {
1557515602
return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType;
1557615603
}
15577-
var elementTypes = ts.map(elements, function (e) { return e.kind === 193 ? anyType : getTypeFromBindingElement(e, includePatternInType); });
15604+
var elementTypes = ts.map(elements, function (e) { return e.kind === 193 ? anyType : getTypeFromBindingElement(e, includePatternInType, reportErrors); });
1557815605
if (includePatternInType) {
1557915606
var result = createNewTupleType(elementTypes);
1558015607
result.pattern = pattern;
1558115608
return result;
1558215609
}
1558315610
return createTupleType(elementTypes);
1558415611
}
15585-
function getTypeFromBindingPattern(pattern, includePatternInType) {
15612+
function getTypeFromBindingPattern(pattern, includePatternInType, reportErrors) {
1558615613
return pattern.kind === 167
15587-
? getTypeFromObjectBindingPattern(pattern, includePatternInType)
15588-
: getTypeFromArrayBindingPattern(pattern, includePatternInType);
15614+
? getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors)
15615+
: getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors);
1558915616
}
1559015617
function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) {
1559115618
var type = getTypeForVariableLikeDeclaration(declaration, true);
@@ -20649,7 +20676,7 @@ var ts;
2064920676
}
2065020677
}
2065120678
if (ts.isBindingPattern(declaration.name)) {
20652-
return getTypeFromBindingPattern(declaration.name, true);
20679+
return getTypeFromBindingPattern(declaration.name, true, false);
2065320680
}
2065420681
if (ts.isBindingPattern(declaration.parent)) {
2065520682
var parentDeclaration = declaration.parent.parent;
@@ -24016,12 +24043,7 @@ var ts;
2401624043
checkSignatureDeclaration(node);
2401724044
if (node.kind === 149) {
2401824045
if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768)) {
24019-
if (node.flags & 65536) {
24020-
if (compilerOptions.noImplicitReturns) {
24021-
error(node.name, ts.Diagnostics.Not_all_code_paths_return_a_value);
24022-
}
24023-
}
24024-
else {
24046+
if (!(node.flags & 65536)) {
2402524047
error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value);
2402624048
}
2402724049
}
@@ -24043,7 +24065,10 @@ var ts;
2404324065
checkAccessorDeclarationTypesIdentical(node, otherAccessor, getThisTypeOfDeclaration, ts.Diagnostics.get_and_set_accessor_must_have_the_same_this_type);
2404424066
}
2404524067
}
24046-
getTypeOfAccessors(getSymbolOfNode(node));
24068+
var returnType = getTypeOfAccessors(getSymbolOfNode(node));
24069+
if (node.kind === 149) {
24070+
checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnType);
24071+
}
2404724072
}
2404824073
if (node.parent.kind !== 171) {
2404924074
checkSourceElement(node.body);
@@ -36934,45 +36959,43 @@ var ts;
3693436959
}
3693536960
ts.directoryProbablyExists = directoryProbablyExists;
3693636961
function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
36937-
var resolvedByAddingOrKeepingExtension = loadModuleFromFileWorker(candidate, extensions, failedLookupLocation, onlyRecordFailures, state);
36938-
if (resolvedByAddingOrKeepingExtension) {
36939-
return resolvedByAddingOrKeepingExtension;
36962+
var resolvedByAddingExtension = tryAddingExtensions(candidate, extensions, failedLookupLocation, onlyRecordFailures, state);
36963+
if (resolvedByAddingExtension) {
36964+
return resolvedByAddingExtension;
3694036965
}
3694136966
if (ts.hasJavaScriptFileExtension(candidate)) {
3694236967
var extensionless = ts.removeFileExtension(candidate);
3694336968
if (state.traceEnabled) {
3694436969
var extension = candidate.substring(extensionless.length);
3694536970
trace(state.host, ts.Diagnostics.File_name_0_has_a_1_extension_stripping_it, candidate, extension);
3694636971
}
36947-
return loadModuleFromFileWorker(extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
36972+
return tryAddingExtensions(extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
3694836973
}
3694936974
}
36950-
function loadModuleFromFileWorker(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
36975+
function tryAddingExtensions(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
3695136976
if (!onlyRecordFailures) {
3695236977
var directory = ts.getDirectoryPath(candidate);
3695336978
if (directory) {
3695436979
onlyRecordFailures = !directoryProbablyExists(directory, state.host);
3695536980
}
3695636981
}
36957-
return ts.forEach(extensions, tryLoad);
36958-
function tryLoad(ext) {
36959-
if (state.skipTsx && ts.isJsxOrTsxExtension(ext)) {
36960-
return undefined;
36961-
}
36962-
var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext;
36963-
if (!onlyRecordFailures && state.host.fileExists(fileName)) {
36964-
if (state.traceEnabled) {
36965-
trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName);
36966-
}
36967-
return fileName;
36982+
return ts.forEach(extensions, function (ext) {
36983+
return !(state.skipTsx && ts.isJsxOrTsxExtension(ext)) && tryFile(candidate + ext, failedLookupLocation, onlyRecordFailures, state);
36984+
});
36985+
}
36986+
function tryFile(fileName, failedLookupLocation, onlyRecordFailures, state) {
36987+
if (!onlyRecordFailures && state.host.fileExists(fileName)) {
36988+
if (state.traceEnabled) {
36989+
trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName);
3696836990
}
36969-
else {
36970-
if (state.traceEnabled) {
36971-
trace(state.host, ts.Diagnostics.File_0_does_not_exist, fileName);
36972-
}
36973-
failedLookupLocation.push(fileName);
36974-
return undefined;
36991+
return fileName;
36992+
}
36993+
else {
36994+
if (state.traceEnabled) {
36995+
trace(state.host, ts.Diagnostics.File_0_does_not_exist, fileName);
3697536996
}
36997+
failedLookupLocation.push(fileName);
36998+
return undefined;
3697636999
}
3697737000
}
3697837001
function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, state) {
@@ -36984,7 +37007,8 @@ var ts;
3698437007
}
3698537008
var typesFile = tryReadTypesSection(packageJsonPath, candidate, state);
3698637009
if (typesFile) {
36987-
var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state);
37010+
var onlyRecordFailures_1 = !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host);
37011+
var result = tryFile(typesFile, failedLookupLocation, onlyRecordFailures_1, state);
3698837012
if (result) {
3698937013
return result;
3699037014
}

0 commit comments

Comments
 (0)