//// [baseTypeWrappingInstantiationChain.ts] class C extends CBase { public works() { new CBaseBase>(this); } public alsoWorks() { new CBase(this); // Should not error, parameter is of type Parameter> } public method(t: Wrapper) { } } class CBase extends CBaseBase> { } class CBaseBase { constructor(x: Parameter) { } } class Parameter { method(t: T4) { } } class Wrapper { property: T5; } //// [baseTypeWrappingInstantiationChain.js] var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } __.prototype = b.prototype; d.prototype = new __(); }; var C = (function (_super) { __extends(C, _super); function C() { _super.apply(this, arguments); } C.prototype.works = function () { new CBaseBase(this); }; C.prototype.alsoWorks = function () { new CBase(this); // Should not error, parameter is of type Parameter> }; C.prototype.method = function (t) { }; return C; })(CBase); var CBase = (function (_super) { __extends(CBase, _super); function CBase() { _super.apply(this, arguments); } return CBase; })(CBaseBase); var CBaseBase = (function () { function CBaseBase(x) { } return CBaseBase; })(); var Parameter = (function () { function Parameter() { } Parameter.prototype.method = function (t) { }; return Parameter; })(); var Wrapper = (function () { function Wrapper() { } return Wrapper; })();