@@ -92,31 +92,134 @@ abstract class AbstractClass {
92
92
}
93
93
}
94
94
95
+ abstract class DerivedAbstractClass extends AbstractClass {
96
+ >DerivedAbstractClass : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
97
+ >AbstractClass : Symbol(AbstractClass, Decl(abstractPropertyInConstructor.ts, 0, 0))
98
+
99
+ cb = (s: string) => {};
100
+ >cb : Symbol(DerivedAbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 32, 59))
101
+ >s : Symbol(s, Decl(abstractPropertyInConstructor.ts, 33, 10))
102
+
103
+ constructor(str: string, other: AbstractClass, yetAnother: DerivedAbstractClass) {
104
+ >str : Symbol(str, Decl(abstractPropertyInConstructor.ts, 35, 16))
105
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 35, 28))
106
+ >AbstractClass : Symbol(AbstractClass, Decl(abstractPropertyInConstructor.ts, 0, 0))
107
+ >yetAnother : Symbol(yetAnother, Decl(abstractPropertyInConstructor.ts, 35, 50))
108
+ >DerivedAbstractClass : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
109
+
110
+ super(str, other);
111
+ >super : Symbol(AbstractClass, Decl(abstractPropertyInConstructor.ts, 0, 0))
112
+ >str : Symbol(str, Decl(abstractPropertyInConstructor.ts, 35, 16))
113
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 35, 28))
114
+
115
+ // there is no implementation of 'prop' in any base class
116
+ this.cb(this.prop.toLowerCase());
117
+ >this.cb : Symbol(DerivedAbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 32, 59))
118
+ >this : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
119
+ >cb : Symbol(DerivedAbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 32, 59))
120
+ >this.prop.toLowerCase : Symbol(String.toLowerCase, Decl(lib.es5.d.ts, --, --))
121
+ >this.prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
122
+ >this : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
123
+ >prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
124
+ >toLowerCase : Symbol(String.toLowerCase, Decl(lib.es5.d.ts, --, --))
125
+
126
+ this.method(1);
127
+ >this.method : Symbol(AbstractClass.method, Decl(abstractPropertyInConstructor.ts, 20, 37))
128
+ >this : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
129
+ >method : Symbol(AbstractClass.method, Decl(abstractPropertyInConstructor.ts, 20, 37))
130
+
131
+ // OK, references are to another instance
132
+ other.cb(other.prop);
133
+ >other.cb : Symbol(AbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 19, 26))
134
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 35, 28))
135
+ >cb : Symbol(AbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 19, 26))
136
+ >other.prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
137
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 35, 28))
138
+ >prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
139
+
140
+ yetAnother.cb(yetAnother.prop);
141
+ >yetAnother.cb : Symbol(DerivedAbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 32, 59))
142
+ >yetAnother : Symbol(yetAnother, Decl(abstractPropertyInConstructor.ts, 35, 50))
143
+ >cb : Symbol(DerivedAbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 32, 59))
144
+ >yetAnother.prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
145
+ >yetAnother : Symbol(yetAnother, Decl(abstractPropertyInConstructor.ts, 35, 50))
146
+ >prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
147
+ }
148
+ }
149
+
150
+ class Implementation extends DerivedAbstractClass {
151
+ >Implementation : Symbol(Implementation, Decl(abstractPropertyInConstructor.ts, 46, 1))
152
+ >DerivedAbstractClass : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
153
+
154
+ prop = "";
155
+ >prop : Symbol(Implementation.prop, Decl(abstractPropertyInConstructor.ts, 48, 51))
156
+
157
+ cb = (s: string) => {};
158
+ >cb : Symbol(Implementation.cb, Decl(abstractPropertyInConstructor.ts, 49, 14))
159
+ >s : Symbol(s, Decl(abstractPropertyInConstructor.ts, 50, 10))
160
+
161
+ constructor(str: string, other: AbstractClass, yetAnother: DerivedAbstractClass) {
162
+ >str : Symbol(str, Decl(abstractPropertyInConstructor.ts, 52, 16))
163
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 52, 28))
164
+ >AbstractClass : Symbol(AbstractClass, Decl(abstractPropertyInConstructor.ts, 0, 0))
165
+ >yetAnother : Symbol(yetAnother, Decl(abstractPropertyInConstructor.ts, 52, 50))
166
+ >DerivedAbstractClass : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
167
+
168
+ super(str, other, yetAnother);
169
+ >super : Symbol(DerivedAbstractClass, Decl(abstractPropertyInConstructor.ts, 30, 1))
170
+ >str : Symbol(str, Decl(abstractPropertyInConstructor.ts, 52, 16))
171
+ >other : Symbol(other, Decl(abstractPropertyInConstructor.ts, 52, 28))
172
+ >yetAnother : Symbol(yetAnother, Decl(abstractPropertyInConstructor.ts, 52, 50))
173
+
174
+ this.cb(this.prop);
175
+ >this.cb : Symbol(Implementation.cb, Decl(abstractPropertyInConstructor.ts, 49, 14))
176
+ >this : Symbol(Implementation, Decl(abstractPropertyInConstructor.ts, 46, 1))
177
+ >cb : Symbol(Implementation.cb, Decl(abstractPropertyInConstructor.ts, 49, 14))
178
+ >this.prop : Symbol(Implementation.prop, Decl(abstractPropertyInConstructor.ts, 48, 51))
179
+ >this : Symbol(Implementation, Decl(abstractPropertyInConstructor.ts, 46, 1))
180
+ >prop : Symbol(Implementation.prop, Decl(abstractPropertyInConstructor.ts, 48, 51))
181
+ }
182
+
183
+ method(n: number) {
184
+ >method : Symbol(Implementation.method, Decl(abstractPropertyInConstructor.ts, 55, 5))
185
+ >n : Symbol(n, Decl(abstractPropertyInConstructor.ts, 57, 11))
186
+
187
+ this.cb(this.prop + n);
188
+ >this.cb : Symbol(Implementation.cb, Decl(abstractPropertyInConstructor.ts, 49, 14))
189
+ >this : Symbol(Implementation, Decl(abstractPropertyInConstructor.ts, 46, 1))
190
+ >cb : Symbol(Implementation.cb, Decl(abstractPropertyInConstructor.ts, 49, 14))
191
+ >this.prop : Symbol(Implementation.prop, Decl(abstractPropertyInConstructor.ts, 48, 51))
192
+ >this : Symbol(Implementation, Decl(abstractPropertyInConstructor.ts, 46, 1))
193
+ >prop : Symbol(Implementation.prop, Decl(abstractPropertyInConstructor.ts, 48, 51))
194
+ >n : Symbol(n, Decl(abstractPropertyInConstructor.ts, 57, 11))
195
+ }
196
+ }
197
+
95
198
class User {
96
- >User : Symbol(User, Decl(abstractPropertyInConstructor.ts, 30 , 1))
199
+ >User : Symbol(User, Decl(abstractPropertyInConstructor.ts, 60 , 1))
97
200
98
201
constructor(a: AbstractClass) {
99
- >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 33 , 16))
202
+ >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 63 , 16))
100
203
>AbstractClass : Symbol(AbstractClass, Decl(abstractPropertyInConstructor.ts, 0, 0))
101
204
102
205
a.prop;
103
206
>a.prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
104
- >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 33 , 16))
207
+ >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 63 , 16))
105
208
>prop : Symbol(AbstractClass.prop, Decl(abstractPropertyInConstructor.ts, 17, 5))
106
209
107
210
a.cb("hi");
108
211
>a.cb : Symbol(AbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 19, 26))
109
- >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 33 , 16))
212
+ >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 63 , 16))
110
213
>cb : Symbol(AbstractClass.cb, Decl(abstractPropertyInConstructor.ts, 19, 26))
111
214
112
215
a.method(12);
113
216
>a.method : Symbol(AbstractClass.method, Decl(abstractPropertyInConstructor.ts, 20, 37))
114
- >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 33 , 16))
217
+ >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 63 , 16))
115
218
>method : Symbol(AbstractClass.method, Decl(abstractPropertyInConstructor.ts, 20, 37))
116
219
117
220
a.method2();
118
221
>a.method2 : Symbol(AbstractClass.method2, Decl(abstractPropertyInConstructor.ts, 25, 25))
119
- >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 33 , 16))
222
+ >a : Symbol(a, Decl(abstractPropertyInConstructor.ts, 63 , 16))
120
223
>method2 : Symbol(AbstractClass.method2, Decl(abstractPropertyInConstructor.ts, 25, 25))
121
224
}
122
225
}
0 commit comments