//// [tests/cases/conformance/async/es6/awaitCallExpression/awaitCallExpression8_es6.ts] ////

=== awaitCallExpression8_es6.ts ===
declare var a: boolean;
>a : boolean
>  : ^^^^^^^

declare var p: Promise<boolean>;
>p : Promise<boolean>
>  : ^^^^^^^^^^^^^^^^

declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void;
>fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void
>   : ^    ^^       ^^    ^^       ^^    ^^       ^^^^^    
>arg0 : boolean
>     : ^^^^^^^
>arg1 : boolean
>     : ^^^^^^^
>arg2 : boolean
>     : ^^^^^^^

declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; };
>o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }
>  : ^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^    ^^^
>fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void
>   : ^    ^^       ^^    ^^       ^^    ^^       ^^^^^    
>arg0 : boolean
>     : ^^^^^^^
>arg1 : boolean
>     : ^^^^^^^
>arg2 : boolean
>     : ^^^^^^^

declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>;
>pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void>
>    : ^^^^^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^^^    ^
>arg0 : boolean
>     : ^^^^^^^
>arg1 : boolean
>     : ^^^^^^^
>arg2 : boolean
>     : ^^^^^^^

declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>;
>po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>
>   : ^^^^^^^^^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^    ^^^^
>fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void
>   : ^    ^^       ^^    ^^       ^^    ^^       ^^^^^    
>arg0 : boolean
>     : ^^^^^^^
>arg1 : boolean
>     : ^^^^^^^
>arg2 : boolean
>     : ^^^^^^^

declare function before(): void;
>before : () => void
>       : ^^^^^^    

declare function after(): void;
>after : () => void
>      : ^^^^^^    

async function func(): Promise<void> {
>func : () => Promise<void>
>     : ^^^^^^             

    before();
>before() : void
>         : ^^^^
>before : () => void
>       : ^^^^^^    

    var b = (await po).fn(a, a, a);
>b : void
>  : ^^^^
>(await po).fn(a, a, a) : void
>                       : ^^^^
>(await po).fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void
>              : ^    ^^       ^^    ^^       ^^    ^^       ^^^^^    
>(await po) : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }
>           : ^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^    ^^^
>await po : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }
>         : ^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^    ^^^
>po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>
>   : ^^^^^^^^^^^^^    ^^       ^^    ^^       ^^    ^^       ^^^    ^^^^
>fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void
>   : ^    ^^       ^^    ^^       ^^    ^^       ^^^^^    
>a : boolean
>  : ^^^^^^^
>a : boolean
>  : ^^^^^^^
>a : boolean
>  : ^^^^^^^

    after();
>after() : void
>        : ^^^^
>after : () => void
>      : ^^^^^^    
}
