Skip to content

Update LKG on 08/19 #10445

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 74 additions & 50 deletions lib/tsc.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,17 @@ var ts;
return undefined;
}
ts.forEach = forEach;
function find(array, callback) {
function find(array, predicate) {
for (var i = 0, len = array.length; i < len; i++) {
var value = array[i];
if (predicate(value, i)) {
return value;
}
}
return undefined;
}
ts.find = find;
function findMap(array, callback) {
for (var i = 0, len = array.length; i < len; i++) {
var result = callback(array[i], i);
if (result) {
Expand All @@ -200,7 +210,7 @@ var ts;
}
Debug.fail();
}
ts.find = find;
ts.findMap = findMap;
function contains(array, value) {
if (array) {
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
Expand Down Expand Up @@ -1158,6 +1168,7 @@ var ts;
}
ts.getScriptKindFromFileName = getScriptKindFromFileName;
ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"];
ts.supportedTypescriptExtensionsForExtractExtension = [".d.ts", ".ts", ".tsx"];
ts.supportedJavascriptExtensions = [".js", ".jsx"];
var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions);
function getSupportedExtensions(options) {
Expand Down Expand Up @@ -1220,9 +1231,13 @@ var ts;
}
ts.removeFileExtension = removeFileExtension;
function tryRemoveExtension(path, extension) {
return fileExtensionIs(path, extension) ? path.substring(0, path.length - extension.length) : undefined;
return fileExtensionIs(path, extension) ? removeExtension(path, extension) : undefined;
}
ts.tryRemoveExtension = tryRemoveExtension;
function removeExtension(path, extension) {
return path.substring(0, path.length - extension.length);
}
ts.removeExtension = removeExtension;
function isJsxOrTsxExtension(ext) {
return ext === ".jsx" || ext === ".tsx";
}
Expand Down Expand Up @@ -2227,6 +2242,7 @@ var ts;
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}'." },
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'?" },
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." },
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." },
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}'." },
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}'." },
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}'." },
Expand Down Expand Up @@ -6230,6 +6246,10 @@ var ts;
return ts.forEach(ts.supportedTypeScriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); });
}
ts.hasTypeScriptFileExtension = hasTypeScriptFileExtension;
function tryExtractTypeScriptExtension(fileName) {
return ts.find(ts.supportedTypescriptExtensionsForExtractExtension, function (extension) { return ts.fileExtensionIs(fileName, extension); });
}
ts.tryExtractTypeScriptExtension = tryExtractTypeScriptExtension;
function getExpandedCharCodes(input) {
var output = [];
var length = input.length;
Expand Down Expand Up @@ -8837,6 +8857,8 @@ var ts;
return parseTypeOfExpression();
case 103:
return parseVoidExpression();
case 119:
return parseAwaitExpression();
case 25:
return parseTypeAssertion();
default:
Expand Down Expand Up @@ -13902,7 +13924,7 @@ var ts;
}
}
function getDeclarationOfAliasSymbol(symbol) {
return ts.find(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; });
return ts.findMap(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; });
}
function getTargetOfImportEqualsDeclaration(node) {
if (node.moduleReference.kind === 240) {
Expand Down Expand Up @@ -14162,7 +14184,14 @@ var ts;
}
}
if (moduleNotFoundError) {
error(moduleReferenceLiteral, moduleNotFoundError, moduleName);
var tsExtension = ts.tryExtractTypeScriptExtension(moduleName);
if (tsExtension) {
var diag = ts.Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
error(moduleReferenceLiteral, diag, tsExtension, ts.removeExtension(moduleName, tsExtension));
}
else {
error(moduleReferenceLiteral, moduleNotFoundError, moduleName);
}
}
return undefined;
}
Expand Down Expand Up @@ -15526,25 +15555,23 @@ var ts;
return checkIdentifier(declaration.name);
}
if (ts.isBindingPattern(declaration.name)) {
return getTypeFromBindingPattern(declaration.name, false);
return getTypeFromBindingPattern(declaration.name, false, true);
}
return undefined;
}
function getTypeFromBindingElement(element, includePatternInType) {
function getTypeFromBindingElement(element, includePatternInType, reportErrors) {
if (element.initializer) {
var type = checkExpressionCached(element.initializer);
reportErrorsFromWidening(element, type);
return getWidenedType(type);
return checkExpressionCached(element.initializer);
}
if (ts.isBindingPattern(element.name)) {
return getTypeFromBindingPattern(element.name, includePatternInType);
return getTypeFromBindingPattern(element.name, includePatternInType, reportErrors);
}
if (compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
if (reportErrors && compilerOptions.noImplicitAny && !declarationBelongsToPrivateAmbientMember(element)) {
reportImplicitAnyError(element, anyType);
}
return anyType;
}
function getTypeFromObjectBindingPattern(pattern, includePatternInType) {
function getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors) {
var members = ts.createMap();
var hasComputedProperties = false;
ts.forEach(pattern.elements, function (e) {
Expand All @@ -15556,7 +15583,7 @@ var ts;
var text = getTextOfPropertyName(name);
var flags = 4 | 67108864 | (e.initializer ? 536870912 : 0);
var symbol = createSymbol(flags, text);
symbol.type = getTypeFromBindingElement(e, includePatternInType);
symbol.type = getTypeFromBindingElement(e, includePatternInType, reportErrors);
symbol.bindingElement = e;
members[symbol.name] = symbol;
});
Expand All @@ -15569,23 +15596,23 @@ var ts;
}
return result;
}
function getTypeFromArrayBindingPattern(pattern, includePatternInType) {
function getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors) {
var elements = pattern.elements;
if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) {
return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType;
}
var elementTypes = ts.map(elements, function (e) { return e.kind === 193 ? anyType : getTypeFromBindingElement(e, includePatternInType); });
var elementTypes = ts.map(elements, function (e) { return e.kind === 193 ? anyType : getTypeFromBindingElement(e, includePatternInType, reportErrors); });
if (includePatternInType) {
var result = createNewTupleType(elementTypes);
result.pattern = pattern;
return result;
}
return createTupleType(elementTypes);
}
function getTypeFromBindingPattern(pattern, includePatternInType) {
function getTypeFromBindingPattern(pattern, includePatternInType, reportErrors) {
return pattern.kind === 167
? getTypeFromObjectBindingPattern(pattern, includePatternInType)
: getTypeFromArrayBindingPattern(pattern, includePatternInType);
? getTypeFromObjectBindingPattern(pattern, includePatternInType, reportErrors)
: getTypeFromArrayBindingPattern(pattern, includePatternInType, reportErrors);
}
function getWidenedTypeForVariableLikeDeclaration(declaration, reportErrors) {
var type = getTypeForVariableLikeDeclaration(declaration, true);
Expand Down Expand Up @@ -20649,7 +20676,7 @@ var ts;
}
}
if (ts.isBindingPattern(declaration.name)) {
return getTypeFromBindingPattern(declaration.name, true);
return getTypeFromBindingPattern(declaration.name, true, false);
}
if (ts.isBindingPattern(declaration.parent)) {
var parentDeclaration = declaration.parent.parent;
Expand Down Expand Up @@ -24016,12 +24043,7 @@ var ts;
checkSignatureDeclaration(node);
if (node.kind === 149) {
if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 32768)) {
if (node.flags & 65536) {
if (compilerOptions.noImplicitReturns) {
error(node.name, ts.Diagnostics.Not_all_code_paths_return_a_value);
}
}
else {
if (!(node.flags & 65536)) {
error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value);
}
}
Expand All @@ -24043,7 +24065,10 @@ var ts;
checkAccessorDeclarationTypesIdentical(node, otherAccessor, getThisTypeOfDeclaration, ts.Diagnostics.get_and_set_accessor_must_have_the_same_this_type);
}
}
getTypeOfAccessors(getSymbolOfNode(node));
var returnType = getTypeOfAccessors(getSymbolOfNode(node));
if (node.kind === 149) {
checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnType);
}
}
if (node.parent.kind !== 171) {
checkSourceElement(node.body);
Expand Down Expand Up @@ -36934,45 +36959,43 @@ var ts;
}
ts.directoryProbablyExists = directoryProbablyExists;
function loadModuleFromFile(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
var resolvedByAddingOrKeepingExtension = loadModuleFromFileWorker(candidate, extensions, failedLookupLocation, onlyRecordFailures, state);
if (resolvedByAddingOrKeepingExtension) {
return resolvedByAddingOrKeepingExtension;
var resolvedByAddingExtension = tryAddingExtensions(candidate, extensions, failedLookupLocation, onlyRecordFailures, state);
if (resolvedByAddingExtension) {
return resolvedByAddingExtension;
}
if (ts.hasJavaScriptFileExtension(candidate)) {
var extensionless = ts.removeFileExtension(candidate);
if (state.traceEnabled) {
var extension = candidate.substring(extensionless.length);
trace(state.host, ts.Diagnostics.File_name_0_has_a_1_extension_stripping_it, candidate, extension);
}
return loadModuleFromFileWorker(extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
return tryAddingExtensions(extensionless, extensions, failedLookupLocation, onlyRecordFailures, state);
}
}
function loadModuleFromFileWorker(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
function tryAddingExtensions(candidate, extensions, failedLookupLocation, onlyRecordFailures, state) {
if (!onlyRecordFailures) {
var directory = ts.getDirectoryPath(candidate);
if (directory) {
onlyRecordFailures = !directoryProbablyExists(directory, state.host);
}
}
return ts.forEach(extensions, tryLoad);
function tryLoad(ext) {
if (state.skipTsx && ts.isJsxOrTsxExtension(ext)) {
return undefined;
}
var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext;
if (!onlyRecordFailures && state.host.fileExists(fileName)) {
if (state.traceEnabled) {
trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName);
}
return fileName;
return ts.forEach(extensions, function (ext) {
return !(state.skipTsx && ts.isJsxOrTsxExtension(ext)) && tryFile(candidate + ext, failedLookupLocation, onlyRecordFailures, state);
});
}
function tryFile(fileName, failedLookupLocation, onlyRecordFailures, state) {
if (!onlyRecordFailures && state.host.fileExists(fileName)) {
if (state.traceEnabled) {
trace(state.host, ts.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, fileName);
}
else {
if (state.traceEnabled) {
trace(state.host, ts.Diagnostics.File_0_does_not_exist, fileName);
}
failedLookupLocation.push(fileName);
return undefined;
return fileName;
}
else {
if (state.traceEnabled) {
trace(state.host, ts.Diagnostics.File_0_does_not_exist, fileName);
}
failedLookupLocation.push(fileName);
return undefined;
}
}
function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, state) {
Expand All @@ -36984,7 +37007,8 @@ var ts;
}
var typesFile = tryReadTypesSection(packageJsonPath, candidate, state);
if (typesFile) {
var result = loadModuleFromFile(typesFile, extensions, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host), state);
var onlyRecordFailures_1 = !directoryProbablyExists(ts.getDirectoryPath(typesFile), state.host);
var result = tryFile(typesFile, failedLookupLocation, onlyRecordFailures_1, state);
if (result) {
return result;
}
Expand Down
Loading