@@ -748,10 +748,9 @@ var ts;
748
748
})(Debug = ts.Debug || (ts.Debug = {}));
749
749
function copyListRemovingItem(item, list) {
750
750
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]);
755
754
}
756
755
}
757
756
return copiedList;
@@ -1054,7 +1053,7 @@ var ts;
1054
1053
};
1055
1054
},
1056
1055
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) {
1058
1057
if (eventName === "rename") {
1059
1058
callback(!relativeFileName ? relativeFileName : ts.normalizePath(ts.combinePaths(path, relativeFileName)));
1060
1059
}
@@ -3859,15 +3858,15 @@ var ts;
3859
3858
return node.end - node.pos;
3860
3859
}
3861
3860
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 ;
3865
3864
}
3866
- if (array1 .length !== array2 .length) {
3865
+ if (arr1 .length !== arr2 .length) {
3867
3866
return false;
3868
3867
}
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];
3871
3870
if (!equals) {
3872
3871
return false;
3873
3872
}
@@ -5776,6 +5775,16 @@ var ts;
5776
5775
}
5777
5776
}
5778
5777
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;
5779
5788
})(ts || (ts = {}));
5780
5789
var ts;
5781
5790
(function (ts) {
@@ -12622,22 +12631,27 @@ var ts;
12622
12631
}
12623
12632
return type.resolvedBaseConstructorType;
12624
12633
}
12634
+ function hasClassBaseType(type) {
12635
+ return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32); });
12636
+ }
12625
12637
function getBaseTypes(type) {
12638
+ var isClass = type.symbol.flags & 32;
12639
+ var isInterface = type.symbol.flags & 64;
12626
12640
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) {
12628
12645
resolveBaseTypesOfClass(type);
12629
12646
}
12630
- else if (type.symbol.flags & 64 ) {
12647
+ if (isInterface ) {
12631
12648
resolveBaseTypesOfInterface(type);
12632
12649
}
12633
- else {
12634
- ts.Debug.fail("type must be class or interface");
12635
- }
12636
12650
}
12637
12651
return type.resolvedBaseTypes;
12638
12652
}
12639
12653
function resolveBaseTypesOfClass(type) {
12640
- type.resolvedBaseTypes = emptyArray;
12654
+ type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray;
12641
12655
var baseContructorType = getBaseConstructorTypeOfClass(type);
12642
12656
if (!(baseContructorType.flags & 80896)) {
12643
12657
return;
@@ -12666,10 +12680,15 @@ var ts;
12666
12680
error(type.symbol.valueDeclaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1));
12667
12681
return;
12668
12682
}
12669
- type.resolvedBaseTypes = [baseType];
12683
+ if (type.resolvedBaseTypes === emptyArray) {
12684
+ type.resolvedBaseTypes = [baseType];
12685
+ }
12686
+ else {
12687
+ type.resolvedBaseTypes.push(baseType);
12688
+ }
12670
12689
}
12671
12690
function resolveBaseTypesOfInterface(type) {
12672
- type.resolvedBaseTypes = [] ;
12691
+ type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray ;
12673
12692
for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) {
12674
12693
var declaration = _a[_i];
12675
12694
if (declaration.kind === 215 && ts.getInterfaceBaseTypeNodes(declaration)) {
@@ -12679,7 +12698,12 @@ var ts;
12679
12698
if (baseType !== unknownType) {
12680
12699
if (getTargetType(baseType).flags & (1024 | 2048)) {
12681
12700
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
+ }
12683
12707
}
12684
12708
else {
12685
12709
error(declaration, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, undefined, 1));
@@ -12977,7 +13001,7 @@ var ts;
12977
13001
return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals);
12978
13002
}
12979
13003
function getDefaultConstructSignatures(classType) {
12980
- if (!getBaseTypes (classType).length ) {
13004
+ if (!hasClassBaseType (classType)) {
12981
13005
return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)];
12982
13006
}
12983
13007
var baseConstructorType = getBaseConstructorTypeOfClass(classType);
@@ -14958,11 +14982,10 @@ var ts;
14958
14982
}
14959
14983
source = getErasedSignature(source);
14960
14984
target = getErasedSignature(target);
14961
- var sourceLen = source.parameters.length;
14962
14985
var targetLen = target.parameters.length;
14963
14986
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]);
14966
14989
var related = compareTypes(s, t);
14967
14990
if (!related) {
14968
14991
return 0;
@@ -14974,6 +14997,9 @@ var ts;
14974
14997
}
14975
14998
return result;
14976
14999
}
15000
+ function isRestParameterIndex(signature, parameterIndex) {
15001
+ return signature.hasRestParameter && parameterIndex >= signature.parameters.length - 1;
15002
+ }
14977
15003
function isSupertypeOfEach(candidate, types) {
14978
15004
for (var _i = 0; _i < types.length; _i++) {
14979
15005
var type = types[_i];
@@ -15912,8 +15938,9 @@ var ts;
15912
15938
if (indexOfParameter < len) {
15913
15939
return getTypeAtPosition(contextualSignature, indexOfParameter);
15914
15940
}
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)) {
15917
15944
return getTypeOfSymbol(ts.lastOrUndefined(contextualSignature.parameters));
15918
15945
}
15919
15946
}
@@ -17033,7 +17060,7 @@ var ts;
17033
17060
return false;
17034
17061
}
17035
17062
if (spreadArgIndex >= 0) {
17036
- return signature.hasRestParameter && spreadArgIndex >= signature.parameters.length - 1 ;
17063
+ return isRestParameterIndex( signature, spreadArgIndex) ;
17037
17064
}
17038
17065
if (!signature.hasRestParameter && adjustedArgCount > signature.parameters.length) {
17039
17066
return false;
@@ -17631,7 +17658,7 @@ var ts;
17631
17658
var contextualParameterType = getTypeAtPosition(context, i);
17632
17659
assignTypeToParameterAndFixTypeParameters(parameter, contextualParameterType, mapper);
17633
17660
}
17634
- if (signature.hasRestParameter && context.hasRestParameter && signature.parameters.length >= context.parameters.length ) {
17661
+ if (signature.hasRestParameter && isRestParameterIndex( context, signature.parameters.length - 1) ) {
17635
17662
var parameter = ts.lastOrUndefined(signature.parameters);
17636
17663
var contextualParameterType = getTypeOfSymbol(ts.lastOrUndefined(context.parameters));
17637
17664
assignTypeToParameterAndFixTypeParameters(parameter, contextualParameterType, mapper);
@@ -25359,32 +25386,36 @@ var ts;
25359
25386
write(".");
25360
25387
}
25361
25388
}
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;
25376
25397
}
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;
25380
25410
}
25381
- return;
25382
25411
}
25383
25412
}
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
+ }
25388
25419
}
25389
25420
}
25390
25421
if (ts.nodeIsSynthesized(node)) {
@@ -31404,7 +31435,7 @@ var ts;
31404
31435
var parsedCommandLine = parseConfigFile();
31405
31436
var newFileNames = ts.map(parsedCommandLine.fileNames, compilerHost.getCanonicalFileName);
31406
31437
var canonicalRootFileNames = ts.map(rootFileNames, compilerHost.getCanonicalFileName);
31407
- if (!ts.arrayIsEqualTo (newFileNames && newFileNames.sort() , canonicalRootFileNames && canonicalRootFileNames.sort() )) {
31438
+ if (!ts.arrayStructurallyIsEqualTo (newFileNames, canonicalRootFileNames)) {
31408
31439
setCachedProgram(undefined);
31409
31440
startTimerForRecompilation();
31410
31441
}
0 commit comments