Updated LKG

This commit is contained in:
Ron Buckton 2015-05-20 10:24:19 -07:00
parent e76f920e75
commit cfff30914c
8 changed files with 795 additions and 399 deletions

View File

@ -4766,6 +4766,7 @@ interface PromiseLike<T> {
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
}
/**
@ -4779,6 +4780,7 @@ interface Promise<T> {
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): Promise<TResult>;
/**
* Attaches a callback for only the rejection of the Promise.

2
bin/lib.es6.d.ts vendored
View File

@ -4766,6 +4766,7 @@ interface PromiseLike<T> {
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
}
/**
@ -4779,6 +4780,7 @@ interface Promise<T> {
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): Promise<TResult>;
/**
* Attaches a callback for only the rejection of the Promise.

View File

@ -431,9 +431,13 @@ var ts;
return 3;
return 2;
}
if (path.lastIndexOf("file:///", 0) === 0) {
return "file:///".length;
}
var idx = path.indexOf('://');
if (idx !== -1)
return idx + 3;
if (idx !== -1) {
return idx + "://".length;
}
return 0;
}
ts.getRootLength = getRootLength;
@ -1079,8 +1083,8 @@ var ts;
Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." },
Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." },
Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." },
Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--separateCompilation' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--isolatedModules' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--isolatedModules' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
@ -1363,11 +1367,11 @@ var ts;
Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." },
Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." },
Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." },
Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." },
Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." },
Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." },
Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." },
Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_isolatedModules: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'isolatedModules'." },
Option_declaration_cannot_be_specified_with_option_isolatedModules: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'isolatedModules'." },
Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'isolatedModules'." },
Option_out_cannot_be_specified_with_option_isolatedModules: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'isolatedModules'." },
Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'isolatedModules' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_inlineSourceMap: { code: 5048, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'inlineSourceMap'." },
Option_sourceRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5049, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified with option 'inlineSourceMap'." },
Option_mapRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5050, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified with option 'inlineSourceMap'." },
@ -4410,7 +4414,7 @@ var ts;
function shouldEmitToOwnFile(sourceFile, compilerOptions) {
if (!isDeclarationFile(sourceFile)) {
if ((isExternalModule(sourceFile) || !compilerOptions.out)) {
return compilerOptions.separateCompilation || !ts.fileExtensionIs(sourceFile.fileName, ".js");
return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js");
}
return false;
}
@ -9117,7 +9121,7 @@ var ts;
var symbol = getSymbolOfNode(node);
var target = resolveAlias(symbol);
if (target) {
var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) ||
var markAlias = (target === unknownSymbol && compilerOptions.isolatedModules) ||
(target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target));
if (markAlias) {
markAliasSymbolAsReferenced(symbol);
@ -10427,7 +10431,10 @@ var ts;
function getTypeOfAlias(symbol) {
var links = getSymbolLinks(symbol);
if (!links.type) {
links.type = getTypeOfSymbol(resolveAlias(symbol));
var targetSymbol = resolveAlias(symbol);
links.type = targetSymbol.flags & 107455
? getTypeOfSymbol(targetSymbol)
: unknownType;
}
return links.type;
}
@ -11441,7 +11448,13 @@ var ts;
}
return false;
}
var removeSubtypesStack = [];
function removeSubtypes(types) {
var typeListId = getTypeListId(types);
if (removeSubtypesStack.lastIndexOf(typeListId) >= 0) {
return;
}
removeSubtypesStack.push(typeListId);
var i = types.length;
while (i > 0) {
i--;
@ -11449,6 +11462,7 @@ var ts;
types.splice(i, 1);
}
}
removeSubtypesStack.pop();
}
function containsAnyType(types) {
for (var _i = 0; _i < types.length; _i++) {
@ -13004,31 +13018,33 @@ var ts;
if (!isTypeSubtypeOf(rightType, globalFunctionType)) {
return type;
}
var targetType;
var prototypeProperty = getPropertyOfType(rightType, "prototype");
if (prototypeProperty) {
var targetType = getTypeOfSymbol(prototypeProperty);
if (targetType !== anyType) {
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
if (type.flags & 16384) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
var prototypePropertyType = getTypeOfSymbol(prototypeProperty);
if (prototypePropertyType !== anyType) {
targetType = prototypePropertyType;
}
}
var constructSignatures;
if (rightType.flags & 2048) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
if (!targetType) {
var constructSignatures;
if (rightType.flags & 2048) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
}
else if (rightType.flags & 32768) {
constructSignatures = getSignaturesOfType(rightType, 1);
}
if (constructSignatures && constructSignatures.length) {
targetType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
}
}
else if (rightType.flags & 32768) {
constructSignatures = getSignaturesOfType(rightType, 1);
}
if (constructSignatures && constructSignatures.length !== 0) {
var instanceType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
if (targetType) {
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
if (type.flags & 16384) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, instanceType); }));
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
return instanceType;
}
return type;
}
@ -15529,7 +15545,7 @@ var ts;
function checkTypeNodeAsExpression(node) {
if (node && node.kind === 142) {
var type = getTypeFromTypeNode(node);
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.separateCompilation;
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.isolatedModules;
if (!type || (!shouldCheckIfUnknownType && type.flags & (1048703 | 132 | 258))) {
return;
}
@ -16362,7 +16378,7 @@ var ts;
checkKindsOfPropertyMemberOverrides(type, baseType);
}
}
if (baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) {
if (baseTypes.length || (baseTypeNode && compilerOptions.isolatedModules)) {
checkExpressionOrQualifiedName(baseTypeNode.expression);
}
var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node);
@ -16706,8 +16722,8 @@ var ts;
checkExportsOnMergedDeclarations(node);
computeEnumMemberValues(node);
var enumIsConst = ts.isConst(node);
if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided);
if (compilerOptions.isolatedModules && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided);
}
var enumSymbol = getSymbolOfNode(node);
var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind);
@ -16779,7 +16795,7 @@ var ts;
if (symbol.flags & 512
&& symbol.declarations.length > 1
&& !ts.isInAmbientContext(node)
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) {
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules)) {
var firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol);
if (firstNonAmbientClassOrFunc) {
if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(firstNonAmbientClassOrFunc)) {
@ -17106,6 +17122,7 @@ var ts;
break;
case 135:
case 134:
ts.forEach(node.decorators, checkFunctionExpressionBodies);
ts.forEach(node.parameters, checkFunctionExpressionBodies);
if (ts.isObjectLiteralMethod(node)) {
checkFunctionExpressionOrObjectLiteralMethodBody(node);
@ -17120,6 +17137,7 @@ var ts;
case 193:
checkFunctionExpressionBodies(node.expression);
break;
case 131:
case 130:
case 133:
case 132:
@ -17701,7 +17719,7 @@ var ts;
}
function isAliasResolvedToValue(symbol) {
var target = resolveAlias(symbol);
if (target === unknownSymbol && compilerOptions.separateCompilation) {
if (target === unknownSymbol && compilerOptions.isolatedModules) {
return true;
}
return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target);
@ -21259,7 +21277,7 @@ var ts;
}
return true;
}
function emitListWithSpread(elements, multiLine, trailingComma) {
function emitListWithSpread(elements, alwaysCopy, multiLine, trailingComma) {
var pos = 0;
var group = 0;
var length = elements.length;
@ -21275,6 +21293,9 @@ var ts;
e = e.expression;
emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e));
pos++;
if (pos === length && group === 0 && alwaysCopy && e.kind !== 154) {
write(".slice()");
}
}
else {
var i = pos;
@ -21312,7 +21333,7 @@ var ts;
write("]");
}
else {
emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma);
emitListWithSpread(elements, true, (node.flags & 512) !== 0, elements.hasTrailingComma);
}
}
function emitObjectLiteralBody(node, numElements) {
@ -21528,7 +21549,7 @@ var ts;
}
}
function tryEmitConstantValue(node) {
if (compilerOptions.separateCompilation) {
if (compilerOptions.isolatedModules) {
return false;
}
var constantValue = resolver.getConstantValue(node);
@ -21638,7 +21659,7 @@ var ts;
write("void 0");
}
write(", ");
emitListWithSpread(node.arguments, false, false);
emitListWithSpread(node.arguments, false, false, false);
write(")");
}
function emitCallExpression(node) {
@ -22266,7 +22287,7 @@ var ts;
if (node.flags & 1) {
writeLine();
emitStart(node);
if (compilerOptions.module === 4) {
if (compilerOptions.module === 4 && node.parent === currentSourceFile) {
write(exportFunctionForFile + "(\"");
if (node.flags & 256) {
write("default");
@ -23622,21 +23643,23 @@ var ts;
}
function shouldEmitEnumDeclaration(node) {
var isConstEnum = ts.isConst(node);
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation;
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.isolatedModules;
}
function emitEnumDeclaration(node) {
if (!shouldEmitEnumDeclaration(node)) {
return;
}
if (!(node.flags & 1) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
if (!shouldHoistDeclarationInSystemJsModule(node)) {
if (!(node.flags & 1) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
writeLine();
emitStart(node);
@ -23658,7 +23681,7 @@ var ts;
emitModuleMemberName(node);
write(" = {}));");
emitEnd(node);
if (!isES6ExportedDeclaration(node) && node.flags & 1) {
if (!isES6ExportedDeclaration(node) && node.flags & 1 && !shouldHoistDeclarationInSystemJsModule(node)) {
writeLine();
emitStart(node);
write("var ");
@ -23669,6 +23692,14 @@ var ts;
write(";");
}
if (languageVersion < 2 && node.parent === currentSourceFile) {
if (compilerOptions.module === 4 && (node.flags & 1)) {
writeLine();
write(exportFunctionForFile + "(\"");
emitDeclarationName(node);
write("\", ");
emitDeclarationName(node);
write(")");
}
emitExportMemberAssignments(node.name);
}
}
@ -23707,7 +23738,7 @@ var ts;
}
}
function shouldEmitModuleDeclaration(node) {
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation);
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules);
}
function isModuleMergedWithES6Class(node) {
return languageVersion === 2 && !!(resolver.getNodeCheckFlags(node) & 2048);
@ -24255,12 +24286,25 @@ var ts;
if (hoistedVars) {
writeLine();
write("var ");
var seen = {};
for (var i = 0; i < hoistedVars.length; ++i) {
var local = hoistedVars[i];
var name_21 = local.kind === 65
? local
: local.name;
if (name_21) {
var text = ts.unescapeIdentifier(name_21.text);
if (ts.hasProperty(seen, text)) {
continue;
}
else {
seen[text] = text;
}
}
if (i !== 0) {
write(", ");
}
if (local.kind === 202 || local.kind === 206) {
if (local.kind === 202 || local.kind === 206 || local.kind === 205) {
emitDeclarationName(local);
}
else {
@ -24291,6 +24335,9 @@ var ts;
}
return exportedDeclarations;
function visit(node) {
if (node.flags & 2) {
return;
}
if (node.kind === 201) {
if (!hoistedFunctionDeclarations) {
hoistedFunctionDeclarations = [];
@ -24305,24 +24352,35 @@ var ts;
hoistedVars.push(node);
return;
}
if (node.kind === 206 && shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
if (node.kind === 205) {
if (shouldEmitEnumDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
return;
}
if (node.kind === 206) {
if (shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
hoistedVars.push(node);
return;
}
if (node.kind === 199 || node.kind === 153) {
if (shouldHoistVariable(node, false)) {
var name_21 = node.name;
if (name_21.kind === 65) {
var name_22 = node.name;
if (name_22.kind === 65) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(name_21);
hoistedVars.push(name_22);
}
else {
ts.forEachChild(name_21, visit);
ts.forEachChild(name_22, visit);
}
}
return;
@ -24636,7 +24694,7 @@ var ts;
paramEmitted = true;
}
}
if (ts.isExternalModule(node) || compilerOptions.separateCompilation) {
if (ts.isExternalModule(node) || compilerOptions.isolatedModules) {
if (languageVersion >= 2) {
emitES6Module(node, startIndex);
}
@ -24992,7 +25050,7 @@ var ts;
ts.emitTime = 0;
ts.ioReadTime = 0;
ts.ioWriteTime = 0;
ts.version = "1.5.2";
ts.version = "1.5.3";
var carriageReturnLineFeed = "\r\n";
var lineFeed = "\n";
function findConfigFile(searchPath) {
@ -25168,14 +25226,14 @@ var ts;
if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) {
return { diagnostics: [], sourceMaps: undefined, emitSkipped: true };
}
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile);
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(options.out ? undefined : sourceFile);
var start = new Date().getTime();
var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile);
ts.emitTime += new Date().getTime() - start;
return emitResult;
}
function getSourceFile(fileName) {
fileName = host.getCanonicalFileName(fileName);
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
}
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
@ -25266,7 +25324,7 @@ var ts;
}
}
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
var canonicalName = host.getCanonicalFileName(fileName);
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
if (ts.hasProperty(filesByName, canonicalName)) {
return getSourceFileFromCache(fileName, canonicalName, false);
}
@ -25409,18 +25467,18 @@ var ts;
return allFilesBelongToPath;
}
function verifyCompilerOptions() {
if (options.separateCompilation) {
if (options.isolatedModules) {
if (options.sourceMap) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_isolatedModules));
}
if (options.declaration) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_isolatedModules));
}
if (options.noEmitOnError) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules));
}
if (options.out) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_isolatedModules));
}
}
if (options.inlineSourceMap) {
@ -25450,14 +25508,14 @@ var ts;
}
var languageVersion = options.target || 0;
var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; });
if (options.separateCompilation) {
if (options.isolatedModules) {
if (!options.module && languageVersion < 2) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
}
var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; });
if (firstNonExternalModuleSourceFile) {
var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile);
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided));
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided));
}
}
else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) {
@ -25636,7 +25694,7 @@ var ts;
paramType: ts.Diagnostics.LOCATION
},
{
name: "separateCompilation",
name: "isolatedModules",
type: "boolean"
},
{

View File

@ -431,9 +431,13 @@ var ts;
return 3;
return 2;
}
if (path.lastIndexOf("file:///", 0) === 0) {
return "file:///".length;
}
var idx = path.indexOf('://');
if (idx !== -1)
return idx + 3;
if (idx !== -1) {
return idx + "://".length;
}
return 0;
}
ts.getRootLength = getRootLength;
@ -1079,8 +1083,8 @@ var ts;
Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." },
Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." },
Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." },
Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--separateCompilation' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--isolatedModules' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--isolatedModules' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
@ -1363,11 +1367,11 @@ var ts;
Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." },
Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." },
Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." },
Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." },
Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." },
Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." },
Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." },
Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_isolatedModules: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'isolatedModules'." },
Option_declaration_cannot_be_specified_with_option_isolatedModules: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'isolatedModules'." },
Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'isolatedModules'." },
Option_out_cannot_be_specified_with_option_isolatedModules: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'isolatedModules'." },
Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'isolatedModules' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_inlineSourceMap: { code: 5048, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'inlineSourceMap'." },
Option_sourceRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5049, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified with option 'inlineSourceMap'." },
Option_mapRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5050, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified with option 'inlineSourceMap'." },
@ -2850,7 +2854,7 @@ var ts;
paramType: ts.Diagnostics.LOCATION
},
{
name: "separateCompilation",
name: "isolatedModules",
type: "boolean"
},
{
@ -4281,7 +4285,7 @@ var ts;
function shouldEmitToOwnFile(sourceFile, compilerOptions) {
if (!isDeclarationFile(sourceFile)) {
if ((isExternalModule(sourceFile) || !compilerOptions.out)) {
return compilerOptions.separateCompilation || !ts.fileExtensionIs(sourceFile.fileName, ".js");
return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js");
}
return false;
}
@ -9501,7 +9505,7 @@ var ts;
var symbol = getSymbolOfNode(node);
var target = resolveAlias(symbol);
if (target) {
var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) ||
var markAlias = (target === unknownSymbol && compilerOptions.isolatedModules) ||
(target !== unknownSymbol && (target.flags & 107455) && !isConstEnumOrConstEnumOnlyModule(target));
if (markAlias) {
markAliasSymbolAsReferenced(symbol);
@ -10811,7 +10815,10 @@ var ts;
function getTypeOfAlias(symbol) {
var links = getSymbolLinks(symbol);
if (!links.type) {
links.type = getTypeOfSymbol(resolveAlias(symbol));
var targetSymbol = resolveAlias(symbol);
links.type = targetSymbol.flags & 107455
? getTypeOfSymbol(targetSymbol)
: unknownType;
}
return links.type;
}
@ -11825,7 +11832,13 @@ var ts;
}
return false;
}
var removeSubtypesStack = [];
function removeSubtypes(types) {
var typeListId = getTypeListId(types);
if (removeSubtypesStack.lastIndexOf(typeListId) >= 0) {
return;
}
removeSubtypesStack.push(typeListId);
var i = types.length;
while (i > 0) {
i--;
@ -11833,6 +11846,7 @@ var ts;
types.splice(i, 1);
}
}
removeSubtypesStack.pop();
}
function containsAnyType(types) {
for (var _i = 0; _i < types.length; _i++) {
@ -13388,31 +13402,33 @@ var ts;
if (!isTypeSubtypeOf(rightType, globalFunctionType)) {
return type;
}
var targetType;
var prototypeProperty = getPropertyOfType(rightType, "prototype");
if (prototypeProperty) {
var targetType = getTypeOfSymbol(prototypeProperty);
if (targetType !== anyType) {
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
if (type.flags & 16384) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
var prototypePropertyType = getTypeOfSymbol(prototypeProperty);
if (prototypePropertyType !== anyType) {
targetType = prototypePropertyType;
}
}
var constructSignatures;
if (rightType.flags & 2048) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
if (!targetType) {
var constructSignatures;
if (rightType.flags & 2048) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
}
else if (rightType.flags & 32768) {
constructSignatures = getSignaturesOfType(rightType, 1);
}
if (constructSignatures && constructSignatures.length) {
targetType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
}
}
else if (rightType.flags & 32768) {
constructSignatures = getSignaturesOfType(rightType, 1);
}
if (constructSignatures && constructSignatures.length !== 0) {
var instanceType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
if (targetType) {
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
if (type.flags & 16384) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, instanceType); }));
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
return instanceType;
}
return type;
}
@ -15913,7 +15929,7 @@ var ts;
function checkTypeNodeAsExpression(node) {
if (node && node.kind === 142) {
var type = getTypeFromTypeNode(node);
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.separateCompilation;
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.isolatedModules;
if (!type || (!shouldCheckIfUnknownType && type.flags & (1048703 | 132 | 258))) {
return;
}
@ -16746,7 +16762,7 @@ var ts;
checkKindsOfPropertyMemberOverrides(type, baseType);
}
}
if (baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) {
if (baseTypes.length || (baseTypeNode && compilerOptions.isolatedModules)) {
checkExpressionOrQualifiedName(baseTypeNode.expression);
}
var implementedTypeNodes = ts.getClassImplementsHeritageClauseElements(node);
@ -17090,8 +17106,8 @@ var ts;
checkExportsOnMergedDeclarations(node);
computeEnumMemberValues(node);
var enumIsConst = ts.isConst(node);
if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided);
if (compilerOptions.isolatedModules && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided);
}
var enumSymbol = getSymbolOfNode(node);
var firstDeclaration = ts.getDeclarationOfKind(enumSymbol, node.kind);
@ -17163,7 +17179,7 @@ var ts;
if (symbol.flags & 512
&& symbol.declarations.length > 1
&& !ts.isInAmbientContext(node)
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) {
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules)) {
var firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol);
if (firstNonAmbientClassOrFunc) {
if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(firstNonAmbientClassOrFunc)) {
@ -17490,6 +17506,7 @@ var ts;
break;
case 135:
case 134:
ts.forEach(node.decorators, checkFunctionExpressionBodies);
ts.forEach(node.parameters, checkFunctionExpressionBodies);
if (ts.isObjectLiteralMethod(node)) {
checkFunctionExpressionOrObjectLiteralMethodBody(node);
@ -17504,6 +17521,7 @@ var ts;
case 193:
checkFunctionExpressionBodies(node.expression);
break;
case 131:
case 130:
case 133:
case 132:
@ -18085,7 +18103,7 @@ var ts;
}
function isAliasResolvedToValue(symbol) {
var target = resolveAlias(symbol);
if (target === unknownSymbol && compilerOptions.separateCompilation) {
if (target === unknownSymbol && compilerOptions.isolatedModules) {
return true;
}
return target !== unknownSymbol && target && target.flags & 107455 && !isConstEnumOrConstEnumOnlyModule(target);
@ -21643,7 +21661,7 @@ var ts;
}
return true;
}
function emitListWithSpread(elements, multiLine, trailingComma) {
function emitListWithSpread(elements, alwaysCopy, multiLine, trailingComma) {
var pos = 0;
var group = 0;
var length = elements.length;
@ -21659,6 +21677,9 @@ var ts;
e = e.expression;
emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e));
pos++;
if (pos === length && group === 0 && alwaysCopy && e.kind !== 154) {
write(".slice()");
}
}
else {
var i = pos;
@ -21696,7 +21717,7 @@ var ts;
write("]");
}
else {
emitListWithSpread(elements, (node.flags & 512) !== 0, elements.hasTrailingComma);
emitListWithSpread(elements, true, (node.flags & 512) !== 0, elements.hasTrailingComma);
}
}
function emitObjectLiteralBody(node, numElements) {
@ -21912,7 +21933,7 @@ var ts;
}
}
function tryEmitConstantValue(node) {
if (compilerOptions.separateCompilation) {
if (compilerOptions.isolatedModules) {
return false;
}
var constantValue = resolver.getConstantValue(node);
@ -22022,7 +22043,7 @@ var ts;
write("void 0");
}
write(", ");
emitListWithSpread(node.arguments, false, false);
emitListWithSpread(node.arguments, false, false, false);
write(")");
}
function emitCallExpression(node) {
@ -22650,7 +22671,7 @@ var ts;
if (node.flags & 1) {
writeLine();
emitStart(node);
if (compilerOptions.module === 4) {
if (compilerOptions.module === 4 && node.parent === currentSourceFile) {
write(exportFunctionForFile + "(\"");
if (node.flags & 256) {
write("default");
@ -24006,21 +24027,23 @@ var ts;
}
function shouldEmitEnumDeclaration(node) {
var isConstEnum = ts.isConst(node);
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation;
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.isolatedModules;
}
function emitEnumDeclaration(node) {
if (!shouldEmitEnumDeclaration(node)) {
return;
}
if (!(node.flags & 1) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
if (!shouldHoistDeclarationInSystemJsModule(node)) {
if (!(node.flags & 1) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
writeLine();
emitStart(node);
@ -24042,7 +24065,7 @@ var ts;
emitModuleMemberName(node);
write(" = {}));");
emitEnd(node);
if (!isES6ExportedDeclaration(node) && node.flags & 1) {
if (!isES6ExportedDeclaration(node) && node.flags & 1 && !shouldHoistDeclarationInSystemJsModule(node)) {
writeLine();
emitStart(node);
write("var ");
@ -24053,6 +24076,14 @@ var ts;
write(";");
}
if (languageVersion < 2 && node.parent === currentSourceFile) {
if (compilerOptions.module === 4 && (node.flags & 1)) {
writeLine();
write(exportFunctionForFile + "(\"");
emitDeclarationName(node);
write("\", ");
emitDeclarationName(node);
write(")");
}
emitExportMemberAssignments(node.name);
}
}
@ -24091,7 +24122,7 @@ var ts;
}
}
function shouldEmitModuleDeclaration(node) {
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation);
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules);
}
function isModuleMergedWithES6Class(node) {
return languageVersion === 2 && !!(resolver.getNodeCheckFlags(node) & 2048);
@ -24639,12 +24670,25 @@ var ts;
if (hoistedVars) {
writeLine();
write("var ");
var seen = {};
for (var i = 0; i < hoistedVars.length; ++i) {
var local = hoistedVars[i];
var name_21 = local.kind === 65
? local
: local.name;
if (name_21) {
var text = ts.unescapeIdentifier(name_21.text);
if (ts.hasProperty(seen, text)) {
continue;
}
else {
seen[text] = text;
}
}
if (i !== 0) {
write(", ");
}
if (local.kind === 202 || local.kind === 206) {
if (local.kind === 202 || local.kind === 206 || local.kind === 205) {
emitDeclarationName(local);
}
else {
@ -24675,6 +24719,9 @@ var ts;
}
return exportedDeclarations;
function visit(node) {
if (node.flags & 2) {
return;
}
if (node.kind === 201) {
if (!hoistedFunctionDeclarations) {
hoistedFunctionDeclarations = [];
@ -24689,24 +24736,35 @@ var ts;
hoistedVars.push(node);
return;
}
if (node.kind === 206 && shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
if (node.kind === 205) {
if (shouldEmitEnumDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
return;
}
if (node.kind === 206) {
if (shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
hoistedVars.push(node);
return;
}
if (node.kind === 199 || node.kind === 153) {
if (shouldHoistVariable(node, false)) {
var name_21 = node.name;
if (name_21.kind === 65) {
var name_22 = node.name;
if (name_22.kind === 65) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(name_21);
hoistedVars.push(name_22);
}
else {
ts.forEachChild(name_21, visit);
ts.forEachChild(name_22, visit);
}
}
return;
@ -25020,7 +25078,7 @@ var ts;
paramEmitted = true;
}
}
if (ts.isExternalModule(node) || compilerOptions.separateCompilation) {
if (ts.isExternalModule(node) || compilerOptions.isolatedModules) {
if (languageVersion >= 2) {
emitES6Module(node, startIndex);
}
@ -25376,7 +25434,7 @@ var ts;
ts.emitTime = 0;
ts.ioReadTime = 0;
ts.ioWriteTime = 0;
ts.version = "1.5.2";
ts.version = "1.5.3";
var carriageReturnLineFeed = "\r\n";
var lineFeed = "\n";
function findConfigFile(searchPath) {
@ -25552,14 +25610,14 @@ var ts;
if (options.noEmitOnError && getPreEmitDiagnostics(this).length > 0) {
return { diagnostics: [], sourceMaps: undefined, emitSkipped: true };
}
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile);
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(options.out ? undefined : sourceFile);
var start = new Date().getTime();
var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile);
ts.emitTime += new Date().getTime() - start;
return emitResult;
}
function getSourceFile(fileName) {
fileName = host.getCanonicalFileName(fileName);
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
}
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
@ -25650,7 +25708,7 @@ var ts;
}
}
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
var canonicalName = host.getCanonicalFileName(fileName);
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
if (ts.hasProperty(filesByName, canonicalName)) {
return getSourceFileFromCache(fileName, canonicalName, false);
}
@ -25793,18 +25851,18 @@ var ts;
return allFilesBelongToPath;
}
function verifyCompilerOptions() {
if (options.separateCompilation) {
if (options.isolatedModules) {
if (options.sourceMap) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_isolatedModules));
}
if (options.declaration) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_isolatedModules));
}
if (options.noEmitOnError) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules));
}
if (options.out) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_isolatedModules));
}
}
if (options.inlineSourceMap) {
@ -25834,14 +25892,14 @@ var ts;
}
var languageVersion = options.target || 0;
var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; });
if (options.separateCompilation) {
if (options.isolatedModules) {
if (!options.module && languageVersion < 2) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
}
var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; });
if (firstNonExternalModuleSourceFile) {
var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile);
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided));
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided));
}
}
else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) {
@ -26402,10 +26460,10 @@ var ts;
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
var nameToDeclarations = sourceFile.getNamedDeclarations();
for (var name_22 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_22);
for (var name_23 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_23);
if (declarations) {
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_22);
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_23);
if (!matches) {
continue;
}
@ -26416,14 +26474,14 @@ var ts;
if (!containers) {
return undefined;
}
matches = patternMatcher.getMatches(containers, name_22);
matches = patternMatcher.getMatches(containers, name_23);
if (!matches) {
continue;
}
}
var fileName = sourceFile.fileName;
var matchKind = bestMatchKind(matches);
rawItems.push({ name: name_22, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
rawItems.push({ name: name_23, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
}
@ -26753,9 +26811,9 @@ var ts;
case 199:
case 153:
var variableDeclarationNode;
var name_23;
var name_24;
if (node.kind === 153) {
name_23 = node.name;
name_24 = node.name;
variableDeclarationNode = node;
while (variableDeclarationNode && variableDeclarationNode.kind !== 199) {
variableDeclarationNode = variableDeclarationNode.parent;
@ -26765,16 +26823,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
name_23 = node.name;
name_24 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.constElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.letElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.letElement);
}
else {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.variableElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.variableElement);
}
case 136:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@ -28766,9 +28824,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
for (var name_24 in o) {
if (o[name_24] === rule) {
return name_24;
for (var name_25 in o) {
if (o[name_25] === rule) {
return name_25;
}
}
throw new Error("Unknown rule");
@ -31298,7 +31356,7 @@ var ts;
}
function transpile(input, compilerOptions, fileName, diagnostics) {
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
options.separateCompilation = true;
options.isolatedModules = true;
options.allowNonTsExtensions = true;
var inputFileName = fileName || "module.ts";
var sourceFile = ts.createSourceFile(inputFileName, input, options.target);
@ -31339,7 +31397,25 @@ var ts;
if (textChangeRange) {
if (version !== sourceFile.version) {
if (!ts.disableIncrementalParsing) {
var newSourceFile = ts.updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks);
var newText;
var prefix = textChangeRange.span.start !== 0
? sourceFile.text.substr(0, textChangeRange.span.start)
: "";
var suffix = ts.textSpanEnd(textChangeRange.span) !== sourceFile.text.length
? sourceFile.text.substr(ts.textSpanEnd(textChangeRange.span))
: "";
if (textChangeRange.newLength === 0) {
newText = prefix && suffix ? prefix + suffix : prefix || suffix;
}
else {
var changedText = scriptSnapshot.getText(textChangeRange.span.start, textChangeRange.span.start + textChangeRange.newLength);
newText = prefix && suffix
? prefix + changedText + suffix
: prefix
? (prefix + changedText)
: (changedText + suffix);
}
var newSourceFile = ts.updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks);
setSourceFileFields(newSourceFile, scriptSnapshot, version);
newSourceFile.nameTable = undefined;
return newSourceFile;
@ -31751,6 +31827,7 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
var lastProjectVersion;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
if (!ts.localizedDiagnosticMessages && host.getLocalizedDiagnosticMessages) {
@ -31780,6 +31857,15 @@ var ts;
return ruleProvider;
}
function synchronizeHostData() {
if (host.getProjectVersion) {
var hostProjectVersion = host.getProjectVersion();
if (hostProjectVersion) {
if (lastProjectVersion === hostProjectVersion) {
return;
}
lastProjectVersion = hostProjectVersion;
}
}
var hostCache = new HostCache(host, getCanonicalFileName);
if (programUpToDate()) {
return;
@ -32451,10 +32537,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
for (var name_25 in nameTable) {
if (!allNames[name_25]) {
allNames[name_25] = name_25;
var displayName = getCompletionEntryDisplayName(name_25, target, true);
for (var name_26 in nameTable) {
if (!allNames[name_26]) {
allNames[name_26] = name_26;
var displayName = getCompletionEntryDisplayName(name_26, target, true);
if (displayName) {
var entry = {
name: displayName,
@ -34133,17 +34219,17 @@ var ts;
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
var contextualType = typeChecker.getContextualType(objectLiteral);
var name_26 = node.text;
var name_27 = node.text;
if (contextualType) {
if (contextualType.flags & 16384) {
var unionProperty = contextualType.getProperty(name_26);
var unionProperty = contextualType.getProperty(name_27);
if (unionProperty) {
return [unionProperty];
}
else {
var result_4 = [];
ts.forEach(contextualType.types, function (t) {
var symbol = t.getProperty(name_26);
var symbol = t.getProperty(name_27);
if (symbol) {
result_4.push(symbol);
}
@ -34152,7 +34238,7 @@ var ts;
}
}
else {
var symbol_1 = contextualType.getProperty(name_26);
var symbol_1 = contextualType.getProperty(name_27);
if (symbol_1) {
return [symbol_1];
}
@ -34529,10 +34615,10 @@ var ts;
var kind = triviaScanner.scan();
var end = triviaScanner.getTextPos();
var width = end - start;
if (!ts.isTrivia(kind)) {
return;
}
if (ts.textSpanIntersectsWith(span, start, width)) {
if (!ts.isTrivia(kind)) {
return;
}
if (ts.isComment(kind)) {
pushClassification(start, width, 1);
continue;

3
bin/typescript.d.ts vendored
View File

@ -1114,7 +1114,7 @@ declare module "typescript" {
target?: ScriptTarget;
version?: boolean;
watch?: boolean;
separateCompilation?: boolean;
isolatedModules?: boolean;
emitDecoratorMetadata?: boolean;
[option: string]: string | number | boolean;
}
@ -1379,6 +1379,7 @@ declare module "typescript" {
interface LanguageServiceHost {
getCompilationSettings(): CompilerOptions;
getNewLine?(): string;
getProjectVersion?(): string;
getScriptFileNames(): string[];
getScriptVersion(fileName: string): string;
getScriptSnapshot(fileName: string): IScriptSnapshot;

View File

@ -1129,9 +1129,18 @@ var ts;
return 3;
return 2;
}
// Per RFC 1738 'file' URI schema has the shape file://<host>/<path>
// if <host> is omitted then it is assumed that host value is 'localhost',
// however slash after the omitted <host> is not removed.
// file:///folder1/file1 - this is a correct URI
// file://folder2/file2 - this is an incorrect URI
if (path.lastIndexOf("file:///", 0) === 0) {
return "file:///".length;
}
var idx = path.indexOf('://');
if (idx !== -1)
return idx + 3;
if (idx !== -1) {
return idx + "://".length;
}
return 0;
}
ts.getRootLength = getRootLength;
@ -1822,8 +1831,8 @@ var ts;
Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." },
Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." },
Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." },
Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--separateCompilation' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--isolatedModules' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--isolatedModules' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
@ -2106,11 +2115,11 @@ var ts;
Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." },
Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." },
Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." },
Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." },
Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." },
Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." },
Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." },
Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_isolatedModules: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'isolatedModules'." },
Option_declaration_cannot_be_specified_with_option_isolatedModules: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'isolatedModules'." },
Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'isolatedModules'." },
Option_out_cannot_be_specified_with_option_isolatedModules: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'isolatedModules'." },
Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'isolatedModules' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_inlineSourceMap: { code: 5048, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'inlineSourceMap'." },
Option_sourceRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5049, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified with option 'inlineSourceMap'." },
Option_mapRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5050, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified with option 'inlineSourceMap'." },
@ -5468,7 +5477,7 @@ var ts;
if ((isExternalModule(sourceFile) || !compilerOptions.out)) {
// 1. in-browser single file compilation scenario
// 2. non .js file
return compilerOptions.separateCompilation || !ts.fileExtensionIs(sourceFile.fileName, ".js");
return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js");
}
return false;
}
@ -11418,7 +11427,7 @@ var ts;
var symbol = getSymbolOfNode(node);
var target = resolveAlias(symbol);
if (target) {
var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) ||
var markAlias = (target === unknownSymbol && compilerOptions.isolatedModules) ||
(target !== unknownSymbol && (target.flags & 107455 /* Value */) && !isConstEnumOrConstEnumOnlyModule(target));
if (markAlias) {
markAliasSymbolAsReferenced(symbol);
@ -12945,7 +12954,15 @@ var ts;
function getTypeOfAlias(symbol) {
var links = getSymbolLinks(symbol);
if (!links.type) {
links.type = getTypeOfSymbol(resolveAlias(symbol));
var targetSymbol = resolveAlias(symbol);
// It only makes sense to get the type of a value symbol. If the result of resolving
// the alias is not a value, then it has no type. To get the type associated with a
// type symbol, call getDeclaredTypeOfSymbol.
// This check is important because without it, a call to getTypeOfSymbol could end
// up recursively calling getTypeOfAlias, causing a stack overflow.
links.type = targetSymbol.flags & 107455 /* Value */
? getTypeOfSymbol(targetSymbol)
: unknownType;
}
return links.type;
}
@ -14021,7 +14038,17 @@ var ts;
}
return false;
}
// Since removeSubtypes checks the subtype relation, and the subtype relation on a union
// may attempt to reduce a union, it is possible that removeSubtypes could be called
// recursively on the same set of types. The removeSubtypesStack is used to track which
// sets of types are currently undergoing subtype reduction.
var removeSubtypesStack = [];
function removeSubtypes(types) {
var typeListId = getTypeListId(types);
if (removeSubtypesStack.lastIndexOf(typeListId) >= 0) {
return;
}
removeSubtypesStack.push(typeListId);
var i = types.length;
while (i > 0) {
i--;
@ -14029,6 +14056,7 @@ var ts;
types.splice(i, 1);
}
}
removeSubtypesStack.pop();
}
function containsAnyType(types) {
for (var _i = 0; _i < types.length; _i++) {
@ -15730,36 +15758,37 @@ var ts;
if (!isTypeSubtypeOf(rightType, globalFunctionType)) {
return type;
}
// Target type is type of prototype property
var targetType;
var prototypeProperty = getPropertyOfType(rightType, "prototype");
if (prototypeProperty) {
var targetType = getTypeOfSymbol(prototypeProperty);
if (targetType !== anyType) {
// Narrow to the target type if it's a subtype of the current type
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
// If the current type is a union type, remove all constituents that aren't subtypes of the target.
if (type.flags & 16384 /* Union */) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
// Target type is type of the protoype property
var prototypePropertyType = getTypeOfSymbol(prototypeProperty);
if (prototypePropertyType !== anyType) {
targetType = prototypePropertyType;
}
}
// Target type is type of construct signature
var constructSignatures;
if (rightType.flags & 2048 /* Interface */) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
if (!targetType) {
// Target type is type of construct signature
var constructSignatures;
if (rightType.flags & 2048 /* Interface */) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
}
else if (rightType.flags & 32768 /* Anonymous */) {
constructSignatures = getSignaturesOfType(rightType, 1 /* Construct */);
}
if (constructSignatures && constructSignatures.length) {
targetType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
}
}
else if (rightType.flags & 32768 /* Anonymous */) {
constructSignatures = getSignaturesOfType(rightType, 1 /* Construct */);
}
if (constructSignatures && constructSignatures.length !== 0) {
var instanceType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
// Pickup type from union types
if (targetType) {
// Narrow to the target type if it's a subtype of the current type
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
// If the current type is a union type, remove all constituents that aren't subtypes of the target.
if (type.flags & 16384 /* Union */) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, instanceType); }));
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
return instanceType;
}
return type;
}
@ -18853,7 +18882,7 @@ var ts;
// serialize the type metadata.
if (node && node.kind === 142 /* TypeReference */) {
var type = getTypeFromTypeNode(node);
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.separateCompilation;
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.isolatedModules;
if (!type || (!shouldCheckIfUnknownType && type.flags & (1048703 /* Intrinsic */ | 132 /* NumberLike */ | 258 /* StringLike */))) {
return;
}
@ -19863,7 +19892,7 @@ var ts;
checkKindsOfPropertyMemberOverrides(type, baseType);
}
}
if (baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) {
if (baseTypes.length || (baseTypeNode && compilerOptions.isolatedModules)) {
// Check that base type can be evaluated as expression
checkExpressionOrQualifiedName(baseTypeNode.expression);
}
@ -20232,8 +20261,8 @@ var ts;
checkExportsOnMergedDeclarations(node);
computeEnumMemberValues(node);
var enumIsConst = ts.isConst(node);
if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided);
if (compilerOptions.isolatedModules && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided);
}
// Spec 2014 - Section 9.3:
// It isn't possible for one enum declaration to continue the automatic numbering sequence of another,
@ -20315,7 +20344,7 @@ var ts;
if (symbol.flags & 512 /* ValueModule */
&& symbol.declarations.length > 1
&& !ts.isInAmbientContext(node)
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) {
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules)) {
var firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol);
if (firstNonAmbientClassOrFunc) {
if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(firstNonAmbientClassOrFunc)) {
@ -20666,6 +20695,7 @@ var ts;
break;
case 135 /* MethodDeclaration */:
case 134 /* MethodSignature */:
ts.forEach(node.decorators, checkFunctionExpressionBodies);
ts.forEach(node.parameters, checkFunctionExpressionBodies);
if (ts.isObjectLiteralMethod(node)) {
checkFunctionExpressionOrObjectLiteralMethodBody(node);
@ -20680,6 +20710,7 @@ var ts;
case 193 /* WithStatement */:
checkFunctionExpressionBodies(node.expression);
break;
case 131 /* Decorator */:
case 130 /* Parameter */:
case 133 /* PropertyDeclaration */:
case 132 /* PropertySignature */:
@ -21317,7 +21348,7 @@ var ts;
}
function isAliasResolvedToValue(symbol) {
var target = resolveAlias(symbol);
if (target === unknownSymbol && compilerOptions.separateCompilation) {
if (target === unknownSymbol && compilerOptions.isolatedModules) {
return true;
}
// const enums and modules that contain only const enums are not considered values from the emit perespective
@ -25321,7 +25352,7 @@ var ts;
}
return true;
}
function emitListWithSpread(elements, multiLine, trailingComma) {
function emitListWithSpread(elements, alwaysCopy, multiLine, trailingComma) {
var pos = 0;
var group = 0;
var length = elements.length;
@ -25338,6 +25369,9 @@ var ts;
e = e.expression;
emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e));
pos++;
if (pos === length && group === 0 && alwaysCopy && e.kind !== 154 /* ArrayLiteralExpression */) {
write(".slice()");
}
}
else {
var i = pos;
@ -25375,7 +25409,7 @@ var ts;
write("]");
}
else {
emitListWithSpread(elements, (node.flags & 512 /* MultiLine */) !== 0,
emitListWithSpread(elements, true, (node.flags & 512 /* MultiLine */) !== 0,
/*trailingComma*/ elements.hasTrailingComma);
}
}
@ -25627,7 +25661,7 @@ var ts;
}
}
function tryEmitConstantValue(node) {
if (compilerOptions.separateCompilation) {
if (compilerOptions.isolatedModules) {
// do not inline enum values in separate compilation mode
return false;
}
@ -25747,7 +25781,7 @@ var ts;
write("void 0");
}
write(", ");
emitListWithSpread(node.arguments, false, false);
emitListWithSpread(node.arguments, false, false, false);
write(")");
}
function emitCallExpression(node) {
@ -26451,7 +26485,8 @@ var ts;
if (node.flags & 1 /* Export */) {
writeLine();
emitStart(node);
if (compilerOptions.module === 4 /* System */) {
// emit call to exporter only for top level nodes
if (compilerOptions.module === 4 /* System */ && node.parent === currentSourceFile) {
// emit export default <smth> as
// export("default", <smth>)
write(exportFunctionForFile + "(\"");
@ -28021,22 +28056,25 @@ var ts;
}
function shouldEmitEnumDeclaration(node) {
var isConstEnum = ts.isConst(node);
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation;
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.isolatedModules;
}
function emitEnumDeclaration(node) {
// const enums are completely erased during compilation.
if (!shouldEmitEnumDeclaration(node)) {
return;
}
if (!(node.flags & 1 /* Export */) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
if (!shouldHoistDeclarationInSystemJsModule(node)) {
// do not emit var if variable was already hoisted
if (!(node.flags & 1 /* Export */) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
writeLine();
emitStart(node);
@ -28058,7 +28096,8 @@ var ts;
emitModuleMemberName(node);
write(" = {}));");
emitEnd(node);
if (!isES6ExportedDeclaration(node) && node.flags & 1 /* Export */) {
if (!isES6ExportedDeclaration(node) && node.flags & 1 /* Export */ && !shouldHoistDeclarationInSystemJsModule(node)) {
// do not emit var if variable was already hoisted
writeLine();
emitStart(node);
write("var ");
@ -28069,6 +28108,15 @@ var ts;
write(";");
}
if (languageVersion < 2 /* ES6 */ && node.parent === currentSourceFile) {
if (compilerOptions.module === 4 /* System */ && (node.flags & 1 /* Export */)) {
// write the call to exporter for enum
writeLine();
write(exportFunctionForFile + "(\"");
emitDeclarationName(node);
write("\", ");
emitDeclarationName(node);
write(")");
}
emitExportMemberAssignments(node.name);
}
}
@ -28107,7 +28155,7 @@ var ts;
}
}
function shouldEmitModuleDeclaration(node) {
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation);
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules);
}
function isModuleMergedWithES6Class(node) {
return languageVersion === 2 /* ES6 */ && !!(resolver.getNodeCheckFlags(node) & 2048 /* LexicalModuleMergesWithClass */);
@ -28708,12 +28756,26 @@ var ts;
if (hoistedVars) {
writeLine();
write("var ");
var seen = {};
for (var i = 0; i < hoistedVars.length; ++i) {
var local = hoistedVars[i];
var name_21 = local.kind === 65 /* Identifier */
? local
: local.name;
if (name_21) {
// do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables
var text = ts.unescapeIdentifier(name_21.text);
if (ts.hasProperty(seen, text)) {
continue;
}
else {
seen[text] = text;
}
}
if (i !== 0) {
write(", ");
}
if (local.kind === 202 /* ClassDeclaration */ || local.kind === 206 /* ModuleDeclaration */) {
if (local.kind === 202 /* ClassDeclaration */ || local.kind === 206 /* ModuleDeclaration */ || local.kind === 205 /* EnumDeclaration */) {
emitDeclarationName(local);
}
else {
@ -28744,6 +28806,9 @@ var ts;
}
return exportedDeclarations;
function visit(node) {
if (node.flags & 2 /* Ambient */) {
return;
}
if (node.kind === 201 /* FunctionDeclaration */) {
if (!hoistedFunctionDeclarations) {
hoistedFunctionDeclarations = [];
@ -28752,31 +28817,41 @@ var ts;
return;
}
if (node.kind === 202 /* ClassDeclaration */) {
// TODO: rename block scoped classes
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
return;
}
if (node.kind === 206 /* ModuleDeclaration */ && shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
if (node.kind === 205 /* EnumDeclaration */) {
if (shouldEmitEnumDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
return;
}
if (node.kind === 206 /* ModuleDeclaration */) {
if (shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
hoistedVars.push(node);
return;
}
if (node.kind === 199 /* VariableDeclaration */ || node.kind === 153 /* BindingElement */) {
if (shouldHoistVariable(node, false)) {
var name_21 = node.name;
if (name_21.kind === 65 /* Identifier */) {
var name_22 = node.name;
if (name_22.kind === 65 /* Identifier */) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(name_21);
hoistedVars.push(name_22);
}
else {
ts.forEachChild(name_21, visit);
ts.forEachChild(name_22, visit);
}
}
return;
@ -29180,7 +29255,7 @@ var ts;
paramEmitted = true;
}
}
if (ts.isExternalModule(node) || compilerOptions.separateCompilation) {
if (ts.isExternalModule(node) || compilerOptions.isolatedModules) {
if (languageVersion >= 2 /* ES6 */) {
emitES6Module(node, startIndex);
}
@ -29571,7 +29646,7 @@ var ts;
/* @internal */ ts.ioReadTime = 0;
/* @internal */ ts.ioWriteTime = 0;
/** The version of the TypeScript compiler release */
ts.version = "1.5.2";
ts.version = "1.5.3";
var carriageReturnLineFeed = "\r\n";
var lineFeed = "\n";
function findConfigFile(searchPath) {
@ -29755,14 +29830,19 @@ var ts;
// Create the emit resolver outside of the "emitTime" tracking code below. That way
// any cost associated with it (like type checking) are appropriate associated with
// the type-checking counter.
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile);
//
// If the -out option is specified, we should not pass the source file to getEmitResolver.
// This is because in the -out scenario all files need to be emitted, and therefore all
// files need to be type checked. And the way to specify that all files need to be type
// checked is to not pass the file to getEmitResolver.
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(options.out ? undefined : sourceFile);
var start = new Date().getTime();
var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile);
ts.emitTime += new Date().getTime() - start;
return emitResult;
}
function getSourceFile(fileName) {
fileName = host.getCanonicalFileName(fileName);
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
}
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
@ -29855,7 +29935,7 @@ var ts;
}
// Get source file from normalized fileName
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
var canonicalName = host.getCanonicalFileName(fileName);
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
if (ts.hasProperty(filesByName, canonicalName)) {
// We've already looked for this file, use cached result
return getSourceFileFromCache(fileName, canonicalName, false);
@ -30013,18 +30093,18 @@ var ts;
return allFilesBelongToPath;
}
function verifyCompilerOptions() {
if (options.separateCompilation) {
if (options.isolatedModules) {
if (options.sourceMap) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_isolatedModules));
}
if (options.declaration) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_isolatedModules));
}
if (options.noEmitOnError) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules));
}
if (options.out) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_isolatedModules));
}
}
if (options.inlineSourceMap) {
@ -30055,14 +30135,14 @@ var ts;
}
var languageVersion = options.target || 0 /* ES3 */;
var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; });
if (options.separateCompilation) {
if (options.isolatedModules) {
if (!options.module && languageVersion < 2 /* ES6 */) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
}
var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; });
if (firstNonExternalModuleSourceFile) {
var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile);
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided));
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided));
}
}
else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) {
@ -30251,7 +30331,7 @@ var ts;
paramType: ts.Diagnostics.LOCATION
},
{
name: "separateCompilation",
name: "isolatedModules",
type: "boolean"
},
{
@ -30684,12 +30764,12 @@ var ts;
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
var nameToDeclarations = sourceFile.getNamedDeclarations();
for (var name_22 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_22);
for (var name_23 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_23);
if (declarations) {
// First do a quick check to see if the name of the declaration matches the
// last portion of the (possibly) dotted name they're searching for.
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_22);
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_23);
if (!matches) {
continue;
}
@ -30702,14 +30782,14 @@ var ts;
if (!containers) {
return undefined;
}
matches = patternMatcher.getMatches(containers, name_22);
matches = patternMatcher.getMatches(containers, name_23);
if (!matches) {
continue;
}
}
var fileName = sourceFile.fileName;
var matchKind = bestMatchKind(matches);
rawItems.push({ name: name_22, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
rawItems.push({ name: name_23, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
}
@ -31092,9 +31172,9 @@ var ts;
case 199 /* VariableDeclaration */:
case 153 /* BindingElement */:
var variableDeclarationNode;
var name_23;
var name_24;
if (node.kind === 153 /* BindingElement */) {
name_23 = node.name;
name_24 = node.name;
variableDeclarationNode = node;
// binding elements are added only for variable declarations
// bubble up to the containing variable declaration
@ -31106,16 +31186,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
name_23 = node.name;
name_24 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.constElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.letElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.letElement);
}
else {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.variableElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.variableElement);
}
case 136 /* Constructor */:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@ -33702,9 +33782,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
for (var name_24 in o) {
if (o[name_24] === rule) {
return name_24;
for (var name_25 in o) {
if (o[name_25] === rule) {
return name_25;
}
}
throw new Error("Unknown rule");
@ -36592,12 +36672,12 @@ var ts;
* This function will compile source text from 'input' argument using specified compiler options.
* If not options are provided - it will use a set of default compiler options.
* Extra compiler options that will unconditionally be used bu this function are:
* - separateCompilation = true
* - isolatedModules = true
* - allowNonTsExtensions = true
*/
function transpile(input, compilerOptions, fileName, diagnostics) {
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
options.separateCompilation = true;
options.isolatedModules = true;
// Filename can be non-ts file.
options.allowNonTsExtensions = true;
// Parse
@ -36648,7 +36728,30 @@ var ts;
if (version !== sourceFile.version) {
// Once incremental parsing is ready, then just call into this function.
if (!ts.disableIncrementalParsing) {
var newSourceFile = ts.updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks);
var newText;
// grab the fragment from the beginning of the original text to the beginning of the span
var prefix = textChangeRange.span.start !== 0
? sourceFile.text.substr(0, textChangeRange.span.start)
: "";
// grab the fragment from the end of the span till the end of the original text
var suffix = ts.textSpanEnd(textChangeRange.span) !== sourceFile.text.length
? sourceFile.text.substr(ts.textSpanEnd(textChangeRange.span))
: "";
if (textChangeRange.newLength === 0) {
// edit was a deletion - just combine prefix and suffix
newText = prefix && suffix ? prefix + suffix : prefix || suffix;
}
else {
// it was actual edit, fetch the fragment of new text that correspond to new span
var changedText = scriptSnapshot.getText(textChangeRange.span.start, textChangeRange.span.start + textChangeRange.newLength);
// combine prefix, changed text and suffix
newText = prefix && suffix
? prefix + changedText + suffix
: prefix
? (prefix + changedText)
: (changedText + suffix);
}
var newSourceFile = ts.updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks);
setSourceFileFields(newSourceFile, scriptSnapshot, version);
// after incremental parsing nameTable might not be up-to-date
// drop it so it can be lazily recreated later
@ -37125,6 +37228,7 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
var lastProjectVersion;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
// Check if the localized messages json is set, otherwise query the host for it
@ -37156,6 +37260,16 @@ var ts;
return ruleProvider;
}
function synchronizeHostData() {
// perform fast check if host supports it
if (host.getProjectVersion) {
var hostProjectVersion = host.getProjectVersion();
if (hostProjectVersion) {
if (lastProjectVersion === hostProjectVersion) {
return;
}
lastProjectVersion = hostProjectVersion;
}
}
// Get a fresh cache of the host information
var hostCache = new HostCache(host, getCanonicalFileName);
// If the program is already up-to-date, we can reuse it
@ -37954,10 +38068,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
for (var name_25 in nameTable) {
if (!allNames[name_25]) {
allNames[name_25] = name_25;
var displayName = getCompletionEntryDisplayName(name_25, target, true);
for (var name_26 in nameTable) {
if (!allNames[name_26]) {
allNames[name_26] = name_26;
var displayName = getCompletionEntryDisplayName(name_26, target, true);
if (displayName) {
var entry = {
name: displayName,
@ -39839,19 +39953,19 @@ var ts;
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
var contextualType = typeChecker.getContextualType(objectLiteral);
var name_26 = node.text;
var name_27 = node.text;
if (contextualType) {
if (contextualType.flags & 16384 /* Union */) {
// This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types)
// if not, search the constituent types for the property
var unionProperty = contextualType.getProperty(name_26);
var unionProperty = contextualType.getProperty(name_27);
if (unionProperty) {
return [unionProperty];
}
else {
var result_4 = [];
ts.forEach(contextualType.types, function (t) {
var symbol = t.getProperty(name_26);
var symbol = t.getProperty(name_27);
if (symbol) {
result_4.push(symbol);
}
@ -39860,7 +39974,7 @@ var ts;
}
}
else {
var symbol_1 = contextualType.getProperty(name_26);
var symbol_1 = contextualType.getProperty(name_27);
if (symbol_1) {
return [symbol_1];
}
@ -40280,10 +40394,12 @@ var ts;
var kind = triviaScanner.scan();
var end = triviaScanner.getTextPos();
var width = end - start;
// The moment we get something that isn't trivia, then stop processing.
if (!ts.isTrivia(kind)) {
return;
}
// Only bother with the trivia if it at least intersects the span of interest.
if (ts.textSpanIntersectsWith(span, start, width)) {
if (!ts.isTrivia(kind)) {
return;
}
if (ts.isComment(kind)) {
// Simple comment. Just add as is.
pushClassification(start, width, 1 /* comment */);
@ -41726,6 +41842,13 @@ var ts;
LanguageServiceShimHostAdapter.prototype.error = function (s) {
this.shimHost.error(s);
};
LanguageServiceShimHostAdapter.prototype.getProjectVersion = function () {
if (!this.shimHost.getProjectVersion) {
// shimmed host does not support getProjectVersion
return undefined;
}
return this.shimHost.getProjectVersion();
};
LanguageServiceShimHostAdapter.prototype.getCompilationSettings = function () {
var settingsJson = this.shimHost.getCompilationSettings();
if (settingsJson == null || settingsJson == "") {
@ -42324,4 +42447,4 @@ var TypeScript;
})(Services = TypeScript.Services || (TypeScript.Services = {}));
})(TypeScript || (TypeScript = {}));
/* @internal */
var toolsVersion = "1.4";
var toolsVersion = "1.5";

View File

@ -1114,7 +1114,7 @@ declare module ts {
target?: ScriptTarget;
version?: boolean;
watch?: boolean;
separateCompilation?: boolean;
isolatedModules?: boolean;
emitDecoratorMetadata?: boolean;
[option: string]: string | number | boolean;
}
@ -1379,6 +1379,7 @@ declare module ts {
interface LanguageServiceHost {
getCompilationSettings(): CompilerOptions;
getNewLine?(): string;
getProjectVersion?(): string;
getScriptFileNames(): string[];
getScriptVersion(fileName: string): string;
getScriptSnapshot(fileName: string): IScriptSnapshot;

View File

@ -1129,9 +1129,18 @@ var ts;
return 3;
return 2;
}
// Per RFC 1738 'file' URI schema has the shape file://<host>/<path>
// if <host> is omitted then it is assumed that host value is 'localhost',
// however slash after the omitted <host> is not removed.
// file:///folder1/file1 - this is a correct URI
// file://folder2/file2 - this is an incorrect URI
if (path.lastIndexOf("file:///", 0) === 0) {
return "file:///".length;
}
var idx = path.indexOf('://');
if (idx !== -1)
return idx + 3;
if (idx !== -1) {
return idx + "://".length;
}
return 0;
}
ts.getRootLength = getRootLength;
@ -1822,8 +1831,8 @@ var ts;
Decorators_are_only_available_when_targeting_ECMAScript_5_and_higher: { code: 1205, category: ts.DiagnosticCategory.Error, key: "Decorators are only available when targeting ECMAScript 5 and higher." },
Decorators_are_not_valid_here: { code: 1206, category: ts.DiagnosticCategory.Error, key: "Decorators are not valid here." },
Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: { code: 1207, category: ts.DiagnosticCategory.Error, key: "Decorators cannot be applied to multiple get/set accessors of the same name." },
Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--separateCompilation' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." },
Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided: { code: 1208, category: ts.DiagnosticCategory.Error, key: "Cannot compile namespaces when the '--isolatedModules' flag is provided." },
Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--isolatedModules' flag is provided." },
Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." },
A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" },
Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" },
@ -2106,11 +2115,11 @@ var ts;
Option_noEmit_cannot_be_specified_with_option_out_or_outDir: { code: 5040, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'out' or 'outDir'." },
Option_noEmit_cannot_be_specified_with_option_declaration: { code: 5041, category: ts.DiagnosticCategory.Error, key: "Option 'noEmit' cannot be specified with option 'declaration'." },
Option_project_cannot_be_mixed_with_source_files_on_a_command_line: { code: 5042, category: ts.DiagnosticCategory.Error, key: "Option 'project' cannot be mixed with source files on a command line." },
Option_sourceMap_cannot_be_specified_with_option_separateCompilation: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'separateCompilation'." },
Option_declaration_cannot_be_specified_with_option_separateCompilation: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'separateCompilation'." },
Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'separateCompilation'." },
Option_out_cannot_be_specified_with_option_separateCompilation: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'separateCompilation'." },
Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'separateCompilation' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_isolatedModules: { code: 5043, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'isolatedModules'." },
Option_declaration_cannot_be_specified_with_option_isolatedModules: { code: 5044, category: ts.DiagnosticCategory.Error, key: "Option 'declaration' cannot be specified with option 'isolatedModules'." },
Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules: { code: 5045, category: ts.DiagnosticCategory.Error, key: "Option 'noEmitOnError' cannot be specified with option 'isolatedModules'." },
Option_out_cannot_be_specified_with_option_isolatedModules: { code: 5046, category: ts.DiagnosticCategory.Error, key: "Option 'out' cannot be specified with option 'isolatedModules'." },
Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher: { code: 5047, category: ts.DiagnosticCategory.Error, key: "Option 'isolatedModules' can only be used when either option'--module' is provided or option 'target' is 'ES6' or higher." },
Option_sourceMap_cannot_be_specified_with_option_inlineSourceMap: { code: 5048, category: ts.DiagnosticCategory.Error, key: "Option 'sourceMap' cannot be specified with option 'inlineSourceMap'." },
Option_sourceRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5049, category: ts.DiagnosticCategory.Error, key: "Option 'sourceRoot' cannot be specified with option 'inlineSourceMap'." },
Option_mapRoot_cannot_be_specified_with_option_inlineSourceMap: { code: 5050, category: ts.DiagnosticCategory.Error, key: "Option 'mapRoot' cannot be specified with option 'inlineSourceMap'." },
@ -5468,7 +5477,7 @@ var ts;
if ((isExternalModule(sourceFile) || !compilerOptions.out)) {
// 1. in-browser single file compilation scenario
// 2. non .js file
return compilerOptions.separateCompilation || !ts.fileExtensionIs(sourceFile.fileName, ".js");
return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js");
}
return false;
}
@ -11418,7 +11427,7 @@ var ts;
var symbol = getSymbolOfNode(node);
var target = resolveAlias(symbol);
if (target) {
var markAlias = (target === unknownSymbol && compilerOptions.separateCompilation) ||
var markAlias = (target === unknownSymbol && compilerOptions.isolatedModules) ||
(target !== unknownSymbol && (target.flags & 107455 /* Value */) && !isConstEnumOrConstEnumOnlyModule(target));
if (markAlias) {
markAliasSymbolAsReferenced(symbol);
@ -12945,7 +12954,15 @@ var ts;
function getTypeOfAlias(symbol) {
var links = getSymbolLinks(symbol);
if (!links.type) {
links.type = getTypeOfSymbol(resolveAlias(symbol));
var targetSymbol = resolveAlias(symbol);
// It only makes sense to get the type of a value symbol. If the result of resolving
// the alias is not a value, then it has no type. To get the type associated with a
// type symbol, call getDeclaredTypeOfSymbol.
// This check is important because without it, a call to getTypeOfSymbol could end
// up recursively calling getTypeOfAlias, causing a stack overflow.
links.type = targetSymbol.flags & 107455 /* Value */
? getTypeOfSymbol(targetSymbol)
: unknownType;
}
return links.type;
}
@ -14021,7 +14038,17 @@ var ts;
}
return false;
}
// Since removeSubtypes checks the subtype relation, and the subtype relation on a union
// may attempt to reduce a union, it is possible that removeSubtypes could be called
// recursively on the same set of types. The removeSubtypesStack is used to track which
// sets of types are currently undergoing subtype reduction.
var removeSubtypesStack = [];
function removeSubtypes(types) {
var typeListId = getTypeListId(types);
if (removeSubtypesStack.lastIndexOf(typeListId) >= 0) {
return;
}
removeSubtypesStack.push(typeListId);
var i = types.length;
while (i > 0) {
i--;
@ -14029,6 +14056,7 @@ var ts;
types.splice(i, 1);
}
}
removeSubtypesStack.pop();
}
function containsAnyType(types) {
for (var _i = 0; _i < types.length; _i++) {
@ -15730,36 +15758,37 @@ var ts;
if (!isTypeSubtypeOf(rightType, globalFunctionType)) {
return type;
}
// Target type is type of prototype property
var targetType;
var prototypeProperty = getPropertyOfType(rightType, "prototype");
if (prototypeProperty) {
var targetType = getTypeOfSymbol(prototypeProperty);
if (targetType !== anyType) {
// Narrow to the target type if it's a subtype of the current type
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
// If the current type is a union type, remove all constituents that aren't subtypes of the target.
if (type.flags & 16384 /* Union */) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
// Target type is type of the protoype property
var prototypePropertyType = getTypeOfSymbol(prototypeProperty);
if (prototypePropertyType !== anyType) {
targetType = prototypePropertyType;
}
}
// Target type is type of construct signature
var constructSignatures;
if (rightType.flags & 2048 /* Interface */) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
if (!targetType) {
// Target type is type of construct signature
var constructSignatures;
if (rightType.flags & 2048 /* Interface */) {
constructSignatures = resolveDeclaredMembers(rightType).declaredConstructSignatures;
}
else if (rightType.flags & 32768 /* Anonymous */) {
constructSignatures = getSignaturesOfType(rightType, 1 /* Construct */);
}
if (constructSignatures && constructSignatures.length) {
targetType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
}
}
else if (rightType.flags & 32768 /* Anonymous */) {
constructSignatures = getSignaturesOfType(rightType, 1 /* Construct */);
}
if (constructSignatures && constructSignatures.length !== 0) {
var instanceType = getUnionType(ts.map(constructSignatures, function (signature) { return getReturnTypeOfSignature(getErasedSignature(signature)); }));
// Pickup type from union types
if (targetType) {
// Narrow to the target type if it's a subtype of the current type
if (isTypeSubtypeOf(targetType, type)) {
return targetType;
}
// If the current type is a union type, remove all constituents that aren't subtypes of the target.
if (type.flags & 16384 /* Union */) {
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, instanceType); }));
return getUnionType(ts.filter(type.types, function (t) { return isTypeSubtypeOf(t, targetType); }));
}
return instanceType;
}
return type;
}
@ -18853,7 +18882,7 @@ var ts;
// serialize the type metadata.
if (node && node.kind === 142 /* TypeReference */) {
var type = getTypeFromTypeNode(node);
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.separateCompilation;
var shouldCheckIfUnknownType = type === unknownType && compilerOptions.isolatedModules;
if (!type || (!shouldCheckIfUnknownType && type.flags & (1048703 /* Intrinsic */ | 132 /* NumberLike */ | 258 /* StringLike */))) {
return;
}
@ -19863,7 +19892,7 @@ var ts;
checkKindsOfPropertyMemberOverrides(type, baseType);
}
}
if (baseTypes.length || (baseTypeNode && compilerOptions.separateCompilation)) {
if (baseTypes.length || (baseTypeNode && compilerOptions.isolatedModules)) {
// Check that base type can be evaluated as expression
checkExpressionOrQualifiedName(baseTypeNode.expression);
}
@ -20232,8 +20261,8 @@ var ts;
checkExportsOnMergedDeclarations(node);
computeEnumMemberValues(node);
var enumIsConst = ts.isConst(node);
if (compilerOptions.separateCompilation && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided);
if (compilerOptions.isolatedModules && enumIsConst && ts.isInAmbientContext(node)) {
error(node.name, ts.Diagnostics.Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided);
}
// Spec 2014 - Section 9.3:
// It isn't possible for one enum declaration to continue the automatic numbering sequence of another,
@ -20315,7 +20344,7 @@ var ts;
if (symbol.flags & 512 /* ValueModule */
&& symbol.declarations.length > 1
&& !ts.isInAmbientContext(node)
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation)) {
&& ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules)) {
var firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol);
if (firstNonAmbientClassOrFunc) {
if (ts.getSourceFileOfNode(node) !== ts.getSourceFileOfNode(firstNonAmbientClassOrFunc)) {
@ -20666,6 +20695,7 @@ var ts;
break;
case 135 /* MethodDeclaration */:
case 134 /* MethodSignature */:
ts.forEach(node.decorators, checkFunctionExpressionBodies);
ts.forEach(node.parameters, checkFunctionExpressionBodies);
if (ts.isObjectLiteralMethod(node)) {
checkFunctionExpressionOrObjectLiteralMethodBody(node);
@ -20680,6 +20710,7 @@ var ts;
case 193 /* WithStatement */:
checkFunctionExpressionBodies(node.expression);
break;
case 131 /* Decorator */:
case 130 /* Parameter */:
case 133 /* PropertyDeclaration */:
case 132 /* PropertySignature */:
@ -21317,7 +21348,7 @@ var ts;
}
function isAliasResolvedToValue(symbol) {
var target = resolveAlias(symbol);
if (target === unknownSymbol && compilerOptions.separateCompilation) {
if (target === unknownSymbol && compilerOptions.isolatedModules) {
return true;
}
// const enums and modules that contain only const enums are not considered values from the emit perespective
@ -25321,7 +25352,7 @@ var ts;
}
return true;
}
function emitListWithSpread(elements, multiLine, trailingComma) {
function emitListWithSpread(elements, alwaysCopy, multiLine, trailingComma) {
var pos = 0;
var group = 0;
var length = elements.length;
@ -25338,6 +25369,9 @@ var ts;
e = e.expression;
emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e));
pos++;
if (pos === length && group === 0 && alwaysCopy && e.kind !== 154 /* ArrayLiteralExpression */) {
write(".slice()");
}
}
else {
var i = pos;
@ -25375,7 +25409,7 @@ var ts;
write("]");
}
else {
emitListWithSpread(elements, (node.flags & 512 /* MultiLine */) !== 0,
emitListWithSpread(elements, true, (node.flags & 512 /* MultiLine */) !== 0,
/*trailingComma*/ elements.hasTrailingComma);
}
}
@ -25627,7 +25661,7 @@ var ts;
}
}
function tryEmitConstantValue(node) {
if (compilerOptions.separateCompilation) {
if (compilerOptions.isolatedModules) {
// do not inline enum values in separate compilation mode
return false;
}
@ -25747,7 +25781,7 @@ var ts;
write("void 0");
}
write(", ");
emitListWithSpread(node.arguments, false, false);
emitListWithSpread(node.arguments, false, false, false);
write(")");
}
function emitCallExpression(node) {
@ -26451,7 +26485,8 @@ var ts;
if (node.flags & 1 /* Export */) {
writeLine();
emitStart(node);
if (compilerOptions.module === 4 /* System */) {
// emit call to exporter only for top level nodes
if (compilerOptions.module === 4 /* System */ && node.parent === currentSourceFile) {
// emit export default <smth> as
// export("default", <smth>)
write(exportFunctionForFile + "(\"");
@ -28021,22 +28056,25 @@ var ts;
}
function shouldEmitEnumDeclaration(node) {
var isConstEnum = ts.isConst(node);
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.separateCompilation;
return !isConstEnum || compilerOptions.preserveConstEnums || compilerOptions.isolatedModules;
}
function emitEnumDeclaration(node) {
// const enums are completely erased during compilation.
if (!shouldEmitEnumDeclaration(node)) {
return;
}
if (!(node.flags & 1 /* Export */) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
if (!shouldHoistDeclarationInSystemJsModule(node)) {
// do not emit var if variable was already hoisted
if (!(node.flags & 1 /* Export */) || isES6ExportedDeclaration(node)) {
emitStart(node);
if (isES6ExportedDeclaration(node)) {
write("export ");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
write("var ");
emit(node.name);
emitEnd(node);
write(";");
}
writeLine();
emitStart(node);
@ -28058,7 +28096,8 @@ var ts;
emitModuleMemberName(node);
write(" = {}));");
emitEnd(node);
if (!isES6ExportedDeclaration(node) && node.flags & 1 /* Export */) {
if (!isES6ExportedDeclaration(node) && node.flags & 1 /* Export */ && !shouldHoistDeclarationInSystemJsModule(node)) {
// do not emit var if variable was already hoisted
writeLine();
emitStart(node);
write("var ");
@ -28069,6 +28108,15 @@ var ts;
write(";");
}
if (languageVersion < 2 /* ES6 */ && node.parent === currentSourceFile) {
if (compilerOptions.module === 4 /* System */ && (node.flags & 1 /* Export */)) {
// write the call to exporter for enum
writeLine();
write(exportFunctionForFile + "(\"");
emitDeclarationName(node);
write("\", ");
emitDeclarationName(node);
write(")");
}
emitExportMemberAssignments(node.name);
}
}
@ -28107,7 +28155,7 @@ var ts;
}
}
function shouldEmitModuleDeclaration(node) {
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.separateCompilation);
return ts.isInstantiatedModule(node, compilerOptions.preserveConstEnums || compilerOptions.isolatedModules);
}
function isModuleMergedWithES6Class(node) {
return languageVersion === 2 /* ES6 */ && !!(resolver.getNodeCheckFlags(node) & 2048 /* LexicalModuleMergesWithClass */);
@ -28708,12 +28756,26 @@ var ts;
if (hoistedVars) {
writeLine();
write("var ");
var seen = {};
for (var i = 0; i < hoistedVars.length; ++i) {
var local = hoistedVars[i];
var name_21 = local.kind === 65 /* Identifier */
? local
: local.name;
if (name_21) {
// do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables
var text = ts.unescapeIdentifier(name_21.text);
if (ts.hasProperty(seen, text)) {
continue;
}
else {
seen[text] = text;
}
}
if (i !== 0) {
write(", ");
}
if (local.kind === 202 /* ClassDeclaration */ || local.kind === 206 /* ModuleDeclaration */) {
if (local.kind === 202 /* ClassDeclaration */ || local.kind === 206 /* ModuleDeclaration */ || local.kind === 205 /* EnumDeclaration */) {
emitDeclarationName(local);
}
else {
@ -28744,6 +28806,9 @@ var ts;
}
return exportedDeclarations;
function visit(node) {
if (node.flags & 2 /* Ambient */) {
return;
}
if (node.kind === 201 /* FunctionDeclaration */) {
if (!hoistedFunctionDeclarations) {
hoistedFunctionDeclarations = [];
@ -28752,31 +28817,41 @@ var ts;
return;
}
if (node.kind === 202 /* ClassDeclaration */) {
// TODO: rename block scoped classes
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
return;
}
if (node.kind === 206 /* ModuleDeclaration */ && shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
if (node.kind === 205 /* EnumDeclaration */) {
if (shouldEmitEnumDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
return;
}
if (node.kind === 206 /* ModuleDeclaration */) {
if (shouldEmitModuleDeclaration(node)) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(node);
}
hoistedVars.push(node);
return;
}
if (node.kind === 199 /* VariableDeclaration */ || node.kind === 153 /* BindingElement */) {
if (shouldHoistVariable(node, false)) {
var name_21 = node.name;
if (name_21.kind === 65 /* Identifier */) {
var name_22 = node.name;
if (name_22.kind === 65 /* Identifier */) {
if (!hoistedVars) {
hoistedVars = [];
}
hoistedVars.push(name_21);
hoistedVars.push(name_22);
}
else {
ts.forEachChild(name_21, visit);
ts.forEachChild(name_22, visit);
}
}
return;
@ -29180,7 +29255,7 @@ var ts;
paramEmitted = true;
}
}
if (ts.isExternalModule(node) || compilerOptions.separateCompilation) {
if (ts.isExternalModule(node) || compilerOptions.isolatedModules) {
if (languageVersion >= 2 /* ES6 */) {
emitES6Module(node, startIndex);
}
@ -29571,7 +29646,7 @@ var ts;
/* @internal */ ts.ioReadTime = 0;
/* @internal */ ts.ioWriteTime = 0;
/** The version of the TypeScript compiler release */
ts.version = "1.5.2";
ts.version = "1.5.3";
var carriageReturnLineFeed = "\r\n";
var lineFeed = "\n";
function findConfigFile(searchPath) {
@ -29755,14 +29830,19 @@ var ts;
// Create the emit resolver outside of the "emitTime" tracking code below. That way
// any cost associated with it (like type checking) are appropriate associated with
// the type-checking counter.
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile);
//
// If the -out option is specified, we should not pass the source file to getEmitResolver.
// This is because in the -out scenario all files need to be emitted, and therefore all
// files need to be type checked. And the way to specify that all files need to be type
// checked is to not pass the file to getEmitResolver.
var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(options.out ? undefined : sourceFile);
var start = new Date().getTime();
var emitResult = ts.emitFiles(emitResolver, getEmitHost(writeFileCallback), sourceFile);
ts.emitTime += new Date().getTime() - start;
return emitResult;
}
function getSourceFile(fileName) {
fileName = host.getCanonicalFileName(fileName);
fileName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
return ts.hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
}
function getDiagnosticsHelper(sourceFile, getDiagnostics) {
@ -29855,7 +29935,7 @@ var ts;
}
// Get source file from normalized fileName
function findSourceFile(fileName, isDefaultLib, refFile, refStart, refLength) {
var canonicalName = host.getCanonicalFileName(fileName);
var canonicalName = host.getCanonicalFileName(ts.normalizeSlashes(fileName));
if (ts.hasProperty(filesByName, canonicalName)) {
// We've already looked for this file, use cached result
return getSourceFileFromCache(fileName, canonicalName, false);
@ -30013,18 +30093,18 @@ var ts;
return allFilesBelongToPath;
}
function verifyCompilerOptions() {
if (options.separateCompilation) {
if (options.isolatedModules) {
if (options.sourceMap) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_sourceMap_cannot_be_specified_with_option_isolatedModules));
}
if (options.declaration) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_declaration_cannot_be_specified_with_option_isolatedModules));
}
if (options.noEmitOnError) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_noEmitOnError_cannot_be_specified_with_option_isolatedModules));
}
if (options.out) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_separateCompilation));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_out_cannot_be_specified_with_option_isolatedModules));
}
}
if (options.inlineSourceMap) {
@ -30055,14 +30135,14 @@ var ts;
}
var languageVersion = options.target || 0 /* ES3 */;
var firstExternalModuleSourceFile = ts.forEach(files, function (f) { return ts.isExternalModule(f) ? f : undefined; });
if (options.separateCompilation) {
if (options.isolatedModules) {
if (!options.module && languageVersion < 2 /* ES6 */) {
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_separateCompilation_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES6_or_higher));
}
var firstNonExternalModuleSourceFile = ts.forEach(files, function (f) { return !ts.isExternalModule(f) && !ts.isDeclarationFile(f) ? f : undefined; });
if (firstNonExternalModuleSourceFile) {
var span = ts.getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile);
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_separateCompilation_flag_is_provided));
diagnostics.add(ts.createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided));
}
}
else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) {
@ -30251,7 +30331,7 @@ var ts;
paramType: ts.Diagnostics.LOCATION
},
{
name: "separateCompilation",
name: "isolatedModules",
type: "boolean"
},
{
@ -30684,12 +30764,12 @@ var ts;
ts.forEach(program.getSourceFiles(), function (sourceFile) {
cancellationToken.throwIfCancellationRequested();
var nameToDeclarations = sourceFile.getNamedDeclarations();
for (var name_22 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_22);
for (var name_23 in nameToDeclarations) {
var declarations = ts.getProperty(nameToDeclarations, name_23);
if (declarations) {
// First do a quick check to see if the name of the declaration matches the
// last portion of the (possibly) dotted name they're searching for.
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_22);
var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_23);
if (!matches) {
continue;
}
@ -30702,14 +30782,14 @@ var ts;
if (!containers) {
return undefined;
}
matches = patternMatcher.getMatches(containers, name_22);
matches = patternMatcher.getMatches(containers, name_23);
if (!matches) {
continue;
}
}
var fileName = sourceFile.fileName;
var matchKind = bestMatchKind(matches);
rawItems.push({ name: name_22, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
rawItems.push({ name: name_23, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration });
}
}
}
@ -31092,9 +31172,9 @@ var ts;
case 199 /* VariableDeclaration */:
case 153 /* BindingElement */:
var variableDeclarationNode;
var name_23;
var name_24;
if (node.kind === 153 /* BindingElement */) {
name_23 = node.name;
name_24 = node.name;
variableDeclarationNode = node;
// binding elements are added only for variable declarations
// bubble up to the containing variable declaration
@ -31106,16 +31186,16 @@ var ts;
else {
ts.Debug.assert(!ts.isBindingPattern(node.name));
variableDeclarationNode = node;
name_23 = node.name;
name_24 = node.name;
}
if (ts.isConst(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.constElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.constElement);
}
else if (ts.isLet(variableDeclarationNode)) {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.letElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.letElement);
}
else {
return createItem(node, getTextOfNode(name_23), ts.ScriptElementKind.variableElement);
return createItem(node, getTextOfNode(name_24), ts.ScriptElementKind.variableElement);
}
case 136 /* Constructor */:
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);
@ -33702,9 +33782,9 @@ var ts;
}
Rules.prototype.getRuleName = function (rule) {
var o = this;
for (var name_24 in o) {
if (o[name_24] === rule) {
return name_24;
for (var name_25 in o) {
if (o[name_25] === rule) {
return name_25;
}
}
throw new Error("Unknown rule");
@ -36592,12 +36672,12 @@ var ts;
* This function will compile source text from 'input' argument using specified compiler options.
* If not options are provided - it will use a set of default compiler options.
* Extra compiler options that will unconditionally be used bu this function are:
* - separateCompilation = true
* - isolatedModules = true
* - allowNonTsExtensions = true
*/
function transpile(input, compilerOptions, fileName, diagnostics) {
var options = compilerOptions ? ts.clone(compilerOptions) : getDefaultCompilerOptions();
options.separateCompilation = true;
options.isolatedModules = true;
// Filename can be non-ts file.
options.allowNonTsExtensions = true;
// Parse
@ -36648,7 +36728,30 @@ var ts;
if (version !== sourceFile.version) {
// Once incremental parsing is ready, then just call into this function.
if (!ts.disableIncrementalParsing) {
var newSourceFile = ts.updateSourceFile(sourceFile, scriptSnapshot.getText(0, scriptSnapshot.getLength()), textChangeRange, aggressiveChecks);
var newText;
// grab the fragment from the beginning of the original text to the beginning of the span
var prefix = textChangeRange.span.start !== 0
? sourceFile.text.substr(0, textChangeRange.span.start)
: "";
// grab the fragment from the end of the span till the end of the original text
var suffix = ts.textSpanEnd(textChangeRange.span) !== sourceFile.text.length
? sourceFile.text.substr(ts.textSpanEnd(textChangeRange.span))
: "";
if (textChangeRange.newLength === 0) {
// edit was a deletion - just combine prefix and suffix
newText = prefix && suffix ? prefix + suffix : prefix || suffix;
}
else {
// it was actual edit, fetch the fragment of new text that correspond to new span
var changedText = scriptSnapshot.getText(textChangeRange.span.start, textChangeRange.span.start + textChangeRange.newLength);
// combine prefix, changed text and suffix
newText = prefix && suffix
? prefix + changedText + suffix
: prefix
? (prefix + changedText)
: (changedText + suffix);
}
var newSourceFile = ts.updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks);
setSourceFileFields(newSourceFile, scriptSnapshot, version);
// after incremental parsing nameTable might not be up-to-date
// drop it so it can be lazily recreated later
@ -37125,6 +37228,7 @@ var ts;
var syntaxTreeCache = new SyntaxTreeCache(host);
var ruleProvider;
var program;
var lastProjectVersion;
var useCaseSensitivefileNames = false;
var cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken());
// Check if the localized messages json is set, otherwise query the host for it
@ -37156,6 +37260,16 @@ var ts;
return ruleProvider;
}
function synchronizeHostData() {
// perform fast check if host supports it
if (host.getProjectVersion) {
var hostProjectVersion = host.getProjectVersion();
if (hostProjectVersion) {
if (lastProjectVersion === hostProjectVersion) {
return;
}
lastProjectVersion = hostProjectVersion;
}
}
// Get a fresh cache of the host information
var hostCache = new HostCache(host, getCanonicalFileName);
// If the program is already up-to-date, we can reuse it
@ -37954,10 +38068,10 @@ var ts;
for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) {
var sourceFile = _a[_i];
var nameTable = getNameTable(sourceFile);
for (var name_25 in nameTable) {
if (!allNames[name_25]) {
allNames[name_25] = name_25;
var displayName = getCompletionEntryDisplayName(name_25, target, true);
for (var name_26 in nameTable) {
if (!allNames[name_26]) {
allNames[name_26] = name_26;
var displayName = getCompletionEntryDisplayName(name_26, target, true);
if (displayName) {
var entry = {
name: displayName,
@ -39839,19 +39953,19 @@ var ts;
if (isNameOfPropertyAssignment(node)) {
var objectLiteral = node.parent.parent;
var contextualType = typeChecker.getContextualType(objectLiteral);
var name_26 = node.text;
var name_27 = node.text;
if (contextualType) {
if (contextualType.flags & 16384 /* Union */) {
// This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types)
// if not, search the constituent types for the property
var unionProperty = contextualType.getProperty(name_26);
var unionProperty = contextualType.getProperty(name_27);
if (unionProperty) {
return [unionProperty];
}
else {
var result_4 = [];
ts.forEach(contextualType.types, function (t) {
var symbol = t.getProperty(name_26);
var symbol = t.getProperty(name_27);
if (symbol) {
result_4.push(symbol);
}
@ -39860,7 +39974,7 @@ var ts;
}
}
else {
var symbol_1 = contextualType.getProperty(name_26);
var symbol_1 = contextualType.getProperty(name_27);
if (symbol_1) {
return [symbol_1];
}
@ -40280,10 +40394,12 @@ var ts;
var kind = triviaScanner.scan();
var end = triviaScanner.getTextPos();
var width = end - start;
// The moment we get something that isn't trivia, then stop processing.
if (!ts.isTrivia(kind)) {
return;
}
// Only bother with the trivia if it at least intersects the span of interest.
if (ts.textSpanIntersectsWith(span, start, width)) {
if (!ts.isTrivia(kind)) {
return;
}
if (ts.isComment(kind)) {
// Simple comment. Just add as is.
pushClassification(start, width, 1 /* comment */);
@ -41726,6 +41842,13 @@ var ts;
LanguageServiceShimHostAdapter.prototype.error = function (s) {
this.shimHost.error(s);
};
LanguageServiceShimHostAdapter.prototype.getProjectVersion = function () {
if (!this.shimHost.getProjectVersion) {
// shimmed host does not support getProjectVersion
return undefined;
}
return this.shimHost.getProjectVersion();
};
LanguageServiceShimHostAdapter.prototype.getCompilationSettings = function () {
var settingsJson = this.shimHost.getCompilationSettings();
if (settingsJson == null || settingsJson == "") {
@ -42324,4 +42447,4 @@ var TypeScript;
})(Services = TypeScript.Services || (TypeScript.Services = {}));
})(TypeScript || (TypeScript = {}));
/* @internal */
var toolsVersion = "1.4";
var toolsVersion = "1.5";