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
|
=== tests/cases/compiler/controlFlowForCatchAndFinally.ts ===
type Page = {close(): Promise<void>; content(): Promise<string>};
>Page : Symbol(Page, Decl(controlFlowForCatchAndFinally.ts, 0, 0))
>close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 0, 13))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
>content : Symbol(content, Decl(controlFlowForCatchAndFinally.ts, 0, 36))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
type Browser = {close(): Promise<void>};
>Browser : Symbol(Browser, Decl(controlFlowForCatchAndFinally.ts, 0, 65))
>close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 1, 16))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
declare function test1(): Promise<Browser>;
>test1 : Symbol(test1, Decl(controlFlowForCatchAndFinally.ts, 1, 40))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
>Browser : Symbol(Browser, Decl(controlFlowForCatchAndFinally.ts, 0, 65))
declare function test2(obj: Browser): Promise<Page>;
>test2 : Symbol(test2, Decl(controlFlowForCatchAndFinally.ts, 2, 43))
>obj : Symbol(obj, Decl(controlFlowForCatchAndFinally.ts, 3, 23))
>Browser : Symbol(Browser, Decl(controlFlowForCatchAndFinally.ts, 0, 65))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
>Page : Symbol(Page, Decl(controlFlowForCatchAndFinally.ts, 0, 0))
async function test(): Promise<string> {
>test : Symbol(test, Decl(controlFlowForCatchAndFinally.ts, 3, 52))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
let browser: Browser | undefined = undefined;
>browser : Symbol(browser, Decl(controlFlowForCatchAndFinally.ts, 5, 7))
>Browser : Symbol(Browser, Decl(controlFlowForCatchAndFinally.ts, 0, 65))
>undefined : Symbol(undefined)
let page: Page | undefined = undefined;
>page : Symbol(page, Decl(controlFlowForCatchAndFinally.ts, 6, 7))
>Page : Symbol(Page, Decl(controlFlowForCatchAndFinally.ts, 0, 0))
>undefined : Symbol(undefined)
try {
browser = await test1();
>browser : Symbol(browser, Decl(controlFlowForCatchAndFinally.ts, 5, 7))
>test1 : Symbol(test1, Decl(controlFlowForCatchAndFinally.ts, 1, 40))
page = await test2(browser);
>page : Symbol(page, Decl(controlFlowForCatchAndFinally.ts, 6, 7))
>test2 : Symbol(test2, Decl(controlFlowForCatchAndFinally.ts, 2, 43))
>browser : Symbol(browser, Decl(controlFlowForCatchAndFinally.ts, 5, 7))
return await page.content();;
>page.content : Symbol(content, Decl(controlFlowForCatchAndFinally.ts, 0, 36))
>page : Symbol(page, Decl(controlFlowForCatchAndFinally.ts, 6, 7))
>content : Symbol(content, Decl(controlFlowForCatchAndFinally.ts, 0, 36))
} finally {
if (page) {
>page : Symbol(page, Decl(controlFlowForCatchAndFinally.ts, 6, 7))
await page.close(); // ok
>page.close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 0, 13))
>page : Symbol(page, Decl(controlFlowForCatchAndFinally.ts, 6, 7))
>close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 0, 13))
}
if (browser) {
>browser : Symbol(browser, Decl(controlFlowForCatchAndFinally.ts, 5, 7))
await browser.close(); // ok
>browser.close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 1, 16))
>browser : Symbol(browser, Decl(controlFlowForCatchAndFinally.ts, 5, 7))
>close : Symbol(close, Decl(controlFlowForCatchAndFinally.ts, 1, 16))
}
}
}
declare class Aborter { abort(): void };
>Aborter : Symbol(Aborter, Decl(controlFlowForCatchAndFinally.ts, 20, 1))
>abort : Symbol(Aborter.abort, Decl(controlFlowForCatchAndFinally.ts, 22, 23))
class Foo {
>Foo : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
abortController: Aborter | undefined = undefined;
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>Aborter : Symbol(Aborter, Decl(controlFlowForCatchAndFinally.ts, 20, 1))
>undefined : Symbol(undefined)
async operation() {
>operation : Symbol(Foo.operation, Decl(controlFlowForCatchAndFinally.ts, 24, 53))
if (this.abortController !== undefined) {
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>undefined : Symbol(undefined)
this.abortController.abort();
>this.abortController.abort : Symbol(Aborter.abort, Decl(controlFlowForCatchAndFinally.ts, 22, 23))
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>abort : Symbol(Aborter.abort, Decl(controlFlowForCatchAndFinally.ts, 22, 23))
this.abortController = undefined;
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>undefined : Symbol(undefined)
}
try {
this.abortController = new Aborter();
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>Aborter : Symbol(Aborter, Decl(controlFlowForCatchAndFinally.ts, 20, 1))
} catch (error) {
>error : Symbol(error, Decl(controlFlowForCatchAndFinally.ts, 33, 17))
if (this.abortController !== undefined) {
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>undefined : Symbol(undefined)
this.abortController.abort(); // ok
>this.abortController.abort : Symbol(Aborter.abort, Decl(controlFlowForCatchAndFinally.ts, 22, 23))
>this.abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>this : Symbol(Foo, Decl(controlFlowForCatchAndFinally.ts, 22, 40))
>abortController : Symbol(Foo.abortController, Decl(controlFlowForCatchAndFinally.ts, 23, 11))
>abort : Symbol(Aborter.abort, Decl(controlFlowForCatchAndFinally.ts, 22, 23))
}
}
}
}
|