TypeScript/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints5.js
Sheetal Nandi 6ab3adfd43 Modified the emitComment logic to handle emitting leading or trailing spaces depending on flags
Leading comments have trailing separator while trailing comments have leading space
This removes the extra trailing space in the trailing comments
2014-08-15 14:32:08 -07:00

99 lines
2.1 KiB
JavaScript

//// [propertyAccessOnTypeParameterWithConstraints5.ts]
class A {
foo(): string { return ''; }
}
class B extends A {
bar(): string {
return '';
}
}
class C<U extends T, T extends A> {
f() {
var x: U;
var a = x['foo'](); // should be string
return a + x.foo() + x.notHere();
}
}
var r = (new C<B, A>()).f();
interface I<U extends T, T extends A> {
foo: U;
}
var i: I<B, A>;
var r2 = i.foo.notHere();
var r2b = i.foo['foo']();
var a: {
<U extends T, T extends A>(): U;
}
// BUG 794164
var r3: string = a().notHere();
var r3b: string = a()['foo']();
var b = {
foo: <U extends T, T extends A>(x: U): U => {
var a = x['foo'](); // should be string
return a + x.notHere();
},
// BUG 794164
bar: b.foo(1).notHere()
}
var r4 = b.foo(new B()); // error after constraints above made illegal, doesn't matter
//// [propertyAccessOnTypeParameterWithConstraints5.js]
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var A = (function () {
function A() {
}
A.prototype.foo = function () {
return '';
};
return A;
})();
var B = (function (_super) {
__extends(B, _super);
function B() {
_super.apply(this, arguments);
}
B.prototype.bar = function () {
return '';
};
return B;
})(A);
var C = (function () {
function C() {
}
C.prototype.f = function () {
var x;
var a = x['foo'](); // should be string
return a + x.foo() + x.notHere();
};
return C;
})();
var r = (new C()).f();
var i;
var r2 = i.foo.notHere();
var r2b = i.foo['foo']();
var a;
// BUG 794164
var r3 = a().notHere();
var r3b = a()['foo']();
var b = {
foo: function (x) {
var a = x['foo'](); // should be string
return a + x.notHere();
},
// BUG 794164
bar: b.foo(1).notHere()
};
var r4 = b.foo(new B()); // error after constraints above made illegal, doesn't matter