Skip to content

Commit 4546b0d

Browse files
committed
Make sure we have a node for the error in cases of special property assignment
1 parent 26d5af3 commit 4546b0d

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20530,7 +20530,7 @@ namespace ts {
2053020530
errorMessage = Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function;
2053120531
}
2053220532

20533-
error(derived.valueDeclaration.name, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type));
20533+
error(derived.valueDeclaration.name || derived.valueDeclaration, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type));
2053420534
}
2053520535
}
2053620536
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
tests/cases/compiler/a.js(14,5): error TS2424: Class 'A' defines instance member function 'foo', but extended class 'B' defines it as instance member property.
2+
3+
4+
==== tests/cases/compiler/a.js (1 errors) ====
5+
// @ts-check
6+
class A {
7+
constructor() {
8+
9+
}
10+
foo() {
11+
return 4;
12+
}
13+
}
14+
15+
class B extends A {
16+
constructor() {
17+
super();
18+
this.foo = () => 3;
19+
~~~~~~~~~~~~~~~~~~
20+
!!! error TS2424: Class 'A' defines instance member function 'foo', but extended class 'B' defines it as instance member property.
21+
}
22+
}
23+
24+
const i = new B();
25+
i.foo();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// @allowJs: true
2+
// @checkJs: true
3+
// @noEmit: true
4+
5+
// @fileName: a.js
6+
// @ts-check
7+
class A {
8+
constructor() {
9+
10+
}
11+
foo() {
12+
return 4;
13+
}
14+
}
15+
16+
class B extends A {
17+
constructor() {
18+
super();
19+
this.foo = () => 3;
20+
}
21+
}
22+
23+
const i = new B();
24+
i.foo();

0 commit comments

Comments
 (0)