@@ -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