@@ -933,7 +933,14 @@ var ts;
933933 newLine: _os.EOL,
934934 useCaseSensitiveFileNames: useCaseSensitiveFileNames,
935935 write: function (s) {
936- _fs.writeSync(1, s);
936+ var buffer = new Buffer(s, 'utf8');
937+ var offset = 0;
938+ var toWrite = buffer.length;
939+ var written = 0;
940+ while ((written = _fs.writeSync(1, buffer, offset, toWrite)) < toWrite) {
941+ offset += written;
942+ toWrite -= written;
943+ }
937944 },
938945 readFile: readFile,
939946 writeFile: writeFile,
@@ -1401,7 +1408,7 @@ var ts;
14011408 Classes_containing_abstract_methods_must_be_marked_abstract: { code: 2514, category: ts.DiagnosticCategory.Error, key: "Classes containing abstract methods must be marked abstract." },
14021409 Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: ts.DiagnosticCategory.Error, key: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." },
14031410 All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: ts.DiagnosticCategory.Error, key: "All declarations of an abstract method must be consecutive." },
1404- Constructor_objects_of_abstract_type_cannot_be_assigned_to_constructor_objects_of_non_abstract_type : { code: 2517, category: ts.DiagnosticCategory.Error, key: "Constructor objects of abstract type cannot be assigned to constructor objects of non-abstract type" },
1411+ Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type : { code: 2517, category: ts.DiagnosticCategory.Error, key: "Cannot assign an abstract constructor type to a non-abstract constructor type. " },
14051412 Only_an_ambient_class_can_be_merged_with_an_interface: { code: 2518, category: ts.DiagnosticCategory.Error, key: "Only an ambient class can be merged with an interface." },
14061413 Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." },
14071414 Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: ts.DiagnosticCategory.Error, key: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." },
@@ -9187,7 +9194,8 @@ var ts;
91879194 }
91889195 else {
91899196 node.exportClause = parseNamedImportsOrExports(226);
9190- if (parseOptional(130)) {
9197+ if (token === 130 || (token === 8 && !scanner.hasPrecedingLineBreak())) {
9198+ parseExpected(130);
91919199 node.moduleSpecifier = parseModuleSpecifier();
91929200 }
91939201 }
@@ -13263,7 +13271,7 @@ var ts;
1326313271 var id = getTypeListId(elementTypes);
1326413272 var type = tupleTypes[id];
1326513273 if (!type) {
13266- type = tupleTypes[id] = createObjectType(8192);
13274+ type = tupleTypes[id] = createObjectType(8192 | getWideningFlagsOfTypes(elementTypes) );
1326713275 type.elementTypes = elementTypes;
1326813276 }
1326913277 return type;
@@ -14084,10 +14092,29 @@ var ts;
1408414092 var targetSignatures = getSignaturesOfType(target, kind);
1408514093 var result = -1;
1408614094 var saveErrorInfo = errorInfo;
14095+ var sourceSig = sourceSignatures[0];
14096+ var targetSig = targetSignatures[0];
14097+ if (sourceSig && targetSig) {
14098+ var sourceErasedSignature = getErasedSignature(sourceSig);
14099+ var targetErasedSignature = getErasedSignature(targetSig);
14100+ var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature);
14101+ var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature);
14102+ var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && ts.getDeclarationOfKind(sourceReturnType.symbol, 211);
14103+ var targetReturnDecl = targetReturnType && targetReturnType.symbol && ts.getDeclarationOfKind(targetReturnType.symbol, 211);
14104+ var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 256;
14105+ var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 256;
14106+ if (sourceIsAbstract && !targetIsAbstract) {
14107+ if (reportErrors) {
14108+ reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type);
14109+ }
14110+ return 0;
14111+ }
14112+ }
1408714113 outer: for (var _i = 0; _i < targetSignatures.length; _i++) {
1408814114 var t = targetSignatures[_i];
1408914115 if (!t.hasStringLiterals || target.flags & 262144) {
1409014116 var localErrors = reportErrors;
14117+ var checkedAbstractAssignability = false;
1409114118 for (var _a = 0; _a < sourceSignatures.length; _a++) {
1409214119 var s = sourceSignatures[_a];
1409314120 if (!s.hasStringLiterals || source.flags & 262144) {
@@ -14135,12 +14162,12 @@ var ts;
1413514162 target = getErasedSignature(target);
1413614163 var result = -1;
1413714164 for (var i = 0; i < checkCount; i++) {
14138- var s_1 = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source);
14139- var t_1 = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target);
14165+ var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source);
14166+ var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target);
1414014167 var saveErrorInfo = errorInfo;
14141- var related = isRelatedTo(s_1, t_1 , reportErrors);
14168+ var related = isRelatedTo(s, t , reportErrors);
1414214169 if (!related) {
14143- related = isRelatedTo(t_1, s_1 , false);
14170+ related = isRelatedTo(t, s , false);
1414414171 if (!related) {
1414514172 if (reportErrors) {
1414614173 reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name);
@@ -14178,11 +14205,11 @@ var ts;
1417814205 }
1417914206 return 0;
1418014207 }
14181- var t = getReturnTypeOfSignature(target);
14182- if (t === voidType)
14208+ var targetReturnType = getReturnTypeOfSignature(target);
14209+ if (targetReturnType === voidType)
1418314210 return result;
14184- var s = getReturnTypeOfSignature(source);
14185- return result & isRelatedTo(s, t , reportErrors);
14211+ var sourceReturnType = getReturnTypeOfSignature(source);
14212+ return result & isRelatedTo(sourceReturnType, targetReturnType , reportErrors);
1418614213 }
1418714214 function signaturesIdenticalTo(source, target, kind) {
1418814215 var sourceSignatures = getSignaturesOfType(source, kind);
@@ -14395,7 +14422,7 @@ var ts;
1439514422 return !!getPropertyOfType(type, "0");
1439614423 }
1439714424 function isTupleType(type) {
14398- return (type.flags & 8192) && !!type.elementTypes ;
14425+ return !! (type.flags & 8192);
1439914426 }
1440014427 function getWidenedTypeOfObjectLiteral(type) {
1440114428 var properties = getPropertiesOfObjectType(type);
@@ -14437,36 +14464,46 @@ var ts;
1443714464 if (isArrayType(type)) {
1443814465 return createArrayType(getWidenedType(type.typeArguments[0]));
1443914466 }
14467+ if (isTupleType(type)) {
14468+ return createTupleType(ts.map(type.elementTypes, getWidenedType));
14469+ }
1444014470 }
1444114471 return type;
1444214472 }
1444314473 function reportWideningErrorsInType(type) {
14474+ var errorReported = false;
1444414475 if (type.flags & 16384) {
14445- var errorReported = false;
14446- ts.forEach(type.types, function (t) {
14476+ for ( var _i = 0, _a = type.types; _i < _a.length; _i++) {
14477+ var t = _a[_i];
1444714478 if (reportWideningErrorsInType(t)) {
1444814479 errorReported = true;
1444914480 }
14450- });
14451- return errorReported;
14481+ }
1445214482 }
1445314483 if (isArrayType(type)) {
1445414484 return reportWideningErrorsInType(type.typeArguments[0]);
1445514485 }
14486+ if (isTupleType(type)) {
14487+ for (var _b = 0, _c = type.elementTypes; _b < _c.length; _b++) {
14488+ var t = _c[_b];
14489+ if (reportWideningErrorsInType(t)) {
14490+ errorReported = true;
14491+ }
14492+ }
14493+ }
1445614494 if (type.flags & 524288) {
14457- var errorReported = false;
14458- ts.forEach(getPropertiesOfObjectType(type), function (p) {
14495+ for ( var _d = 0, _e = getPropertiesOfObjectType(type); _d < _e.length; _d++) {
14496+ var p = _e[_d];
1445914497 var t = getTypeOfSymbol(p);
1446014498 if (t.flags & 1048576) {
1446114499 if (!reportWideningErrorsInType(t)) {
1446214500 error(p.valueDeclaration, ts.Diagnostics.Object_literal_s_property_0_implicitly_has_an_1_type, p.name, typeToString(getWidenedType(t)));
1446314501 }
1446414502 errorReported = true;
1446514503 }
14466- });
14467- return errorReported;
14504+ }
1446814505 }
14469- return false ;
14506+ return errorReported ;
1447014507 }
1447114508 function reportImplicitAnyError(declaration, type) {
1447214509 var typeAsString = typeToString(getWidenedType(type));
@@ -14614,28 +14651,31 @@ var ts;
1461414651 inferFromTypes(sourceType, target);
1461514652 }
1461614653 }
14617- else if (source.flags & 80896 && (target.flags & (4096 | 8192) ||
14618- (target.flags & 65536) && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) {
14619- if (isInProcess(source, target)) {
14620- return;
14621- }
14622- if (isDeeplyNestedGeneric(source, sourceStack, depth) && isDeeplyNestedGeneric(target, targetStack, depth)) {
14623- return;
14654+ else {
14655+ source = getApparentType(source);
14656+ if (source.flags & 80896 && (target.flags & (4096 | 8192) ||
14657+ (target.flags & 65536) && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) {
14658+ if (isInProcess(source, target)) {
14659+ return;
14660+ }
14661+ if (isDeeplyNestedGeneric(source, sourceStack, depth) && isDeeplyNestedGeneric(target, targetStack, depth)) {
14662+ return;
14663+ }
14664+ if (depth === 0) {
14665+ sourceStack = [];
14666+ targetStack = [];
14667+ }
14668+ sourceStack[depth] = source;
14669+ targetStack[depth] = target;
14670+ depth++;
14671+ inferFromProperties(source, target);
14672+ inferFromSignatures(source, target, 0);
14673+ inferFromSignatures(source, target, 1);
14674+ inferFromIndexTypes(source, target, 0, 0);
14675+ inferFromIndexTypes(source, target, 1, 1);
14676+ inferFromIndexTypes(source, target, 0, 1);
14677+ depth--;
1462414678 }
14625- if (depth === 0) {
14626- sourceStack = [];
14627- targetStack = [];
14628- }
14629- sourceStack[depth] = source;
14630- targetStack[depth] = target;
14631- depth++;
14632- inferFromProperties(source, target);
14633- inferFromSignatures(source, target, 0);
14634- inferFromSignatures(source, target, 1);
14635- inferFromIndexTypes(source, target, 0, 0);
14636- inferFromIndexTypes(source, target, 1, 1);
14637- inferFromIndexTypes(source, target, 0, 1);
14638- depth--;
1463914679 }
1464014680 }
1464114681 function inferFromProperties(source, target) {
0 commit comments