Skip to content

Commit 5b3dcb1

Browse files
committed
Update tsserver with recent fixes in TS 1.7 branch
1 parent a4c4b9f commit 5b3dcb1

File tree

2 files changed

+191
-102
lines changed

2 files changed

+191
-102
lines changed

tsserver/tsc.js

+82-51
Original file line numberDiff line numberDiff line change
@@ -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 = {}));
57805789
var 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

Comments
 (0)