File: augmentedTypesModules.types

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (221 lines) | stat: -rw-r--r-- 3,751 bytes parent folder | download | duplicates (5)
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
=== tests/cases/compiler/augmentedTypesModules.ts ===
// module then var
module m1 { }
var m1 = 1; // Should be allowed
>m1 : number
>1 : 1

module m1a { var y = 2; } // error
>m1a : typeof m1a
>y : number
>2 : 2

var m1a = 1; // error
>m1a : number
>1 : 1

module m1b { export var y = 2; } // error
>m1b : typeof m1b
>y : number
>2 : 2

var m1b = 1; // error
>m1b : number
>1 : 1

module m1c {
    export interface I { foo(): void; }
>foo : () => void
}
var m1c = 1; // Should be allowed
>m1c : number
>1 : 1

module m1d { // error
>m1d : typeof m1d

    export class I { foo() { } }
>I : I
>foo : () => void
}
var m1d = 1; // error
>m1d : number
>1 : 1

// module then function
module m2 { }
function m2() { }; // ok since the module is not instantiated
>m2 : () => void

module m2a { var y = 2; }
>m2a : typeof m2a
>y : number
>2 : 2

function m2a() { }; // error since the module is instantiated
>m2a : typeof m2a

module m2b { export var y = 2; }
>m2b : typeof m2b
>y : number
>2 : 2

function m2b() { };  // error since the module is instantiated
>m2b : typeof m2b

// should be errors to have function first
function m2c() { }; 
>m2c : typeof m2c

module m2c { export var y = 2; } 
>m2c : typeof m2c
>y : number
>2 : 2

module m2d { }
declare function m2d(): void; 
>m2d : () => void

declare function m2e(): void; 
>m2e : () => void

module m2e { }

function m2f() { };
>m2f : () => void

module m2f { export interface I { foo(): void } } 
>foo : () => void

function m2g() { };
>m2g : typeof m2g

module m2g { export class C { foo() { } } } 
>m2g : typeof m2g
>C : C
>foo : () => void

// module then class
module m3 { }
class m3 { } // ok since the module is not instantiated
>m3 : m3

module m3a { var y = 2; }
>m3a : typeof m3a
>y : number
>2 : 2

class m3a { foo() { } } // error, class isn't ambient or declared before the module
>m3a : m3a
>foo : () => void

class m3b { foo() { } }
>m3b : m3b
>foo : () => void

module m3b { var y = 2; }
>m3b : typeof m3b
>y : number
>2 : 2

class m3c { foo() { } }
>m3c : m3c
>foo : () => void

module m3c { export var y = 2; } 
>m3c : typeof m3c
>y : number
>2 : 2

declare class m3d { foo(): void }
>m3d : m3d
>foo : () => void

module m3d { export var y = 2; } 
>m3d : typeof m3d
>y : number
>2 : 2

module m3e { export var y = 2; } 
>m3e : typeof m3e
>y : number
>2 : 2

declare class m3e { foo(): void } 
>m3e : m3e
>foo : () => void

declare class m3f { foo(): void }
>m3f : m3f
>foo : () => void

module m3f { export interface I { foo(): void } }
>foo : () => void

declare class m3g { foo(): void }
>m3g : m3g
>foo : () => void

module m3g { export class C { foo() { } } }
>m3g : typeof m3g
>C : C
>foo : () => void

// module then enum
// should be errors
module m4 { }
enum m4 { }
>m4 : m4

module m4a { var y = 2; }
>m4a : typeof m4a
>y : number
>2 : 2

enum m4a { One }
>m4a : m4a
>One : m4a.One

module m4b { export var y = 2; }
>m4b : typeof m4b
>y : number
>2 : 2

enum m4b { One }
>m4b : m4b
>One : m4b.One

module m4c { interface I { foo(): void } }
>foo : () => void

enum m4c { One }
>m4c : m4c
>One : m4c.One

module m4d { class C { foo() { } } }
>m4d : typeof m4d
>C : C
>foo : () => void

enum m4d { One }
>m4d : m4d
>One : m4d.One

//// module then module

module m5 { export var y = 2; }
>m5 : typeof m5
>y : number
>2 : 2

module m5 { export interface I { foo(): void } } // should already be reasonably well covered
>foo : () => void

// module then import
module m6 { export var y = 2; }
>m6 : typeof m6
>y : number
>2 : 2

//import m6 = require('');