@@ -67,7 +67,7 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
67
67
var ts;
68
68
(function (ts) {
69
69
ts.versionMajorMinor = "3.9";
70
- ts.version = "3.9.1-rc ";
70
+ ts.version = "3.9.2 ";
71
71
function tryGetNativeMap() {
72
72
return typeof Map !== "undefined" && "entries" in Map.prototype ? Map : undefined;
73
73
}
@@ -27221,18 +27221,17 @@ var ts;
27221
27221
if (ts.isIdentifier(node.left.expression) && container === file && isExportsOrModuleExportsOrAlias(file, node.left.expression)) {
27222
27222
bindExportsPropertyAssignment(node);
27223
27223
}
27224
+ else if (ts.hasDynamicName(node)) {
27225
+ bindAnonymousDeclaration(node, 4 | 67108864, "__computed");
27226
+ var sym = bindPotentiallyMissingNamespaces(parentSymbol, node.left.expression, isTopLevelNamespaceAssignment(node.left), false, false);
27227
+ addLateBoundAssignmentDeclarationToSymbol(node, sym);
27228
+ }
27224
27229
else {
27225
- if (ts.hasDynamicName(node)) {
27226
- bindAnonymousDeclaration(node, 4 | 67108864, "__computed");
27227
- var sym = bindPotentiallyMissingNamespaces(parentSymbol, node.left.expression, isTopLevelNamespaceAssignment(node.left), false, false);
27228
- addLateBoundAssignmentDeclarationToSymbol(node, sym);
27229
- }
27230
- else {
27231
- bindStaticPropertyAssignment(ts.cast(node.left, ts.isBindableStaticAccessExpression));
27232
- }
27230
+ bindStaticPropertyAssignment(ts.cast(node.left, ts.isBindableStaticNameExpression));
27233
27231
}
27234
27232
}
27235
27233
function bindStaticPropertyAssignment(node) {
27234
+ ts.Debug.assert(!ts.isIdentifier(node));
27236
27235
node.expression.parent = node;
27237
27236
bindPropertyAssignment(node.expression, node, false, false);
27238
27237
}
@@ -29808,7 +29807,9 @@ var ts;
29808
29807
lastLocation === location.name && ts.isBindingPattern(lastLocation))) {
29809
29808
var root = ts.getRootDeclaration(location);
29810
29809
if (root.kind === 156) {
29811
- associatedDeclarationForContainingInitializerOrBindingName = location;
29810
+ if (!associatedDeclarationForContainingInitializerOrBindingName) {
29811
+ associatedDeclarationForContainingInitializerOrBindingName = location;
29812
+ }
29812
29813
}
29813
29814
}
29814
29815
break;
@@ -32762,12 +32763,15 @@ var ts;
32762
32763
function getDeclarationWithTypeAnnotation(symbol, enclosingDeclaration) {
32763
32764
return symbol.declarations && ts.find(symbol.declarations, function (s) { return !!ts.getEffectiveTypeAnnotationNode(s) && (!enclosingDeclaration || !!ts.findAncestor(s, function (n) { return n === enclosingDeclaration; })); });
32764
32765
}
32766
+ function existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type) {
32767
+ return !(ts.getObjectFlags(type) & 4) || !ts.isTypeReferenceNode(existing) || ts.length(existing.typeArguments) >= getMinTypeArgumentCount(type.target.typeParameters);
32768
+ }
32765
32769
function serializeTypeForDeclaration(context, type, symbol, enclosingDeclaration, includePrivateSymbol, bundled) {
32766
32770
if (type !== errorType && enclosingDeclaration) {
32767
32771
var declWithExistingAnnotation = getDeclarationWithTypeAnnotation(symbol, enclosingDeclaration);
32768
32772
if (declWithExistingAnnotation && !ts.isFunctionLikeDeclaration(declWithExistingAnnotation)) {
32769
32773
var existing = ts.getEffectiveTypeAnnotationNode(declWithExistingAnnotation);
32770
- if (getTypeFromTypeNode(existing) === type) {
32774
+ if (getTypeFromTypeNode(existing) === type && existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type) ) {
32771
32775
var result_4 = serializeExistingTypeNode(context, existing, includePrivateSymbol, bundled);
32772
32776
if (result_4) {
32773
32777
return result_4;
@@ -32787,7 +32791,7 @@ var ts;
32787
32791
function serializeReturnTypeForSignature(context, type, signature, includePrivateSymbol, bundled) {
32788
32792
if (type !== errorType && context.enclosingDeclaration) {
32789
32793
var annotation = signature.declaration && ts.getEffectiveReturnTypeNode(signature.declaration);
32790
- if (!!ts.findAncestor(annotation, function (n) { return n === context.enclosingDeclaration; }) && annotation && instantiateType(getTypeFromTypeNode(annotation), signature.mapper) === type) {
32794
+ if (!!ts.findAncestor(annotation, function (n) { return n === context.enclosingDeclaration; }) && annotation && instantiateType(getTypeFromTypeNode(annotation), signature.mapper) === type && existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(annotation, type) ) {
32791
32795
var result = serializeExistingTypeNode(context, annotation, includePrivateSymbol, bundled);
32792
32796
if (result) {
32793
32797
return result;
@@ -32826,6 +32830,14 @@ var ts;
32826
32830
if (ts.isJSDocVariadicType(node)) {
32827
32831
return ts.createArrayTypeNode(ts.visitNode(node.type, visitExistingNodeTreeSymbols));
32828
32832
}
32833
+ if (ts.isJSDocTypeLiteral(node)) {
32834
+ return ts.createTypeLiteralNode(ts.map(node.jsDocPropertyTags, function (t) {
32835
+ var name = ts.isIdentifier(t.name) ? t.name : t.name.right;
32836
+ var typeViaParent = getTypeOfPropertyOfType(getTypeFromTypeNode(node), name.escapedText);
32837
+ var overrideTypeNode = typeViaParent && t.typeExpression && getTypeFromTypeNode(t.typeExpression.type) !== typeViaParent ? typeToTypeNodeHelper(typeViaParent, context) : undefined;
32838
+ return ts.createPropertySignature(undefined, name, t.typeExpression && ts.isJSDocOptionalType(t.typeExpression.type) ? ts.createToken(57) : undefined, overrideTypeNode || (t.typeExpression && ts.visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols)) || ts.createKeywordTypeNode(125), undefined);
32839
+ }));
32840
+ }
32829
32841
if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName) && node.typeName.escapedText === "") {
32830
32842
return ts.setOriginalNode(ts.createKeywordTypeNode(125), node);
32831
32843
}
@@ -32841,6 +32853,9 @@ var ts;
32841
32853
return ts.createFunctionTypeNode(ts.visitNodes(node.typeParameters, visitExistingNodeTreeSymbols), ts.map(node.parameters, function (p, i) { return ts.createParameter(undefined, undefined, getEffectiveDotDotDotForParameter(p), p.name || getEffectiveDotDotDotForParameter(p) ? "args" : "arg" + i, p.questionToken, ts.visitNode(p.type, visitExistingNodeTreeSymbols), undefined); }), ts.visitNode(node.type, visitExistingNodeTreeSymbols));
32842
32854
}
32843
32855
}
32856
+ if (ts.isTypeReferenceNode(node) && ts.isInJSDoc(node) && (getIntendedTypeFromJSDocTypeReference(node) || unknownSymbol === resolveTypeReferenceName(getTypeReferenceName(node), 788968, true))) {
32857
+ return ts.setOriginalNode(typeToTypeNodeHelper(getTypeFromTypeNode(node), context), node);
32858
+ }
32844
32859
if (ts.isLiteralImportTypeNode(node)) {
32845
32860
return ts.updateImportTypeNode(node, ts.updateLiteralTypeNode(node.argument, rewriteModuleSpecifier(node, node.argument.literal)), node.qualifier, ts.visitNodes(node.typeArguments, visitExistingNodeTreeSymbols, ts.isTypeNode), node.isTypeOf);
32846
32861
}
@@ -40940,7 +40955,7 @@ var ts;
40940
40955
}
40941
40956
}
40942
40957
if (result && !inPropertyCheck && (target.flags & 2097152 && (isPerformingExcessPropertyChecks || isPerformingCommonPropertyChecks) ||
40943
- isNonGenericObjectType(target) && source.flags & 2097152 && getApparentType(source).flags & 3670016 && !ts.some(source.types, function (t) { return !!(ts.getObjectFlags(t) & 2097152); }))) {
40958
+ isNonGenericObjectType(target) && !isArrayType(target) && !isTupleType(target) && source.flags & 2097152 && getApparentType(source).flags & 3670016 && !ts.some(source.types, function (t) { return !!(ts.getObjectFlags(t) & 2097152); }))) {
40944
40959
inPropertyCheck = true;
40945
40960
result &= recursiveTypeRelatedTo(source, target, reportErrors, 4);
40946
40961
inPropertyCheck = false;
@@ -44661,7 +44676,7 @@ var ts;
44661
44676
var predicate = getTypePredicateOfSignature(signature);
44662
44677
if (predicate && (predicate.kind === 2 || predicate.kind === 3)) {
44663
44678
var flowType = getTypeAtFlowNode(flow.antecedent);
44664
- var type = getTypeFromFlowType(flowType);
44679
+ var type = finalizeEvolvingArrayType( getTypeFromFlowType(flowType) );
44665
44680
var narrowedType = predicate.type ? narrowTypeByTypePredicate(type, predicate, flow.node, true) :
44666
44681
predicate.kind === 3 && predicate.parameterIndex >= 0 && predicate.parameterIndex < flow.node.arguments.length ? narrowTypeByAssertion(type, flow.node.arguments[predicate.parameterIndex]) :
44667
44682
type;
0 commit comments