File: controlFlowForCatchAndFinally.types

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (142 lines) | stat: -rw-r--r-- 3,707 bytes parent folder | download | duplicates (2)
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
            }
        }
    }
}