| 12
 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
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 
 | === tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers.ts ===
// members N and M of types S and T have the same name, same accessibility, same optionality, and N is assignable M
// no errors expected
module SimpleTypes {
>SimpleTypes : Symbol(SimpleTypes, Decl(assignmentCompatWithObjectMembers.ts, 0, 0))
    class S { foo: string; }
>S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 3, 20))
>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers.ts, 4, 13))
    class T { foo: string; }
>T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 4, 28))
>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers.ts, 5, 13))
    var s: S;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
>S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 3, 20))
    var t: T;
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 7, 7))
>T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 4, 28))
    interface S2 { foo: string; }
>S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 7, 13))
>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers.ts, 9, 18))
    interface T2 { foo: string; }
>T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 9, 33))
>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers.ts, 10, 18))
    var s2: S2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
>S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 7, 13))
    var t2: T2;
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 12, 7))
>T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 9, 33))
    var a: { foo: string; }
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 14, 12))
    var b: { foo: string; }
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 15, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 15, 12))
    var a2 = { foo: '' };
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 17, 14))
    var b2 = { foo: '' };
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 18, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 18, 14))
    s = t;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 7, 7))
    t = s;
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 7, 7))
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
    s = s2;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
    s = a2;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
    s2 = t2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 12, 7))
    t2 = s2;
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 12, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
    s2 = t;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 7, 7))
    s2 = b;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 15, 7))
    s2 = a2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
    a = b;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 15, 7))
    b = a;
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 15, 7))
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
    a = s;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 6, 7))
    a = s2;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 11, 7))
    a = a2;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 14, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
    a2 = b2;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 18, 7))
    b2 = a2;
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 18, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
    a2 = b;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 15, 7))
    a2 = t2;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 12, 7))
    a2 = t;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 17, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 7, 7))
}
module ObjectTypes {
>ObjectTypes : Symbol(ObjectTypes, Decl(assignmentCompatWithObjectMembers.ts, 42, 1))
    class S { foo: S; }
>S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 44, 20))
>foo : Symbol(S.foo, Decl(assignmentCompatWithObjectMembers.ts, 45, 13))
>S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 44, 20))
    class T { foo: T; }
>T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 45, 23))
>foo : Symbol(T.foo, Decl(assignmentCompatWithObjectMembers.ts, 46, 13))
>T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 45, 23))
    var s: S;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
>S : Symbol(S, Decl(assignmentCompatWithObjectMembers.ts, 44, 20))
    var t: T;
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 48, 7))
>T : Symbol(T, Decl(assignmentCompatWithObjectMembers.ts, 45, 23))
    interface S2 { foo: S2; }
>S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 48, 13))
>foo : Symbol(S2.foo, Decl(assignmentCompatWithObjectMembers.ts, 50, 18))
>S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 48, 13))
    interface T2 { foo: T2; }
>T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 50, 29))
>foo : Symbol(T2.foo, Decl(assignmentCompatWithObjectMembers.ts, 51, 18))
>T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 50, 29))
    var s2: S2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
>S2 : Symbol(S2, Decl(assignmentCompatWithObjectMembers.ts, 48, 13))
    var t2: T2;
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 53, 7))
>T2 : Symbol(T2, Decl(assignmentCompatWithObjectMembers.ts, 50, 29))
    var a: { foo: typeof a; }
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 55, 12))
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
    var b: { foo: typeof b; }
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 56, 12))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
    var a2 = { foo: a2 };
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 58, 14))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
    var b2 = { foo: b2 };
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 59, 7))
>foo : Symbol(foo, Decl(assignmentCompatWithObjectMembers.ts, 59, 14))
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 59, 7))
    s = t;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 48, 7))
    t = s;
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 48, 7))
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
    s = s2;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
    s = a2;
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
    s2 = t2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 53, 7))
    t2 = s2;
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 53, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
    s2 = t;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 48, 7))
    s2 = b;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
    s2 = a2;
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
    a = b;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
    b = a;
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
    a = s;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
>s : Symbol(s, Decl(assignmentCompatWithObjectMembers.ts, 47, 7))
    a = s2;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
>s2 : Symbol(s2, Decl(assignmentCompatWithObjectMembers.ts, 52, 7))
    a = a2;
>a : Symbol(a, Decl(assignmentCompatWithObjectMembers.ts, 55, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
    a2 = b2;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 59, 7))
    b2 = a2;
>b2 : Symbol(b2, Decl(assignmentCompatWithObjectMembers.ts, 59, 7))
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
    a2 = b;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
>b : Symbol(b, Decl(assignmentCompatWithObjectMembers.ts, 56, 7))
    a2 = t2;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
>t2 : Symbol(t2, Decl(assignmentCompatWithObjectMembers.ts, 53, 7))
    a2 = t;
>a2 : Symbol(a2, Decl(assignmentCompatWithObjectMembers.ts, 58, 7))
>t : Symbol(t, Decl(assignmentCompatWithObjectMembers.ts, 48, 7))
}
 |