// @allowJs: true // @checkJs: true // @noEmit: true // @filename: index.js function C1() { if (!(this instanceof C1)) return new C1(); this.x = 1; } const c1_v1 = C1(); const c1_v2 = new C1(); var C2 = function () { if (!(this instanceof C2)) return new C2(); this.x = 1; }; const c2_v1 = C2(); const c2_v2 = new C2(); /** @class */ function C3() { if (!(this instanceof C3)) return new C3(); }; const c3_v1 = C3(); // error: @class tag requires 'new' const c3_v2 = new C3(); /** @class */ var C4 = function () { if (!(this instanceof C4)) return new C4(); }; const c4_v1 = C4(); // error: @class tag requires 'new' const c4_v2 = new C4(); var c5_v1; c5_v1 = function f() { }; new c5_v1(); var c5_v2; c5_v2 = class { }; new c5_v2(); /** @class */ function C6() { this.functions = [x => x, x => x + 1, x => x - 1] }; var c6_v1 = new C6(); /** * @constructor * @param {number} num */ function C7(num) {} var c7_v1 = new C7();