diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f11112811f5..c7d7da5e678 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -20530,7 +20530,7 @@ namespace ts { errorMessage = Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function; } - error(derived.valueDeclaration.name, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type)); + error(derived.valueDeclaration.name || derived.valueDeclaration, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type)); } } } diff --git a/tests/baselines/reference/checkJsFiles_noErrorLocation.errors.txt b/tests/baselines/reference/checkJsFiles_noErrorLocation.errors.txt new file mode 100644 index 00000000000..758b295a49d --- /dev/null +++ b/tests/baselines/reference/checkJsFiles_noErrorLocation.errors.txt @@ -0,0 +1,25 @@ +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. + + +==== tests/cases/compiler/a.js (1 errors) ==== + // @ts-check + class A { + constructor() { + + } + foo() { + return 4; + } + } + + class B extends A { + constructor() { + super(); + this.foo = () => 3; + ~~~~~~~~~~~~~~~~~~ +!!! error TS2424: Class 'A' defines instance member function 'foo', but extended class 'B' defines it as instance member property. + } + } + + const i = new B(); + i.foo(); \ No newline at end of file diff --git a/tests/cases/compiler/checkJsFiles_noErrorLocation.ts b/tests/cases/compiler/checkJsFiles_noErrorLocation.ts new file mode 100644 index 00000000000..a0b12c47115 --- /dev/null +++ b/tests/cases/compiler/checkJsFiles_noErrorLocation.ts @@ -0,0 +1,24 @@ +// @allowJs: true +// @checkJs: true +// @noEmit: true + +// @fileName: a.js +// @ts-check +class A { + constructor() { + + } + foo() { + return 4; + } +} + +class B extends A { + constructor() { + super(); + this.foo = () => 3; + } +} + +const i = new B(); +i.foo(); \ No newline at end of file