TypeScript/tests/cases/conformance/salsa/constructorFunctionsStrict.ts
Nathan Shively-Sanders 1074819be3
Js constructor function fixes (#22721)
* Do not add undefined for this assignments in functions

* Test:constructor functions with --strict

* First draft -- works, but needs a stricter check added

* Update baselines

* Make undefined-skip stricter and more efficient

Symbol-based now instead of syntactic

* Exclude prototype function assignments

* Add explanatory comment
2018-03-20 11:24:09 -07:00

30 lines
456 B
TypeScript

// @noEmit: true
// @allowJs: true
// @checkJs: true
// @strict: true
// @noImplicitThis: false
// @Filename: a.js
/** @param {number} x */
function C(x) {
this.x = x
}
C.prototype.m = function() {
this.y = 12
}
var c = new C(1)
c.x = undefined // should error
c.y = undefined // ok
/** @param {number} x */
function A(x) {
if (!(this instanceof A)) {
return new A(x)
}
this.x = x
}
var k = A(1)
var j = new A(2)
k.x === j.x