@@ -191,7 +191,17 @@ var ts;
191
191
return undefined;
192
192
}
193
193
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) {
195
205
for (var i = 0, len = array.length; i < len; i++) {
196
206
var result = callback(array[i], i);
197
207
if (result) {
@@ -200,7 +210,7 @@ var ts;
200
210
}
201
211
Debug.fail();
202
212
}
203
- ts.find = find ;
213
+ ts.findMap = findMap ;
204
214
function contains(array, value) {
205
215
if (array) {
206
216
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
@@ -1158,6 +1168,7 @@ var ts;
1158
1168
}
1159
1169
ts.getScriptKindFromFileName = getScriptKindFromFileName;
1160
1170
ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"];
1171
+ ts.supportedTypescriptExtensionsForExtractExtension = [".d.ts", ".ts", ".tsx"];
1161
1172
ts.supportedJavascriptExtensions = [".js", ".jsx"];
1162
1173
var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions);
1163
1174
function getSupportedExtensions(options) {
@@ -1220,9 +1231,13 @@ var ts;
1220
1231
}
1221
1232
ts.removeFileExtension = removeFileExtension;
1222
1233
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;
1224
1235
}
1225
1236
ts.tryRemoveExtension = tryRemoveExtension;
1237
+ function removeExtension(path, extension) {
1238
+ return path.substring(0, path.length - extension.length);
1239
+ }
1240
+ ts.removeExtension = removeExtension;
1226
1241
function isJsxOrTsxExtension(ext) {
1227
1242
return ext === ".jsx" || ext === ".tsx";
1228
1243
}
@@ -2227,6 +2242,7 @@ var ts;
2227
2242
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}'." },
2228
2243
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'?" },
2229
2244
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." },
2230
2246
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}'." },
2231
2247
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}'." },
2232
2248
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;
6230
6246
return ts.forEach(ts.supportedTypeScriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); });
6231
6247
}
6232
6248
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;
6233
6253
function getExpandedCharCodes(input) {
6234
6254
var output = [];
6235
6255
var length = input.length;
@@ -8837,6 +8857,8 @@ var ts;
8837
8857
return parseTypeOfExpression();
8838
8858
case 103:
8839
8859
return parseVoidExpression();
8860
+ case 119:
8861
+ return parseAwaitExpression();
8840
8862
case 25:
8841
8863
return parseTypeAssertion();
8842
8864
default:
@@ -13902,7 +13924,7 @@ var ts;
13902
13924
}
13903
13925
}
13904
13926
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; });
13906
13928
}
13907
13929
function getTargetOfImportEqualsDeclaration(node) {
13908
13930
if (node.moduleReference.kind === 240) {
@@ -14162,7 +14184,14 @@ var ts;
14162
14184
}
14163
14185
}
14164
14186
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
+ }
14166
14195
}
14167
14196
return undefined;
14168
14197
}
@@ -15526,25 +15555,23 @@ var ts;
15526
15555
return checkIdentifier(declaration.name);
15527
15556
}
15528
15557
if (ts.isBindingPattern(declaration.name)) {
15529
- return getTypeFromBindingPattern(declaration.name, false);
15558
+ return getTypeFromBindingPattern(declaration.name, false, true );
15530
15559
}
15531
15560
return undefined;
15532
15561
}
15533
- function getTypeFromBindingElement(element, includePatternInType) {
15562
+ function getTypeFromBindingElement(element, includePatternInType, reportErrors ) {
15534
15563
if (element.initializer) {
15535
- var type = checkExpressionCached(element.initializer);
15536
- reportErrorsFromWidening(element, type);
15537
- return getWidenedType(type);
15564
+ return checkExpressionCached(element.initializer);
15538
15565
}
15539
15566
if (ts.isBindingPattern(element.name)) {
15540
- return getTypeFromBindingPattern(element.name, includePatternInType);
15567
+ return getTypeFromBindingPattern(element.name, includePatternInType, reportErrors );
15541
15568
}
15542
- if (compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
15569
+ if (reportErrors && compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
15543
15570
reportImplicitAnyError(element, anyType);
15544
15571
}
15545
15572
return anyType;
15546
15573
}
15547
- function getTypeFromObjectBindingPattern(pattern, includePatternInType) {
15574
+ function getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors ) {
15548
15575
var members = ts.createMap();
15549
15576
var hasComputedProperties = false;
15550
15577
ts.forEach(pattern.elements, function (e) {
@@ -15556,7 +15583,7 @@ var ts;
15556
15583
var text = getTextOfPropertyName(name);
15557
15584
var flags = 4 | 67108864 | (e.initializer ? 536870912 : 0);
15558
15585
var symbol = createSymbol(flags, text);
15559
- symbol.type = getTypeFromBindingElement(e, includePatternInType);
15586
+ symbol.type = getTypeFromBindingElement(e, includePatternInType, reportErrors );
15560
15587
symbol.bindingElement = e;
15561
15588
members[symbol.name] = symbol;
15562
15589
});
@@ -15569,23 +15596,23 @@ var ts;
15569
15596
}
15570
15597
return result;
15571
15598
}
15572
- function getTypeFromArrayBindingPattern(pattern, includePatternInType) {
15599
+ function getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors ) {
15573
15600
var elements = pattern.elements;
15574
15601
if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) {
15575
15602
return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType;
15576
15603
}
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 ); });
15578
15605
if (includePatternInType) {
15579
15606
var result = createNewTupleType(elementTypes);
15580
15607
result.pattern = pattern;
15581
15608
return result;
15582
15609
}
15583
15610
return createTupleType(elementTypes);
15584
15611
}
15585
- function getTypeFromBindingPattern(pattern, includePatternInType) {
15612
+ function getTypeFromBindingPattern(pattern, includePatternInType, reportErrors ) {
15586
15613
return pattern.kind === 167
15587
- ? getTypeFromObjectBindingPattern(pattern, includePatternInType)
15588
- : getTypeFromArrayBindingPattern(pattern, includePatternInType);
15614
+ ? getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors )
15615
+ : getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors );
15589
15616
}
15590
15617
function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) {
15591
15618
var type = getTypeForVariableLikeDeclaration(declaration, true);
@@ -20649,7 +20676,7 @@ var ts;
20649
20676
}
20650
20677
}
20651
20678
if (ts.isBindingPattern(declaration.name)) {
20652
- return getTypeFromBindingPattern(declaration.name, true);
20679
+ return getTypeFromBindingPattern(declaration.name, true, false );
20653
20680
}
20654
20681
if (ts.isBindingPattern(declaration.parent)) {
20655
20682
var parentDeclaration = declaration.parent.parent;
@@ -24016,12 +24043,7 @@ var ts;
24016
24043
checkSignatureDeclaration(node);
24017
24044
if (node.kind === 149) {
24018
24045
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)) {
24025
24047
error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value);
24026
24048
}
24027
24049
}
@@ -24043,7 +24065,10 @@ var ts;
24043
24065
checkAccessorDeclarationTypesIdentical(node, otherAccessor, getThisTypeOfDeclaration, ts.Diagnostics.get_and_set_accessor_must_have_the_same_this_type);
24044
24066
}
24045
24067
}
24046
- getTypeOfAccessors(getSymbolOfNode(node));
24068
+ var returnType = getTypeOfAccessors(getSymbolOfNode(node));
24069
+ if (node.kind === 149) {
24070
+ checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnType);
24071
+ }
24047
24072
}
24048
24073
if (node.parent.kind !== 171) {
24049
24074
checkSourceElement(node.body);
@@ -36934,45 +36959,43 @@ var ts;
36934
36959
}
36935
36960
ts.directoryProbablyExists = directoryProbablyExists;
36936
36961
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 ;
36940
36965
}
36941
36966
if (ts.hasJavaScriptFileExtension(candidate)) {
36942
36967
var extensionless = ts.removeFileExtension(candidate);
36943
36968
if (state.traceEnabled) {
36944
36969
var extension = candidate.substring(extensionless.length);
36945
36970
trace(state.host, ts.Diagnostics.File_name_0_has_a_1_extension_stripping_it, candidate, extension);
36946
36971
}
36947
- return loadModuleFromFileWorker (extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
36972
+ return tryAddingExtensions (extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
36948
36973
}
36949
36974
}
36950
- function loadModuleFromFileWorker (candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
36975
+ function tryAddingExtensions (candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
36951
36976
if (!onlyRecordFailures) {
36952
36977
var directory = ts.getDirectoryPath(candidate);
36953
36978
if (directory) {
36954
36979
onlyRecordFailures = !directoryProbablyExists(directory, state.host);
36955
36980
}
36956
36981
}
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);
36968
36990
}
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);
36975
36996
}
36997
+ failedLookupLocation.push(fileName);
36998
+ return undefined;
36976
36999
}
36977
37000
}
36978
37001
function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, state) {
@@ -36984,7 +37007,8 @@ var ts;
36984
37007
}
36985
37008
var typesFile = tryReadTypesSection(packageJsonPath, candidate, state);
36986
37009
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);
36988
37012
if (result) {
36989
37013
return result;
36990
37014
}
0 commit comments