=== tests/cases/conformance/es6/computedProperties/computedPropertyNamesContextualType7_ES6.ts ===
interface I<T> {
>I : I<T>
>T : T

    [s: number]: T;
>s : number
>T : T
}

declare function foo<T>(obj: I<T>): T
>foo : <T>(obj: I<T>) => T
>T : T
>obj : I<T>
>I : I<T>
>T : T
>T : T

foo({
>foo({    p: "",    0: () => { },    ["hi" + "bye"]: true,    [0 + 1]: 0,    [+"hi"]: [0]}) : number | number[] | (() => void)
>foo : <T>(obj: I<T>) => T
>{    p: "",    0: () => { },    ["hi" + "bye"]: true,    [0 + 1]: 0,    [+"hi"]: [0]} : { [x: number]: number | number[] | (() => void); 0: () => void; p: string; }

    p: "",
>p : string

    0: () => { },
>() => { } : () => void

    ["hi" + "bye"]: true,
>"hi" + "bye" : string

    [0 + 1]: 0,
>0 + 1 : number

    [+"hi"]: [0]
>+"hi" : number
>[0] : number[]

});
