- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.2k
 
Open
Description
The following code prints [123] in a console, the advanced compiled code prints [].
Compilation command: java -jar compiler.jar --language_out ECMASCRIPT5 --js 'test.js' --compilation_level=ADVANCED
Compiler version: v20240317
// test.js
const Foo = class {
	/** @param {!Array<number>=} opt_nums */
	constructor(opt_nums){
		/** @type {!Array<number>} */
		this.nums_ = opt_nums || [];
	}
	/** @param {number} num */
	add(num){
		this.nums_.push(num);
	}
	/** @return {!Foo} */
	clone(){
		return new this.constructor(this.nums_.slice(0));
	}
}
const f = new Foo();
f.add(123);
console.log(f.clone().nums_);
Compiled code:
function a(){this.g=[]}a.prototype.add=function(e){this.g.push(e)};var b=new a;b.add(123);var c=console,d=c.log,f;f=new b.constructor(b.g.slice(0));d.call(c,f.g);
The opt_nums argument of a constructor is ignored in the compiled code.
Metadata
Metadata
Assignees
Labels
No labels