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('');
|