@@ -748,10 +748,9 @@ var ts;
748748 })(Debug = ts.Debug || (ts.Debug = {}));
749749 function copyListRemovingItem(item, list) {
750750 var copiedList = [];
751- for (var _i = 0; _i < list.length; _i++) {
752- var e = list[_i];
753- if (e !== item) {
754- copiedList.push(e);
751+ for (var i = 0, len = list.length; i < len; i++) {
752+ if (list[i] !== item) {
753+ copiedList.push(list[i]);
755754 }
756755 }
757756 return copiedList;
@@ -1054,7 +1053,7 @@ var ts;
10541053 };
10551054 },
10561055 watchDirectory: function (path, callback, recursive) {
1057- return _fs.watch(path, { persistent : true, recursive: !!recursive }, function (eventName, relativeFileName) {
1056+ return _fs.watch(path, { persisten : true, recursive: !!recursive }, function (eventName, relativeFileName) {
10581057 if (eventName === "rename") {
10591058 callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName)));
10601059 }
@@ -3859,15 +3858,15 @@ var ts;
38593858 return node.end - node.pos;
38603859 }
38613860 ts.getFullWidth = getFullWidth;
3862- function arrayIsEqualTo(array1, array2, equaler ) {
3863- if (!array1 || !array2 ) {
3864- return array1 === array2 ;
3861+ function arrayIsEqualTo(arr1, arr2, comparer ) {
3862+ if (!arr1 || !arr2 ) {
3863+ return arr1 === arr2 ;
38653864 }
3866- if (array1 .length !== array2 .length) {
3865+ if (arr1 .length !== arr2 .length) {
38673866 return false;
38683867 }
3869- for (var i = 0; i < array1 .length; ++i) {
3870- var equals = equaler ? equaler(array1 [i], array2 [i]) : array1 [i] === array2 [i];
3868+ for (var i = 0; i < arr1 .length; ++i) {
3869+ var equals = comparer ? comparer(arr1 [i], arr2 [i]) : arr1 [i] === arr2 [i];
38713870 if (!equals) {
38723871 return false;
38733872 }
@@ -5776,6 +5775,16 @@ var ts;
57765775 }
57775776 }
57785777 ts.getTypeParameterOwner = getTypeParameterOwner;
5778+ function arrayStructurallyIsEqualTo(array1, array2) {
5779+ if (!array1 || !array2) {
5780+ return false;
5781+ }
5782+ if (array1.length !== array2.length) {
5783+ return false;
5784+ }
5785+ return ts.arrayIsEqualTo(array1.sort(), array2.sort());
5786+ }
5787+ ts.arrayStructurallyIsEqualTo = arrayStructurallyIsEqualTo;
57795788})(ts || (ts = {}));
57805789var ts;
57815790(function (ts) {
@@ -12622,22 +12631,27 @@ var ts;
1262212631 }
1262312632 return type.resolvedBaseConstructorType;
1262412633 }
12634+ function hasClassBaseType(type) {
12635+ return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32); });
12636+ }
1262512637 function getBaseTypes(type) {
12638+ var isClass = type.symbol.flags & 32;
12639+ var isInterface = type.symbol.flags & 64;
1262612640 if (!type.resolvedBaseTypes) {
12627- if (type.symbol.flags & 32) {
12641+ if (!isClass && !isInterface) {
12642+ ts.Debug.fail("type must be class or interface");
12643+ }
12644+ if (isClass) {
1262812645 resolveBaseTypesOfClass(type);
1262912646 }
12630- else if (type.symbol.flags & 64 ) {
12647+ if (isInterface ) {
1263112648 resolveBaseTypesOfInterface(type);
1263212649 }
12633- else {
12634- ts.Debug.fail("type must be class or interface");
12635- }
1263612650 }
1263712651 return type.resolvedBaseTypes;
1263812652 }
1263912653 function resolveBaseTypesOfClass(type) {
12640- type.resolvedBaseTypes = emptyArray;
12654+ type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray;
1264112655 var baseContructorType = getBaseConstructorTypeOfClass(type);
1264212656 if (!(baseContructorType.flags & 80896)) {
1264312657 return;
@@ -12666,10 +12680,15 @@ var ts;
1266612680 error(type.symbol.valueDeclaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1));
1266712681 return;
1266812682 }
12669- type.resolvedBaseTypes = [baseType];
12683+ if (type.resolvedBaseTypes === emptyArray) {
12684+ type.resolvedBaseTypes = [baseType];
12685+ }
12686+ else {
12687+ type.resolvedBaseTypes.push(baseType);
12688+ }
1267012689 }
1267112690 function resolveBaseTypesOfInterface(type) {
12672- type.resolvedBaseTypes = [] ;
12691+ type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray ;
1267312692 for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) {
1267412693 var declaration = _a[_i];
1267512694 if (declaration.kind === 215 && ts.getInterfaceBaseTypeNodes(declaration)) {
@@ -12679,7 +12698,12 @@ var ts;
1267912698 if (baseType !== unknownType) {
1268012699 if (getTargetType(baseType).flags & (1024 | 2048)) {
1268112700 if (type !== baseType && !hasBaseType(baseType, type)) {
12682- type.resolvedBaseTypes.push(baseType);
12701+ if (type.resolvedBaseTypes === emptyArray) {
12702+ type.resolvedBaseTypes = [baseType];
12703+ }
12704+ else {
12705+ type.resolvedBaseTypes.push(baseType);
12706+ }
1268312707 }
1268412708 else {
1268512709 error(declaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1));
@@ -12977,7 +13001,7 @@ var ts;
1297713001 return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals);
1297813002 }
1297913003 function getDefaultConstructSignatures(classType) {
12980- if (!getBaseTypes (classType).length ) {
13004+ if (!hasClassBaseType (classType)) {
1298113005 return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)];
1298213006 }
1298313007 var baseConstructorType = getBaseConstructorTypeOfClass(classType);
@@ -14958,11 +14982,10 @@ var ts;
1495814982 }
1495914983 source = getErasedSignature(source);
1496014984 target = getErasedSignature(target);
14961- var sourceLen = source.parameters.length;
1496214985 var targetLen = target.parameters.length;
1496314986 for (var i = 0; i < targetLen; i++) {
14964- var s = source.hasRestParameter && i === sourceLen - 1 ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]);
14965- var t = target.hasRestParameter && i === targetLen - 1 ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]);
14987+ var s = isRestParameterIndex( source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]);
14988+ var t = isRestParameterIndex( target, i) ? getRestTypeOfSignature(target) : getTypeOfSymbol(target.parameters[i]);
1496614989 var related = compareTypes(s, t);
1496714990 if (!related) {
1496814991 return 0;
@@ -14974,6 +14997,9 @@ var ts;
1497414997 }
1497514998 return result;
1497614999 }
15000+ function isRestParameterIndex(signature, parameterIndex) {
15001+ return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1;
15002+ }
1497715003 function isSupertypeOfEach(candidate, types) {
1497815004 for (var _i = 0; _i < types.length; _i++) {
1497915005 var type = types[_i];
@@ -15912,8 +15938,9 @@ var ts;
1591215938 if (indexOfParameter < len) {
1591315939 return getTypeAtPosition(contextualSignature, indexOfParameter);
1591415940 }
15915- if (indexOfParameter === (func.parameters.length - 1) &&
15916- funcHasRestParameters && contextualSignature.hasRestParameter && func.parameters.length >= contextualSignature.parameters.length) {
15941+ if (funcHasRestParameters &&
15942+ indexOfParameter === (func.parameters.length - 1) &&
15943+ isRestParameterIndex(contextualSignature, func.parameters.length - 1)) {
1591715944 return getTypeOfSymbol(ts.lastOrUndefined(contextualSignature.parameters));
1591815945 }
1591915946 }
@@ -17033,7 +17060,7 @@ var ts;
1703317060 return false;
1703417061 }
1703517062 if (spreadArgIndex >= 0) {
17036- return signature.hasRestParameter && spreadArgIndex >= signature.parameters.length - 1 ;
17063+ return isRestParameterIndex( signature, spreadArgIndex) ;
1703717064 }
1703817065 if (!signature.hasRestParameter && adjustedArgCount > signature.parameters.length) {
1703917066 return false;
@@ -17631,7 +17658,7 @@ var ts;
1763117658 var contextualParameterType = getTypeAtPosition(context, i);
1763217659 assignTypeToParameterAndFixTypeParameters(parameter, contextualParameterType, mapper);
1763317660 }
17634- if (signature.hasRestParameter && context.hasRestParameter && signature.parameters.length >= context.parameters.length ) {
17661+ if (signature.hasRestParameter && isRestParameterIndex( context, signature.parameters.length - 1) ) {
1763517662 var parameter = ts.lastOrUndefined(signature.parameters);
1763617663 var contextualParameterType = getTypeOfSymbol(ts.lastOrUndefined(context.parameters));
1763717664 assignTypeToParameterAndFixTypeParameters(parameter, contextualParameterType, mapper);
@@ -25359,32 +25386,36 @@ var ts;
2535925386 write(".");
2536025387 }
2536125388 }
25362- else if (modulekind !== 5) {
25363- var declaration = resolver.getReferencedImportDeclaration(node);
25364- if (declaration) {
25365- if (declaration.kind === 223) {
25366- write(getGeneratedNameForNode(declaration.parent));
25367- write(languageVersion === 0 ? "[\"default\"]" : ".default");
25368- return;
25369- }
25370- else if (declaration.kind === 226) {
25371- write(getGeneratedNameForNode(declaration.parent.parent.parent));
25372- var name_23 = declaration.propertyName || declaration.name;
25373- var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name_23);
25374- if (languageVersion === 0 && identifier === "default") {
25375- write("[\"default\"]");
25389+ else {
25390+ if (modulekind !== 5) {
25391+ var declaration = resolver.getReferencedImportDeclaration(node);
25392+ if (declaration) {
25393+ if (declaration.kind === 223) {
25394+ write(getGeneratedNameForNode(declaration.parent));
25395+ write(languageVersion === 0 ? "[\"default\"]" : ".default");
25396+ return;
2537625397 }
25377- else {
25378- write(".");
25379- write(identifier);
25398+ else if (declaration.kind === 226) {
25399+ write(getGeneratedNameForNode(declaration.parent.parent.parent));
25400+ var name_23 = declaration.propertyName || declaration.name;
25401+ var identifier = ts.getSourceTextOfNodeFromSourceFile(currentSourceFile, name_23);
25402+ if (languageVersion === 0 && identifier === "default") {
25403+ write("[\"default\"]");
25404+ }
25405+ else {
25406+ write(".");
25407+ write(identifier);
25408+ }
25409+ return;
2538025410 }
25381- return;
2538225411 }
2538325412 }
25384- declaration = resolver.getReferencedNestedRedeclaration(node);
25385- if (declaration) {
25386- write(getGeneratedNameForNode(declaration.name));
25387- return;
25413+ if (languageVersion !== 2) {
25414+ var declaration = resolver.getReferencedNestedRedeclaration(node);
25415+ if (declaration) {
25416+ write(getGeneratedNameForNode(declaration.name));
25417+ return;
25418+ }
2538825419 }
2538925420 }
2539025421 if (ts.nodeIsSynthesized(node)) {
@@ -31404,7 +31435,7 @@ var ts;
3140431435 var parsedCommandLine = parseConfigFile();
3140531436 var newFileNames = ts.map(parsedCommandLine.fileNames, compilerHost.getCanonicalFileName);
3140631437 var canonicalRootFileNames = ts.map(rootFileNames, compilerHost.getCanonicalFileName);
31407- if (!ts.arrayIsEqualTo (newFileNames && newFileNames.sort() , canonicalRootFileNames && canonicalRootFileNames.sort() )) {
31438+ if (!ts.arrayStructurallyIsEqualTo (newFileNames, canonicalRootFileNames)) {
3140831439 setCachedProgram(undefined);
3140931440 startTimerForRecompilation();
3141031441 }
0 commit comments