TypeScript Version: master
Code
constcache=newMap<string,S>();classS{constructor(name=''){returncache.has(name)
? cache.get(name)!
: cache.set(name,this).get(name)!;}}constcached=newWeakSet<C>();classCextendsS{constructor(name=''){super(name);if(cached.has(this))return;cached.add(this);}}console.log(newC()===newC());// trueExpected behavior:
var__extends=(this&&this.__extends)||function(d,b){for(varpinb)if(b.hasOwnProperty(p))d[p]=b[p];function__(){this.constructor=d;}d.prototype=b===null ? Object.create(b) : (__.prototype=b.prototype,new__());};varcache=newMap();varS=(function(){functionS(name){if(name===void0){name='';}returncache.has(name)
? cache.get(name)
: cache.set(name,this).get(name);}returnS;}());varcached=newWeakSet();varC=(function(_super){__extends(C,_super);functionC(name){if(name===void0){name='';}var_this=_super.call(this,name)||this;if(cached.has(_this))return_this;// <- herecached.add(_this);return_this;}returnC;}(S));console.log(newC()===newC());// trueActual behavior:
var__extends=(this&&this.__extends)||function(d,b){for(varpinb)if(b.hasOwnProperty(p))d[p]=b[p];function__(){this.constructor=d;}d.prototype=b===null ? Object.create(b) : (__.prototype=b.prototype,new__());};varcache=newMap();varS=(function(){functionS(name){if(name===void0){name='';}returncache.has(name)
? cache.get(name)
: cache.set(name,this).get(name);}returnS;}());varcached=newWeakSet();varC=(function(_super){__extends(C,_super);functionC(name){if(name===void0){name='';}var_this=_super.call(this,name)||this;if(cached.has(_this))return;// <- herecached.add(_this);return_this;}returnC;}(S));console.log(newC()===newC());// false
TypeScript Version: master
Code
Expected behavior:
Actual behavior: