@@ -85,7 +85,7 @@ var ts;
8585 ts.versionMajorMinor = "3.1";
8686 /** The version of the TypeScript compiler release */
8787 ts.version = ts.versionMajorMinor + ".3";
88- ts.version_plus = "3.1.3 ";
88+ ts.version_plus = "3.1.4 ";
8989})(ts || (ts = {}));
9090(function (ts) {
9191 /* @internal */
@@ -79917,6 +79917,7 @@ var ts;
7991779917 var dependencyMap;
7991879918 var pathWeightMap;
7991979919 var visitedBlocks;
79920+ var calledMethods = [];
7992079921 function createMap() {
7992179922 var map = Object.create(null);
7992279923 // Using 'delete' on an object causes V8 to put the object in dictionary mode.
@@ -80407,10 +80408,13 @@ var ts;
8040780408 continue;
8040880409 }
8040980410 addDependency(callerFileName, sourceFile.fileName);
80410- if (declaration.kind === 237 /* FunctionDeclaration */ ||
80411- declaration.kind === 154 /* MethodDeclaration */) {
80411+ if (declaration.kind === 237 /* FunctionDeclaration */) {
8041280412 visitBlock(declaration.body);
8041380413 }
80414+ else if (declaration.kind === 154 /* MethodDeclaration */) {
80415+ visitBlock(declaration.body);
80416+ calledMethods.push(declaration);
80417+ }
8041480418 else if (declaration.kind === 238 /* ClassDeclaration */) {
8041580419 checkClassInstantiation(declaration);
8041680420 }
@@ -80464,15 +80468,33 @@ var ts;
8046480468 }
8046580469 }
8046680470 function checkClassInstantiation(node) {
80471+ var superMethodNames = [];
80472+ var superClass = ts.getClassExtendsHeritageElement(node);
80473+ if (superClass) {
80474+ var type = checker.getTypeAtLocation(superClass);
80475+ if (type && type.symbol) {
80476+ var declaration = ts.getDeclarationOfKind(type.symbol, 238 /* ClassDeclaration */);
80477+ if (declaration) {
80478+ superMethodNames = checkClassInstantiation(declaration);
80479+ }
80480+ }
80481+ }
8046780482 var members = node.members;
8046880483 if (!members) {
80469- return;
80484+ return [] ;
8047080485 }
80486+ var index = calledMethods.length;
8047180487 for (var _i = 0, members_8 = members; _i < members_8.length; _i++) {
8047280488 var member = members_8[_i];
8047380489 if (ts.hasModifier(member, 32 /* Static */)) {
8047480490 continue;
8047580491 }
80492+ if (member.kind === 154 /* MethodDeclaration */) { // called by super class.
80493+ var methodName = ts.unescapeLeadingUnderscores(ts.getTextOfPropertyName(member.name));
80494+ if (superMethodNames.indexOf(methodName) != -1) {
80495+ visitBlock(member.body);
80496+ }
80497+ }
8047680498 if (member.kind === 152 /* PropertyDeclaration */) {
8047780499 var property = member;
8047880500 visitExpression(property.initializer);
@@ -80482,6 +80504,21 @@ var ts;
8048280504 visitBlock(constructor.body);
8048380505 }
8048480506 }
80507+ var methodNames = [];
80508+ for (var i = index; i < calledMethods.length; i++) {
80509+ var method = calledMethods[i];
80510+ for (var _a = 0, members_9 = members; _a < members_9.length; _a++) {
80511+ var memeber = members_9[_a];
80512+ if (memeber === method) {
80513+ var methodName = ts.unescapeLeadingUnderscores(ts.getTextOfPropertyName(method.name));
80514+ methodNames.push(methodName);
80515+ }
80516+ }
80517+ }
80518+ if (index == 0) {
80519+ calledMethods.length = 0;
80520+ }
80521+ return methodNames;
8048580522 }
8048680523 function visitBlock(block) {
8048780524 if (!block || visitedBlocks.indexOf(block) != -1) {
@@ -111676,15 +111713,15 @@ var ts;
111676111713 return checker.createArrayType(recur(usageContext.numberIndexContext));
111677111714 }
111678111715 else if (usageContext.properties || usageContext.callContexts || usageContext.constructContexts || usageContext.stringIndexContext) {
111679- var members_9 = ts.createUnderscoreEscapedMap();
111716+ var members_10 = ts.createUnderscoreEscapedMap();
111680111717 var callSignatures = [];
111681111718 var constructSignatures = [];
111682111719 var stringIndexInfo = void 0;
111683111720 if (usageContext.properties) {
111684111721 usageContext.properties.forEach(function (context, name) {
111685111722 var symbol = checker.createSymbol(4 /* Property */, name);
111686111723 symbol.type = recur(context);
111687- members_9 .set(name, symbol);
111724+ members_10 .set(name, symbol);
111688111725 });
111689111726 }
111690111727 if (usageContext.callContexts) {
@@ -111702,7 +111739,7 @@ var ts;
111702111739 if (usageContext.stringIndexContext) {
111703111740 stringIndexInfo = checker.createIndexInfo(recur(usageContext.stringIndexContext), /*isReadonly*/ false);
111704111741 }
111705- return checker.createAnonymousType(/*symbol*/ undefined, members_9 , callSignatures, constructSignatures, stringIndexInfo, /*numberIndexInfo*/ undefined); // TODO: GH#18217
111742+ return checker.createAnonymousType(/*symbol*/ undefined, members_10 , callSignatures, constructSignatures, stringIndexInfo, /*numberIndexInfo*/ undefined); // TODO: GH#18217
111706111743 }
111707111744 else {
111708111745 return undefined;
@@ -113681,8 +113718,8 @@ var ts;
113681113718 ts.Debug.assert(members.length > 0); // There must be at least one child, since we extracted from one.
113682113719 var prevMember;
113683113720 var allProperties = true;
113684- for (var _i = 0, members_10 = members; _i < members_10 .length; _i++) {
113685- var member = members_10 [_i];
113721+ for (var _i = 0, members_11 = members; _i < members_11 .length; _i++) {
113722+ var member = members_11 [_i];
113686113723 if (member.pos > maxPos) {
113687113724 return prevMember || members[0];
113688113725 }
0 commit comments