TypeScript/tests/baselines/reference/collisionThisExpressionAndParameter.js

174 lines
4.5 KiB
JavaScript

//// [collisionThisExpressionAndParameter.ts]
class Foo {
x() {
var _this = 10; // Local var. No this capture in x(), so no conflict.
function inner(_this: number) { // Error
return x => this; // New scope. So should inject new _this capture into function inner
}
}
y() {
var lamda = (_this: number) => { // Error
return x => this; // New scope. So should inject new _this capture
}
}
z(_this: number) { // Error
var lambda = () => {
return x => this; // New scope. So should inject new _this capture
}
}
x1() {
var _this = 10; // Local var. No this capture in x(), so no conflict.
function inner(_this: number) { // No Error
}
}
y1() {
var lamda = (_this: number) => { // No Error
}
}
z1(_this: number) { // No Error
var lambda = () => {
}
}
}
class Foo1 {
constructor(_this: number) { // Error
var x2 = {
doStuff: (callback) => () => {
return callback(this);
}
}
}
}
declare var console: {
log(msg: any);
}
function f1(_this: number) {
x => { console.log(this.x); };
}
declare class Foo2 {
constructor(_this: number); // no error - no code gen
z(_this: number); // no error - no code gen
}
declare function f2(_this: number); // no error
class Foo3 {
constructor(_this: string); // no code gen - no error
constructor(_this: number); // no code gen - no error
constructor(_this: any) { // Error
var x2 = {
doStuff: (callback) => () => {
return callback(this);
}
}
}
z(_this: string); // no code gen - no error
z(_this: number); // no code gen - no error
z(_this: any) { // Error
var lambda = () => {
return x => this; // New scope. So should inject new _this capture
}
}
}
declare var console: {
log(msg: any);
}
function f3(_this: number); // no code gen - no error
function f3(_this: string); // no code gen - no error
function f3(_this: any) {
x => { console.log(this.x); };
}
declare class Foo4 {
constructor(_this: string); // no code gen - no error
constructor(_this: number); // no code gen - no error
z(_this: string); // no code gen - no error
z(_this: number); // no code gen - no error
}
declare function f4(_this: number); // no code gen - no error
declare function f4(_this: string); // no code gen - no error
//// [collisionThisExpressionAndParameter.js]
var Foo = (function () {
function Foo() {
}
Foo.prototype.x = function () {
var _this = 10; // Local var. No this capture in x(), so no conflict.
function inner(_this) {
var _this = this;
return function (x) { return _this; };
}
};
Foo.prototype.y = function () {
var _this = this;
var lamda = function (_this) {
return function (x) { return _this; };
};
};
Foo.prototype.z = function (_this) {
var _this = this;
var lambda = function () {
return function (x) { return _this; };
};
};
Foo.prototype.x1 = function () {
var _this = 10; // Local var. No this capture in x(), so no conflict.
function inner(_this) {
}
};
Foo.prototype.y1 = function () {
var lamda = function (_this) {
};
};
Foo.prototype.z1 = function (_this) {
var lambda = function () {
};
};
return Foo;
})();
var Foo1 = (function () {
function Foo1(_this) {
var _this = this;
var x2 = {
doStuff: function (callback) { return function () {
return callback(_this);
}; }
};
}
return Foo1;
})();
function f1(_this) {
var _this = this;
(function (x) {
console.log(_this.x);
});
}
var Foo3 = (function () {
function Foo3(_this) {
var _this = this;
var x2 = {
doStuff: function (callback) { return function () {
return callback(_this);
}; }
};
}
Foo3.prototype.z = function (_this) {
var _this = this;
var lambda = function () {
return function (x) { return _this; };
};
};
return Foo3;
})();
function f3(_this) {
var _this = this;
(function (x) {
console.log(_this.x);
});
}