// @declaration: true function generic(t: T) { var o: object = t; // expect error } var a = {}; var b = "42"; generic({}); generic(a); generic(123); // expect error generic(b); // expect error function bound(t: T) { var o: object = t; // ok } bound({}); bound(a); bound(123); // expect error bound(b); // expect error function bound2() {} bound2<{}>(); bound2(); bound2(); // expect error bound2(); // expect error function bound3(t: T) { var o: object = t; // ok } interface Proxy {} var x: Proxy; // error var y: Proxy; // ok var z: Proxy ; // ok interface Blah { foo: number; } var u: Proxy; // ok