Fix undefined error for diagnostic for instantiating an abstract class (#19809)
* Fix undefined error for diagnostic for instantiating an abstract class * Only use the name-less diagnostic
This commit is contained in:
parent
7a45573311
commit
ef6f9351b5
|
@ -16726,7 +16726,7 @@ namespace ts {
|
|||
// only the class declaration node will have the Abstract flag set.
|
||||
const valueDecl = expressionType.symbol && getClassLikeDeclarationOfSymbol(expressionType.symbol);
|
||||
if (valueDecl && hasModifier(valueDecl, ModifierFlags.Abstract)) {
|
||||
error(node, Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0, declarationNameToString(getNameOfDeclaration(valueDecl)));
|
||||
error(node, Diagnostics.Cannot_create_an_instance_of_an_abstract_class);
|
||||
return resolveErrorCall(node);
|
||||
}
|
||||
|
||||
|
|
|
@ -1716,7 +1716,7 @@
|
|||
"category": "Error",
|
||||
"code": 2510
|
||||
},
|
||||
"Cannot create an instance of the abstract class '{0}'.": {
|
||||
"Cannot create an instance of an abstract class.": {
|
||||
"category": "Error",
|
||||
"code": 2511
|
||||
},
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/abstractClassInLocalScopeIsAbstract.ts(4,5): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/compiler/abstractClassInLocalScopeIsAbstract.ts(4,5): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/abstractClassInLocalScopeIsAbstract.ts (1 errors) ====
|
||||
|
@ -7,7 +7,7 @@ tests/cases/compiler/abstractClassInLocalScopeIsAbstract.ts(4,5): error TS2511:
|
|||
class B extends A {}
|
||||
new A();
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new B();
|
||||
})()
|
||||
|
|
@ -2,7 +2,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
Cannot assign an abstract constructor type to a non-abstract constructor type.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractConstructorAssignability.ts(9,5): error TS2322: Type 'typeof B' is not assignable to type 'typeof C'.
|
||||
Cannot assign an abstract constructor type to a non-abstract constructor type.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractConstructorAssignability.ts(12,1): error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractConstructorAssignability.ts(12,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractConstructorAssignability.ts (3 errors) ====
|
||||
|
@ -25,5 +25,5 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
new AA;
|
||||
new BB;
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new CC;
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractFactoryFunction.ts(9,12): error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractFactoryFunction.ts(9,12): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractFactoryFunction.ts(13,6): error TS2345: Argument of type 'typeof B' is not assignable to parameter of type 'typeof A'.
|
||||
Cannot assign an abstract constructor type to a non-abstract constructor type.
|
||||
|
||||
|
@ -14,7 +14,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
function NewB(Factory: typeof B) {
|
||||
return new B;
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
}
|
||||
|
||||
NewA(A);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractImportInstantiation.ts(4,5): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractImportInstantiation.ts(9,1): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractImportInstantiation.ts(4,5): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractImportInstantiation.ts(9,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractImportInstantiation.ts (2 errors) ====
|
||||
|
@ -8,12 +8,12 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new A;
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
}
|
||||
|
||||
import myA = M.A;
|
||||
|
||||
new myA;
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInAModule.ts(6,1): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInAModule.ts(6,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInAModule.ts (1 errors) ====
|
||||
|
@ -9,5 +9,5 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new M.A;
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new M.B;
|
|
@ -1,6 +1,6 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(11,1): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(12,1): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(14,1): error TS2511: Cannot create an instance of the abstract class 'C'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(11,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(12,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts(14,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations1.ts (3 errors) ====
|
||||
|
@ -16,14 +16,14 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new A;
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new A(1); // should report 1 error
|
||||
~~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new B;
|
||||
new C;
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'C'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
var a : A;
|
||||
var b : B;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(10,1): error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(10,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(13,5): error TS2322: Type 'typeof B' is not assignable to type 'typeof A'.
|
||||
Cannot assign an abstract constructor type to a non-abstract constructor type.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(17,5): error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(21,1): error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(17,5): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(21,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(23,15): error TS2449: Class 'C' used before its declaration.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(26,7): error TS2515: Non-abstract class 'C' does not implement inherited abstract member 'bar' from class 'B'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractInstantiations2.ts(46,5): error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
|
@ -22,7 +22,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new B; // error
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
var BB: typeof B = B;
|
||||
var AA: typeof A = BB; // error, AA is not of abstract type.
|
||||
|
@ -34,13 +34,13 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
function constructB(Factory : typeof B) {
|
||||
new Factory; // error -- Factory is of type typeof B.
|
||||
~~~~~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
}
|
||||
|
||||
var BB = B;
|
||||
new BB; // error -- BB is of type typeof B.
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'B'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
var x : any = C;
|
||||
~
|
||||
|
|
|
@ -6,14 +6,14 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(26,15): error TS2300: Duplicate identifier 'DCC1'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(28,15): error TS2300: Duplicate identifier 'DCC2'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(29,24): error TS2300: Duplicate identifier 'DCC2'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(31,1): error TS2511: Cannot create an instance of the abstract class 'CM'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(32,1): error TS2511: Cannot create an instance of the abstract class 'MC'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(33,1): error TS2511: Cannot create an instance of the abstract class 'CI'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(34,1): error TS2511: Cannot create an instance of the abstract class 'IC'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(35,1): error TS2511: Cannot create an instance of the abstract class 'CC1'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(37,1): error TS2511: Cannot create an instance of the abstract class 'DCI'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(38,1): error TS2511: Cannot create an instance of the abstract class 'DIC'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(39,1): error TS2511: Cannot create an instance of the abstract class 'DCC1'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(31,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(32,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(33,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(34,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(35,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(37,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(38,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts(39,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMergedDeclaration.ts (16 errors) ====
|
||||
|
@ -65,27 +65,27 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new CM;
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'CM'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new MC;
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'MC'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new CI;
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'CI'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new IC;
|
||||
~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'IC'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new CC1;
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'CC1'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new CC2;
|
||||
new DCI;
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'DCI'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new DIC;
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'DIC'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new DCC1;
|
||||
~~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'DCC1'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new DCC2;
|
|
@ -1,6 +1,6 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractSingleLineDecl.ts(3,1): error TS2304: Cannot find name 'abstract'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractSingleLineDecl.ts(6,1): error TS2304: Cannot find name 'abstract'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractSingleLineDecl.ts(10,1): error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractSingleLineDecl.ts(10,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractSingleLineDecl.ts (3 errors) ====
|
||||
|
@ -19,6 +19,6 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
new A;
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'A'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
new B;
|
||||
new C;
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractUsingAbstractMethod1.ts(16,5): error TS2511: Cannot create an instance of the abstract class 'C'.
|
||||
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractUsingAbstractMethod1.ts(16,5): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractUsingAbstractMethod1.ts (1 errors) ====
|
||||
|
@ -19,5 +19,5 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst
|
|||
|
||||
a = new C; // error, cannot instantiate abstract class.
|
||||
~~~~~
|
||||
!!! error TS2511: Cannot create an instance of the abstract class 'C'.
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
a.foo();
|
12
tests/baselines/reference/newAbstractInstance2.errors.txt
Normal file
12
tests/baselines/reference/newAbstractInstance2.errors.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
/b.ts(2,1): error TS2511: Cannot create an instance of an abstract class.
|
||||
|
||||
|
||||
==== /a.ts (0 errors) ====
|
||||
export default abstract class {}
|
||||
|
||||
==== /b.ts (1 errors) ====
|
||||
import A from "./a";
|
||||
new A();
|
||||
~~~~~~~
|
||||
!!! error TS2511: Cannot create an instance of an abstract class.
|
||||
|
24
tests/baselines/reference/newAbstractInstance2.js
Normal file
24
tests/baselines/reference/newAbstractInstance2.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
//// [tests/cases/compiler/newAbstractInstance2.ts] ////
|
||||
|
||||
//// [a.ts]
|
||||
export default abstract class {}
|
||||
|
||||
//// [b.ts]
|
||||
import A from "./a";
|
||||
new A();
|
||||
|
||||
|
||||
//// [a.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var default_1 = /** @class */ (function () {
|
||||
function default_1() {
|
||||
}
|
||||
return default_1;
|
||||
}());
|
||||
exports["default"] = default_1;
|
||||
//// [b.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var a_1 = require("./a");
|
||||
new a_1["default"]();
|
10
tests/baselines/reference/newAbstractInstance2.symbols
Normal file
10
tests/baselines/reference/newAbstractInstance2.symbols
Normal file
|
@ -0,0 +1,10 @@
|
|||
=== /a.ts ===
|
||||
export default abstract class {}
|
||||
No type information for this code.
|
||||
No type information for this code.=== /b.ts ===
|
||||
import A from "./a";
|
||||
>A : Symbol(A, Decl(b.ts, 0, 6))
|
||||
|
||||
new A();
|
||||
>A : Symbol(A, Decl(b.ts, 0, 6))
|
||||
|
11
tests/baselines/reference/newAbstractInstance2.types
Normal file
11
tests/baselines/reference/newAbstractInstance2.types
Normal file
|
@ -0,0 +1,11 @@
|
|||
=== /a.ts ===
|
||||
export default abstract class {}
|
||||
No type information for this code.
|
||||
No type information for this code.=== /b.ts ===
|
||||
import A from "./a";
|
||||
>A : typeof A
|
||||
|
||||
new A();
|
||||
>new A() : any
|
||||
>A : typeof A
|
||||
|
6
tests/cases/compiler/newAbstractInstance2.ts
Normal file
6
tests/cases/compiler/newAbstractInstance2.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
// @Filename: /a.ts
|
||||
export default abstract class {}
|
||||
|
||||
// @Filename: /b.ts
|
||||
import A from "./a";
|
||||
new A();
|
Loading…
Reference in a new issue