5a7500ca5e
This is important for incremental parsing, as it is where we can attach parse errors at the end of the file to. Also, it helps with things like emitting comments at the end of the file.
68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
//// [genericCallWithObjectTypeArgsAndStringIndexer.ts]
|
|
// Type inference infers from indexers in target type, no errors expected
|
|
|
|
function foo<T>(x: T) {
|
|
return x;
|
|
}
|
|
|
|
var a: { [x: string]: Date };
|
|
var r = foo(a);
|
|
|
|
function other<T>(arg: T) {
|
|
var b: { [x: string]: T };
|
|
var r2 = foo(b); // T
|
|
}
|
|
|
|
function other2<T extends Date>(arg: T) {
|
|
var b: { [x: string]: T };
|
|
var r2 = foo(b);
|
|
var d: Date = r2['hm']; // ok
|
|
}
|
|
|
|
function other3<T extends Date, U extends Date>(arg: T) {
|
|
var b: { [x: string]: T };
|
|
var r2 = foo(b);
|
|
var d: Date = r2['hm']; // ok
|
|
// BUG 821629
|
|
//var u: U = r2['hm']; // ok
|
|
}
|
|
|
|
//function other3<T extends U, U extends Date>(arg: T) {
|
|
// var b: { [x: string]: T };
|
|
// var r2 = foo(b);
|
|
// var d: Date = r2['hm']; // ok
|
|
// // BUG 821629
|
|
// //var u: U = r2['hm']; // ok
|
|
//}
|
|
|
|
//// [genericCallWithObjectTypeArgsAndStringIndexer.js]
|
|
// Type inference infers from indexers in target type, no errors expected
|
|
function foo(x) {
|
|
return x;
|
|
}
|
|
var a;
|
|
var r = foo(a);
|
|
function other(arg) {
|
|
var b;
|
|
var r2 = foo(b); // T
|
|
}
|
|
function other2(arg) {
|
|
var b;
|
|
var r2 = foo(b);
|
|
var d = r2['hm']; // ok
|
|
}
|
|
function other3(arg) {
|
|
var b;
|
|
var r2 = foo(b);
|
|
var d = r2['hm']; // ok
|
|
// BUG 821629
|
|
//var u: U = r2['hm']; // ok
|
|
}
|
|
//function other3<T extends U, U extends Date>(arg: T) {
|
|
// var b: { [x: string]: T };
|
|
// var r2 = foo(b);
|
|
// var d: Date = r2['hm']; // ok
|
|
// // BUG 821629
|
|
// //var u: U = r2['hm']; // ok
|
|
//}
|