1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
=== tests/cases/compiler/controlFlowForCatchAndFinally.ts ===
type Page = {close(): Promise<void>; content(): Promise<string>};
>Page : Page
>close : () => Promise<void>
>content : () => Promise<string>
type Browser = {close(): Promise<void>};
>Browser : Browser
>close : () => Promise<void>
declare function test1(): Promise<Browser>;
>test1 : () => Promise<Browser>
declare function test2(obj: Browser): Promise<Page>;
>test2 : (obj: Browser) => Promise<Page>
>obj : Browser
async function test(): Promise<string> {
>test : () => Promise<string>
let browser: Browser | undefined = undefined;
>browser : Browser | undefined
>undefined : undefined
let page: Page | undefined = undefined;
>page : Page | undefined
>undefined : undefined
try {
browser = await test1();
>browser = await test1() : Browser
>browser : Browser | undefined
>await test1() : Browser
>test1() : Promise<Browser>
>test1 : () => Promise<Browser>
page = await test2(browser);
>page = await test2(browser) : Page
>page : Page | undefined
>await test2(browser) : Page
>test2(browser) : Promise<Page>
>test2 : (obj: Browser) => Promise<Page>
>browser : Browser
return await page.content();;
>await page.content() : string
>page.content() : Promise<string>
>page.content : () => Promise<string>
>page : Page
>content : () => Promise<string>
} finally {
if (page) {
>page : Page | undefined
await page.close(); // ok
>await page.close() : void
>page.close() : Promise<void>
>page.close : () => Promise<void>
>page : Page
>close : () => Promise<void>
}
if (browser) {
>browser : Browser | undefined
await browser.close(); // ok
>await browser.close() : void
>browser.close() : Promise<void>
>browser.close : () => Promise<void>
>browser : Browser
>close : () => Promise<void>
}
}
}
declare class Aborter { abort(): void };
>Aborter : Aborter
>abort : () => void
class Foo {
>Foo : Foo
abortController: Aborter | undefined = undefined;
>abortController : Aborter | undefined
>undefined : undefined
async operation() {
>operation : () => Promise<void>
if (this.abortController !== undefined) {
>this.abortController !== undefined : boolean
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
this.abortController.abort();
>this.abortController.abort() : void
>this.abortController.abort : () => void
>this.abortController : Aborter
>this : this
>abortController : Aborter
>abort : () => void
this.abortController = undefined;
>this.abortController = undefined : undefined
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
}
try {
this.abortController = new Aborter();
>this.abortController = new Aborter() : Aborter
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>new Aborter() : Aborter
>Aborter : typeof Aborter
} catch (error) {
>error : any
if (this.abortController !== undefined) {
>this.abortController !== undefined : boolean
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
this.abortController.abort(); // ok
>this.abortController.abort() : void
>this.abortController.abort : () => void
>this.abortController : Aborter
>this : this
>abortController : Aborter
>abort : () => void
}
}
}
}
|