Improved error message for calling/constructing types

This commit is contained in:
Titian Cernicova-Dragomir 2019-06-22 02:28:03 +03:00
parent 2af8ac73ff
commit 768318b30c
48 changed files with 491 additions and 148 deletions

View file

@ -22015,11 +22015,83 @@ namespace ts {
return true;
}
function invocationErrorDetails(apparentType: Type, kind: SignatureKind): DiagnosticMessageChain {
let errorInfo: DiagnosticMessageChain | undefined;
const isCall = kind === SignatureKind.Call;
if (apparentType.flags & TypeFlags.Union) {
const types = (apparentType as UnionType).types;
let hasSignatures = false;
for (const constituent of types) {
const signatures = getSignaturesOfType(constituent, kind);
if (signatures.length !== 0) {
hasSignatures = true;
if (errorInfo) {
// Bail early if we already have an error, no chance of "No constituent of type is callable"
break;
}
}
else {
// Error on the first non callable constituent only
if (!errorInfo) {
errorInfo = chainDiagnosticMessages(
errorInfo,
isCall ?
Diagnostics.Type_0_has_no_call_signatures :
Diagnostics.Type_0_has_no_construct_signatures,
typeToString(constituent)
);
errorInfo = chainDiagnosticMessages(
errorInfo,
isCall ?
Diagnostics.Not_all_constituents_of_type_0_are_callable :
Diagnostics.Not_all_constituents_of_type_0_are_constructable,
typeToString(apparentType)
);
}
if (hasSignatures) {
// Bail early if we already found a siganture, no chance of "No constituent of type is callable"
break;
}
}
}
if (!hasSignatures) {
errorInfo = chainDiagnosticMessages(
/* detials */ undefined,
isCall ?
Diagnostics.No_constituent_of_type_0_is_callable :
Diagnostics.No_constituent_of_type_0_is_constructable,
typeToString(apparentType)
);
}
if (!errorInfo) {
errorInfo = chainDiagnosticMessages(
errorInfo,
isCall ?
Diagnostics.Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other :
Diagnostics.Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other,
typeToString(apparentType)
);
}
}
else {
errorInfo = chainDiagnosticMessages(
errorInfo,
isCall ?
Diagnostics.Type_0_has_no_call_signatures :
Diagnostics.Type_0_has_no_construct_signatures,
typeToString(apparentType)
);
}
return chainDiagnosticMessages(
errorInfo,
isCall ?
Diagnostics.This_expression_is_not_callable :
Diagnostics.This_expression_is_not_constructable
);
}
function invocationError(node: Node, apparentType: Type, kind: SignatureKind, relatedInformation?: DiagnosticRelatedInformation) {
const diagnostic = error(node, (kind === SignatureKind.Call ?
Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures :
Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature
), typeToString(apparentType));
const diagnostic: Diagnostic = createDiagnosticForNodeFromMessageChain(node, invocationErrorDetails(apparentType, kind));
diagnostics.add(diagnostic);
invocationErrorRecovery(apparentType, kind, relatedInformation ? addRelatedInfo(diagnostic, relatedInformation) : diagnostic);
}
@ -22113,7 +22185,7 @@ namespace ts {
const headMessage = getDiagnosticHeadMessageForDecoratorResolution(node);
if (!callSignatures.length) {
let errorInfo = chainDiagnosticMessages(/*details*/ undefined, Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures, typeToString(apparentType));
let errorInfo = invocationErrorDetails(apparentType, SignatureKind.Call);
errorInfo = chainDiagnosticMessages(errorInfo, headMessage);
const diag = createDiagnosticForNodeFromMessageChain(node, errorInfo);
diagnostics.add(diag);

View file

@ -1236,7 +1236,7 @@
"category": "Error",
"code": 2348
},
"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.": {
"This expression is not callable.": {
"category": "Error",
"code": 2349
},
@ -1244,7 +1244,7 @@
"category": "Error",
"code": 2350
},
"Cannot use 'new' with an expression whose type lacks a call or construct signature.": {
"This expression is not constructable.": {
"category": "Error",
"code": 2351
},
@ -2621,6 +2621,38 @@
"category": "Error",
"code": 2754
},
"No constituent of type '{0}' is callable.": {
"category": "Error",
"code": 2755
},
"Not all constituents of type '{0}' are callable.": {
"category": "Error",
"code": 2756
},
"Type '{0}' has no call signatures.": {
"category": "Error",
"code": 2757
},
"Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other.": {
"category": "Error",
"code": 2758
},
"No constituent of type '{0}' is constructable.": {
"category": "Error",
"code": 2759
},
"Not all constituents of type '{0}' are constructable.": {
"category": "Error",
"code": 2760
},
"Type '{0}' has no construct signatures.": {
"category": "Error",
"code": 2761
},
"Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other.": {
"category": "Error",
"code": 2762
},
"Import declaration '{0}' is using private name '{1}'.": {
"category": "Error",

View file

@ -31,15 +31,15 @@ namespace ts.codefix {
registerCodeFix({
errorCodes: [
Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures.code,
Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature.code,
Diagnostics.This_expression_is_not_callable.code,
Diagnostics.This_expression_is_not_constructable.code,
],
getCodeActions: getActionsForUsageOfInvalidImport
});
function getActionsForUsageOfInvalidImport(context: CodeFixContext): CodeFixAction[] | undefined {
const sourceFile = context.sourceFile;
const targetKind = Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures.code === context.errorCode ? SyntaxKind.CallExpression : SyntaxKind.NewExpression;
const targetKind = Diagnostics.This_expression_is_not_callable.code === context.errorCode ? SyntaxKind.CallExpression : SyntaxKind.NewExpression;
const node = findAncestor(getTokenAtPosition(sourceFile, context.span.start), a => a.kind === targetKind && a.getStart() === context.span.start && a.getEnd() === (context.span.start + context.span.length)) as CallExpression | NewExpression;
if (!node) {
return [];

View file

@ -1,8 +1,13 @@
tests/cases/compiler/betterErrorForAccidentalCall.ts(3,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(5,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(7,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(10,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(13,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(3,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(5,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(7,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(10,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/betterErrorForAccidentalCall.ts(13,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/compiler/betterErrorForAccidentalCall.ts (5 errors) ====
@ -10,30 +15,35 @@ tests/cases/compiler/betterErrorForAccidentalCall.ts(13,1): error TS2349: Cannot
foo()(1 as number).toString();
~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
foo() (1 as number).toString();
~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
foo()
~~~~~
(1 as number).toString();
~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
!!! related TS2734 tests/cases/compiler/betterErrorForAccidentalCall.ts:7:1: It is highly likely that you are missing a semicolon.
foo()
~~~~~
(1 + 2).toString();
~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
!!! related TS2734 tests/cases/compiler/betterErrorForAccidentalCall.ts:10:1: It is highly likely that you are missing a semicolon.
foo()
~~~~~
(<number>1).toString();
~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
!!! related TS2734 tests/cases/compiler/betterErrorForAccidentalCall.ts:13:1: It is highly likely that you are missing a semicolon.

View file

@ -1,7 +1,8 @@
tests/cases/compiler/callOnInstance.ts(1,18): error TS2300: Duplicate identifier 'D'.
tests/cases/compiler/callOnInstance.ts(3,15): error TS2300: Duplicate identifier 'D'.
tests/cases/compiler/callOnInstance.ts(7,25): error TS2554: Expected 0 arguments, but got 1.
tests/cases/compiler/callOnInstance.ts(10,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'C' has no compatible call signatures.
tests/cases/compiler/callOnInstance.ts(10,1): error TS2349: This expression is not callable.
Type 'C' has no call signatures.
==== tests/cases/compiler/callOnInstance.ts (4 errors) ====
@ -22,4 +23,5 @@ tests/cases/compiler/callOnInstance.ts(10,1): error TS2349: Cannot invoke an exp
declare class C { constructor(value: number); }
(new C(1))(); // Error for calling an instance
~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'C' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'C' has no call signatures.

View file

@ -6,7 +6,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1.ts(14,15): error TS2537:
tests/cases/compiler/computedPropertiesInDestructuring1.ts(15,15): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(16,16): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(17,16): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(20,8): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(20,8): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(20,8): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(21,8): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(21,12): error TS2339: Property 'toExponential' does not exist on type 'string'.
@ -14,7 +15,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1.ts(24,4): error TS2537:
tests/cases/compiler/computedPropertiesInDestructuring1.ts(28,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(30,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(31,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(33,4): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(33,4): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(33,4): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(34,4): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1.ts(34,5): error TS2365: Operator '+' cannot be applied to types '1' and '{}'.
@ -58,7 +60,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1.ts(34,5): error TS2365:
// report errors on type errors in computed properties used in destructuring
let [{[foo()]: bar6}] = [{bar: "bar"}];
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
~~~~~
!!! error TS2538: Type 'any' cannot be used as an index type.
let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}];
@ -87,7 +90,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1.ts(34,5): error TS2365:
[{[foo()]: bar4}] = [{bar: "bar"}];
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
~~~~~
!!! error TS2538: Type 'any' cannot be used as an index type.
[{[(1 + {})]: bar4}] = [{bar: "bar"}];

View file

@ -6,7 +6,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(15,15): error TS2
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(16,15): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(17,16): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(18,16): error TS2537: Type '{ bar: number; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(21,8): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(21,8): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(21,8): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(22,8): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(22,12): error TS2339: Property 'toExponential' does not exist on type 'string'.
@ -14,7 +15,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(25,4): error TS25
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(29,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(31,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(32,4): error TS2537: Type '{ bar: string; }' has no matching index signature for type 'string'.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(34,4): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(34,4): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(34,4): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(35,4): error TS2538: Type 'any' cannot be used as an index type.
tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(35,5): error TS2365: Operator '+' cannot be applied to types '1' and '{}'.
@ -59,7 +61,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(35,5): error TS23
// report errors on type errors in computed properties used in destructuring
let [{[foo()]: bar6}] = [{bar: "bar"}];
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
~~~~~
!!! error TS2538: Type 'any' cannot be used as an index type.
let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}];
@ -88,7 +91,8 @@ tests/cases/compiler/computedPropertiesInDestructuring1_ES6.ts(35,5): error TS23
[{[foo()]: bar4}] = [{bar: "bar"}];
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
~~~~~
!!! error TS2538: Type 'any' cannot be used as an index type.
[{[(1 + {})]: bar4}] = [{bar: "bar"}];

View file

@ -1,5 +1,6 @@
tests/cases/conformance/decorators/class/constructableDecoratorOnClass01.ts(3,1): error TS1238: Unable to resolve signature of class decorator when called as an expression.
Cannot invoke an expression whose type lacks a call signature. Type 'typeof CtorDtor' has no compatible call signatures.
This expression is not callable.
Type 'typeof CtorDtor' has no call signatures.
==== tests/cases/conformance/decorators/class/constructableDecoratorOnClass01.ts (1 errors) ====
@ -8,7 +9,8 @@ tests/cases/conformance/decorators/class/constructableDecoratorOnClass01.ts(3,1)
@CtorDtor
~~~~~~~~~
!!! error TS1238: Unable to resolve signature of class decorator when called as an expression.
!!! error TS1238: Cannot invoke an expression whose type lacks a call signature. Type 'typeof CtorDtor' has no compatible call signatures.
!!! error TS1238: This expression is not callable.
!!! error TS1238: Type 'typeof CtorDtor' has no call signatures.
class C {
}

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorWithNew.ts(6,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorWithNew.ts(6,1): error TS2351: This expression is not constructable.
Type 'Number' has no construct signatures.
==== tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorWithNew.ts (1 errors) ====
@ -9,4 +10,5 @@ tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorWithNew
new a ** new b ** c;
new (a ** b ** c);
~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'Number' has no construct signatures.

View file

@ -1,4 +1,5 @@
tests/cases/compiler/functionExpressionShadowedByParams.ts(3,4): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
tests/cases/compiler/functionExpressionShadowedByParams.ts(3,4): error TS2349: This expression is not callable.
Type 'Number' has no call signatures.
tests/cases/compiler/functionExpressionShadowedByParams.ts(10,9): error TS2339: Property 'apply' does not exist on type 'number'.
@ -7,7 +8,8 @@ tests/cases/compiler/functionExpressionShadowedByParams.ts(10,9): error TS2339:
b1.toPrecision(2); // should not error
b1(12); // should error
~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'Number' has no call signatures.
}

View file

@ -1,4 +1,5 @@
tests/cases/compiler/genericArrayAssignmentCompatErrors.ts(2,15): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/genericArrayAssignmentCompatErrors.ts(2,15): error TS2351: This expression is not constructable.
Type 'undefined[]' has no construct signatures.
tests/cases/compiler/genericArrayAssignmentCompatErrors.ts(4,14): error TS2314: Generic type 'Array<T>' requires 1 type argument(s).
@ -6,7 +7,8 @@ tests/cases/compiler/genericArrayAssignmentCompatErrors.ts(4,14): error TS2314:
var myCars=new Array();
var myCars2 = new [];
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'undefined[]' has no construct signatures.
var myCars3 = new Array({});
var myCars4: Array; // error
~~~~~

View file

@ -1,9 +1,11 @@
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(4,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(7,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(19,14): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(19,14): error TS2349: This expression is not callable.
Type 'Number' has no call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(26,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(29,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(41,14): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts(41,14): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIntoClassType.ts (6 errors) ====
@ -31,7 +33,8 @@ tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIn
r.y = 4;
var r6 = d.y(); // error
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'Number' has no call signatures.
}
@ -59,5 +62,6 @@ tests/cases/conformance/classes/members/classTypes/instancePropertiesInheritedIn
r.y = '';
var r6 = d.y(); // error
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
}

View file

@ -1,9 +1,11 @@
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(4,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(7,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(17,14): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(17,14): error TS2349: This expression is not callable.
Type 'Number' has no call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(24,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(27,13): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(37,14): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts(37,14): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.ts (6 errors) ====
@ -29,7 +31,8 @@ tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.t
r.y = 4;
var r6 = c.y(); // error
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'Number' has no call signatures.
}
@ -55,5 +58,6 @@ tests/cases/conformance/classes/members/classTypes/instancePropertyInClassType.t
r.y = '';
var r6 = c.y(); // error
~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
}

View file

@ -3,13 +3,15 @@ tests/cases/compiler/intTypeCheck.ts(71,6): error TS2304: Cannot find name 'p'.
tests/cases/compiler/intTypeCheck.ts(85,5): error TS2386: Overload signatures must all be optional or required.
tests/cases/compiler/intTypeCheck.ts(99,5): error TS2696: The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?
Type 'Object' is missing the following properties from type 'i1': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(100,16): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(100,16): error TS2351: This expression is not constructable.
Type 'i1' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(101,5): error TS2739: Type 'Base' is missing the following properties from type 'i1': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(103,5): error TS2739: Type '() => void' is missing the following properties from type 'i1': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(106,5): error TS2322: Type 'boolean' is not assignable to type 'i1'.
tests/cases/compiler/intTypeCheck.ts(106,20): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(106,21): error TS2693: 'i1' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(107,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(107,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(112,5): error TS2322: Type '{}' is not assignable to type 'i2'.
Type '{}' provides no match for the signature '(): any'.
tests/cases/compiler/intTypeCheck.ts(113,5): error TS2322: Type 'Object' is not assignable to type 'i2'.
@ -21,7 +23,8 @@ tests/cases/compiler/intTypeCheck.ts(115,5): error TS2322: Type 'Base' is not as
tests/cases/compiler/intTypeCheck.ts(120,5): error TS2322: Type 'boolean' is not assignable to type 'i2'.
tests/cases/compiler/intTypeCheck.ts(120,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(120,22): error TS2693: 'i2' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(121,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(121,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(126,5): error TS2322: Type '{}' is not assignable to type 'i3'.
Type '{}' provides no match for the signature 'new (): any'.
tests/cases/compiler/intTypeCheck.ts(127,5): error TS2322: Type 'Object' is not assignable to type 'i3'.
@ -34,22 +37,27 @@ tests/cases/compiler/intTypeCheck.ts(131,5): error TS2322: Type '() => void' is
tests/cases/compiler/intTypeCheck.ts(134,5): error TS2322: Type 'boolean' is not assignable to type 'i3'.
tests/cases/compiler/intTypeCheck.ts(134,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(134,22): error TS2693: 'i3' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(135,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(142,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(135,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(142,17): error TS2351: This expression is not constructable.
Type 'i4' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(148,5): error TS2322: Type 'boolean' is not assignable to type 'i4'.
tests/cases/compiler/intTypeCheck.ts(148,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(148,22): error TS2693: 'i4' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(149,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(149,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(154,5): error TS2739: Type '{}' is missing the following properties from type 'i5': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(155,5): error TS2696: The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?
Type 'Object' is missing the following properties from type 'i5': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(156,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(156,17): error TS2351: This expression is not constructable.
Type 'i5' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(157,5): error TS2739: Type 'Base' is missing the following properties from type 'i5': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(159,5): error TS2739: Type '() => void' is missing the following properties from type 'i5': p, p3, p6
tests/cases/compiler/intTypeCheck.ts(162,5): error TS2322: Type 'boolean' is not assignable to type 'i5'.
tests/cases/compiler/intTypeCheck.ts(162,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(162,22): error TS2693: 'i5' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(163,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(163,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(168,5): error TS2322: Type '{}' is not assignable to type 'i6'.
Type '{}' provides no match for the signature '(): any'.
tests/cases/compiler/intTypeCheck.ts(169,5): error TS2322: Type 'Object' is not assignable to type 'i6'.
@ -63,7 +71,8 @@ tests/cases/compiler/intTypeCheck.ts(173,5): error TS2322: Type '() => void' is
tests/cases/compiler/intTypeCheck.ts(176,5): error TS2322: Type 'boolean' is not assignable to type 'i6'.
tests/cases/compiler/intTypeCheck.ts(176,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(176,22): error TS2693: 'i6' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(177,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(177,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(182,5): error TS2322: Type '{}' is not assignable to type 'i7'.
Type '{}' provides no match for the signature 'new (): any'.
tests/cases/compiler/intTypeCheck.ts(183,5): error TS2322: Type 'Object' is not assignable to type 'i7'.
@ -76,12 +85,15 @@ tests/cases/compiler/intTypeCheck.ts(187,5): error TS2322: Type '() => void' is
tests/cases/compiler/intTypeCheck.ts(190,5): error TS2322: Type 'boolean' is not assignable to type 'i7'.
tests/cases/compiler/intTypeCheck.ts(190,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(190,22): error TS2693: 'i7' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(191,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(198,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(191,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(198,17): error TS2351: This expression is not constructable.
Type 'i8' has no construct signatures.
tests/cases/compiler/intTypeCheck.ts(204,5): error TS2322: Type 'boolean' is not assignable to type 'i8'.
tests/cases/compiler/intTypeCheck.ts(204,21): error TS1109: Expression expected.
tests/cases/compiler/intTypeCheck.ts(204,22): error TS2693: 'i8' only refers to a type, but is being used as a value here.
tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
==== tests/cases/compiler/intTypeCheck.ts (63 errors) ====
@ -195,7 +207,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2696: Type 'Object' is missing the following properties from type 'i1': p, p3, p6
var obj3: i1 = new obj0;
~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'i1' has no construct signatures.
var obj4: i1 = new Base;
~~~~
!!! error TS2739: Type 'Base' is missing the following properties from type 'i1': p, p3, p6
@ -214,7 +227,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i1' only refers to a type, but is being used as a value here.
var obj10: i1 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Call signatures
//
@ -248,7 +262,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i2' only refers to a type, but is being used as a value here.
var obj21: i2 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Construct Signatures
//
@ -283,7 +298,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i3' only refers to a type, but is being used as a value here.
var obj32: i3 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Index Signatures
//
@ -292,7 +308,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
var obj35: i4 = new Object();
var obj36: i4 = new obj33;
~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'i4' has no construct signatures.
var obj37: i4 = new Base;
var obj38: i4 = null;
var obj39: i4 = function () { };
@ -307,7 +324,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i4' only refers to a type, but is being used as a value here.
var obj43: i4 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Interface Derived I1
//
@ -321,7 +339,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2696: Type 'Object' is missing the following properties from type 'i5': p, p3, p6
var obj47: i5 = new obj44;
~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'i5' has no construct signatures.
var obj48: i5 = new Base;
~~~~~
!!! error TS2739: Type 'Base' is missing the following properties from type 'i5': p, p3, p6
@ -340,7 +359,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i5' only refers to a type, but is being used as a value here.
var obj54: i5 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Interface Derived I2
//
@ -377,7 +397,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i6' only refers to a type, but is being used as a value here.
var obj65: i6 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Interface Derived I3
//
@ -412,7 +433,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i7' only refers to a type, but is being used as a value here.
var obj76: i7 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
//
// Interface Derived I4
//
@ -421,7 +443,8 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
var obj79: i8 = new Object();
var obj80: i8 = new obj77;
~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'i8' has no construct signatures.
var obj81: i8 = new Base;
var obj82: i8 = null;
var obj83: i8 = function () { };
@ -436,4 +459,5 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit
!!! error TS2693: 'i8' only refers to a type, but is being used as a value here.
var obj87: i8 = new {};
~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.

View file

@ -1,5 +1,6 @@
tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(22,7): error TS2339: Property 'method' does not exist on type '{}'.
tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(23,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(23,5): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(28,7): error TS2551: Property 'mesage' does not exist on type 'Error'. Did you mean 'message'?
tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(33,7): error TS2551: Property 'getHuors' does not exist on type 'Date'. Did you mean 'getHours'?
@ -31,7 +32,8 @@ tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(33,7): error
!!! error TS2339: Property 'method' does not exist on type '{}'.
x();
~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
}
if (isError(x)) {

View file

@ -4,7 +4,8 @@ tests/cases/conformance/types/never/neverTypeErrors1.ts(5,5): error TS2322: Type
tests/cases/conformance/types/never/neverTypeErrors1.ts(6,5): error TS2322: Type 'undefined' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors1.ts(7,5): error TS2322: Type 'null' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors1.ts(8,5): error TS2322: Type '{}' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors1.ts(9,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'never' has no compatible call signatures.
tests/cases/conformance/types/never/neverTypeErrors1.ts(9,5): error TS2349: This expression is not callable.
Type 'never' has no call signatures.
tests/cases/conformance/types/never/neverTypeErrors1.ts(13,5): error TS2322: Type 'undefined' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors1.ts(17,5): error TS2322: Type '1' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors1.ts(20,16): error TS2534: A function returning 'never' cannot have a reachable end point.
@ -35,7 +36,8 @@ tests/cases/conformance/types/never/neverTypeErrors1.ts(24,17): error TS2407: Th
!!! error TS2322: Type '{}' is not assignable to type 'never'.
x();
~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'never' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'never' has no call signatures.
}
function f2(): never {

View file

@ -4,7 +4,8 @@ tests/cases/conformance/types/never/neverTypeErrors2.ts(5,5): error TS2322: Type
tests/cases/conformance/types/never/neverTypeErrors2.ts(6,5): error TS2322: Type 'undefined' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors2.ts(7,5): error TS2322: Type 'null' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors2.ts(8,5): error TS2322: Type '{}' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors2.ts(9,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'never' has no compatible call signatures.
tests/cases/conformance/types/never/neverTypeErrors2.ts(9,5): error TS2349: This expression is not callable.
Type 'never' has no call signatures.
tests/cases/conformance/types/never/neverTypeErrors2.ts(13,5): error TS2322: Type 'undefined' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors2.ts(17,5): error TS2322: Type '1' is not assignable to type 'never'.
tests/cases/conformance/types/never/neverTypeErrors2.ts(20,16): error TS2534: A function returning 'never' cannot have a reachable end point.
@ -35,7 +36,8 @@ tests/cases/conformance/types/never/neverTypeErrors2.ts(24,17): error TS2407: Th
!!! error TS2322: Type '{}' is not assignable to type 'never'.
x();
~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'never' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'never' has no call signatures.
}
function f2(): never {

View file

@ -1,4 +1,5 @@
tests/cases/compiler/newAbstractInstance.ts(3,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/newAbstractInstance.ts(3,1): error TS2351: This expression is not constructable.
Type 'B' has no construct signatures.
==== tests/cases/compiler/newAbstractInstance.ts (1 errors) ====
@ -6,5 +7,6 @@ tests/cases/compiler/newAbstractInstance.ts(3,1): error TS2351: Cannot use 'new'
declare const b: B;
new b();
~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'B' has no construct signatures.

View file

@ -1,4 +1,5 @@
tests/cases/compiler/newOnInstanceSymbol.ts(3,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/newOnInstanceSymbol.ts(3,1): error TS2351: This expression is not constructable.
Type 'C' has no construct signatures.
==== tests/cases/compiler/newOnInstanceSymbol.ts (1 errors) ====
@ -6,4 +7,5 @@ tests/cases/compiler/newOnInstanceSymbol.ts(3,1): error TS2351: Cannot use 'new'
var x = new C(); // should be ok
new x(); // should error
~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'C' has no construct signatures.

View file

@ -1,17 +1,27 @@
tests/cases/compiler/newOperator.ts(3,13): error TS2693: 'ifc' only refers to a type, but is being used as a value here.
tests/cases/compiler/newOperator.ts(10,10): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/newOperator.ts(11,10): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/newOperator.ts(10,10): error TS2351: This expression is not constructable.
Type 'Number' has no construct signatures.
tests/cases/compiler/newOperator.ts(11,10): error TS2351: This expression is not constructable.
Type 'String' has no construct signatures.
tests/cases/compiler/newOperator.ts(12,5): error TS2693: 'string' only refers to a type, but is being used as a value here.
tests/cases/compiler/newOperator.ts(18,14): error TS2693: 'string' only refers to a type, but is being used as a value here.
tests/cases/compiler/newOperator.ts(18,21): error TS1011: An element access expression should take an argument.
tests/cases/compiler/newOperator.ts(21,1): error TS2693: 'string' only refers to a type, but is being used as a value here.
tests/cases/compiler/newOperator.ts(22,2): error TS1011: An element access expression should take an argument.
tests/cases/compiler/newOperator.ts(28,13): error TS2304: Cannot find name 'q'.
tests/cases/compiler/newOperator.ts(31,10): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/newOperator.ts(45,24): error TS1011: An element access expression should take an argument.
tests/cases/compiler/newOperator.ts(31,10): error TS2351: This expression is not constructable.
Type 'Date' has no construct signatures.
tests/cases/compiler/newOperator.ts(38,1): error TS2351: This expression is not constructable.
No constituent of type '{ a: string; } | { b: string; }' is constructable.
tests/cases/compiler/newOperator.ts(42,1): error TS2351: This expression is not constructable.
Not all constituents of type '{ a: string; } | (new (a: string) => void)' are constructable.
Type '{ a: string; }' has no construct signatures.
tests/cases/compiler/newOperator.ts(46,1): error TS2351: This expression is not constructable.
Each member of the union type '(new <T extends number>(a: T) => void) | (new <T>(a: string) => void)' has construct signatures, but none of those signatures are compatible with each other.
tests/cases/compiler/newOperator.ts(56,24): error TS1011: An element access expression should take an argument.
==== tests/cases/compiler/newOperator.ts (11 errors) ====
==== tests/cases/compiler/newOperator.ts (14 errors) ====
interface ifc { }
// Attempting to 'new' an interface yields poor error
var i = new ifc();
@ -25,10 +35,12 @@ tests/cases/compiler/newOperator.ts(45,24): error TS1011: An element access expr
// Target is not a class or var, good error
var t1 = new 53();
~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'Number' has no construct signatures.
var t2 = new ''();
~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'String' has no construct signatures.
new string;
~~~~~~
!!! error TS2693: 'string' only refers to a type, but is being used as a value here.
@ -62,11 +74,33 @@ tests/cases/compiler/newOperator.ts(45,24): error TS1011: An element access expr
// not legal
var t5 = new new Date;
~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'Date' has no construct signatures.
// Can be an expression
new String;
// Error on union
declare const union: { a: string } | { b: string }
new union;
~~~~~~~~~
!!! error TS2351: This expression is not constructable.
!!! error TS2351: No constituent of type '{ a: string; } | { b: string; }' is constructable.
// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
new ctorUnion("");
~~~~~~~~~~~~~~~~~
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Not all constituents of type '{ a: string; } | (new (a: string) => void)' are constructable.
!!! error TS2351: Type '{ a: string; }' has no construct signatures.
// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
new ctorUnion2("");
~~~~~~~~~~~~~~~~~~
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Each member of the union type '(new <T extends number>(a: T) => void) | (new <T>(a: string) => void)' has construct signatures, but none of those signatures are compatible with each other.
module M {
export class T {

View file

@ -34,6 +34,17 @@ var t5 = new new Date;
// Can be an expression
new String;
// Error on union
declare const union: { a: string } | { b: string }
new union;
// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
new ctorUnion("");
// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
new ctorUnion2("");
module M {
export class T {
@ -69,6 +80,9 @@ var f = new q();
var t5 = new new Date;
// Can be an expression
new String;
new union;
new ctorUnion("");
new ctorUnion2("");
var M;
(function (M) {
var T = /** @class */ (function () {

View file

@ -57,30 +57,59 @@ var t5 = new new Date;
new String;
>String : Symbol(String, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
// Error on union
declare const union: { a: string } | { b: string }
>union : Symbol(union, Decl(newOperator.ts, 36, 13))
>a : Symbol(a, Decl(newOperator.ts, 36, 22))
>b : Symbol(b, Decl(newOperator.ts, 36, 38))
new union;
>union : Symbol(union, Decl(newOperator.ts, 36, 13))
// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
>ctorUnion : Symbol(ctorUnion, Decl(newOperator.ts, 40, 13))
>a : Symbol(a, Decl(newOperator.ts, 40, 26))
>a : Symbol(a, Decl(newOperator.ts, 40, 47))
new ctorUnion("");
>ctorUnion : Symbol(ctorUnion, Decl(newOperator.ts, 40, 13))
// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>ctorUnion2 : Symbol(ctorUnion2, Decl(newOperator.ts, 44, 13))
>T : Symbol(T, Decl(newOperator.ts, 44, 32))
>a : Symbol(a, Decl(newOperator.ts, 44, 50))
>T : Symbol(T, Decl(newOperator.ts, 44, 32))
>T : Symbol(T, Decl(newOperator.ts, 44, 73))
>a : Symbol(a, Decl(newOperator.ts, 44, 76))
new ctorUnion2("");
>ctorUnion2 : Symbol(ctorUnion2, Decl(newOperator.ts, 44, 13))
module M {
>M : Symbol(M, Decl(newOperator.ts, 33, 11))
>M : Symbol(M, Decl(newOperator.ts, 45, 19))
export class T {
>T : Symbol(T, Decl(newOperator.ts, 36, 10))
>T : Symbol(T, Decl(newOperator.ts, 47, 10))
x: number;
>x : Symbol(T.x, Decl(newOperator.ts, 37, 20))
>x : Symbol(T.x, Decl(newOperator.ts, 48, 20))
}
}
class S {
>S : Symbol(S, Decl(newOperator.ts, 40, 1))
>S : Symbol(S, Decl(newOperator.ts, 51, 1))
public get xs(): M.T[] {
>xs : Symbol(S.xs, Decl(newOperator.ts, 42, 9))
>M : Symbol(M, Decl(newOperator.ts, 33, 11))
>T : Symbol(M.T, Decl(newOperator.ts, 36, 10))
>xs : Symbol(S.xs, Decl(newOperator.ts, 53, 9))
>M : Symbol(M, Decl(newOperator.ts, 45, 19))
>T : Symbol(M.T, Decl(newOperator.ts, 47, 10))
return new M.T[];
>M.T : Symbol(M.T, Decl(newOperator.ts, 36, 10))
>M : Symbol(M, Decl(newOperator.ts, 33, 11))
>T : Symbol(M.T, Decl(newOperator.ts, 36, 10))
>M.T : Symbol(M.T, Decl(newOperator.ts, 47, 10))
>M : Symbol(M, Decl(newOperator.ts, 45, 19))
>T : Symbol(M.T, Decl(newOperator.ts, 47, 10))
}
}

View file

@ -84,6 +84,37 @@ new String;
>new String : String
>String : StringConstructor
// Error on union
declare const union: { a: string } | { b: string }
>union : { a: string; } | { b: string; }
>a : string
>b : string
new union;
>new union : any
>union : { a: string; } | { b: string; }
// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
>ctorUnion : { a: string; } | (new (a: string) => void)
>a : string
>a : string
new ctorUnion("");
>new ctorUnion("") : any
>ctorUnion : { a: string; } | (new (a: string) => void)
>"" : ""
// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>ctorUnion2 : (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>a : T
>a : string
new ctorUnion2("");
>new ctorUnion2("") : any
>ctorUnion2 : (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
>"" : ""
module M {
>M : typeof M

View file

@ -10,7 +10,8 @@ tests/cases/conformance/types/spread/objectSpreadNegative.ts(33,19): error TS269
tests/cases/conformance/types/spread/objectSpreadNegative.ts(34,20): error TS2698: Spread types may only be created from object types.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(36,20): error TS2698: Spread types may only be created from object types.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(38,19): error TS2698: Spread types may only be created from object types.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(43,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(43,1): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(47,1): error TS2322: Type '12' is not assignable to type 'undefined'.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(53,9): error TS2339: Property 'm' does not exist on type '{ p: number; }'.
tests/cases/conformance/types/spread/objectSpreadNegative.ts(58,11): error TS2339: Property 'a' does not exist on type '{}'.
@ -86,7 +87,8 @@ tests/cases/conformance/types/spread/objectSpreadNegative.ts(58,11): error TS233
let spreadFunc = { ...function () { } }
spreadFunc(); // error, no call signature
~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
// write-only properties get skipped
let setterOnly = { ...{ set b (bad: number) { } } };

View file

@ -1,5 +1,6 @@
tests/cases/compiler/recursiveBaseConstructorCreation3.ts(6,27): error TS2314: Generic type 'abc<T>' requires 1 type argument(s).
tests/cases/compiler/recursiveBaseConstructorCreation3.ts(9,11): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/recursiveBaseConstructorCreation3.ts(9,11): error TS2351: This expression is not constructable.
Type 'typeof xyz' has no construct signatures.
==== tests/cases/compiler/recursiveBaseConstructorCreation3.ts (2 errors) ====
@ -15,5 +16,6 @@ tests/cases/compiler/recursiveBaseConstructorCreation3.ts(9,11): error TS2351: C
var bar = new xyz(); // Error: Invalid 'new' expression.
~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'typeof xyz' has no construct signatures.
var r: xyz = bar.foo;

View file

@ -1,4 +1,5 @@
tests/cases/compiler/staticMemberExportAccess.ts(14,35): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/staticMemberExportAccess.ts(14,35): error TS2351: This expression is not constructable.
Type 'Sammy' has no construct signatures.
tests/cases/compiler/staticMemberExportAccess.ts(17,18): error TS2576: Property 'bar' is a static member of type 'Sammy'
tests/cases/compiler/staticMemberExportAccess.ts(18,18): error TS2339: Property 'x' does not exist on type 'Sammy'.
@ -19,7 +20,8 @@ tests/cases/compiler/staticMemberExportAccess.ts(18,18): error TS2339: Property
var $: JQueryStatic;
var instanceOfClassSammy: Sammy = new $.sammy(); // should be error
~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'Sammy' has no construct signatures.
var r1 = instanceOfClassSammy.foo(); // r1 is string
var r2 = $.sammy.foo();
var r3 = $.sammy.bar(); // error

View file

@ -35,7 +35,8 @@ tests/cases/compiler/strictModeReservedWord.ts(22,12): error TS1212: Identifier
tests/cases/compiler/strictModeReservedWord.ts(22,12): error TS2503: Cannot find namespace 'interface'.
tests/cases/compiler/strictModeReservedWord.ts(23,5): error TS2552: Cannot find name 'ublic'. Did you mean 'public'?
tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS1212: Identifier expected. 'static' is a reserved word in strict mode.
tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/compiler/strictModeReservedWord.ts (38 errors) ====
@ -139,7 +140,8 @@ tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invok
~~~~~~
!!! error TS1212: Identifier expected. 'static' is a reserved word in strict mode.
~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.
}

View file

@ -1,4 +1,5 @@
tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping2.ts(9,43): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping2.ts(9,43): error TS2349: This expression is not callable.
Type 'Number' has no call signatures.
==== tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping2.ts (1 errors) ====
@ -12,5 +13,6 @@ tests/cases/conformance/expressions/contextualTyping/superCallParameterContextua
// Ensure 'value' is not of type 'any' by invoking it with type arguments.
constructor() { super(value => String(value<string>())); }
~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'Number' has no call signatures.
}

View file

@ -1,5 +1,6 @@
tests/cases/compiler/superNewCall1.ts(8,5): error TS2377: Constructors for derived classes must contain a 'super' call.
tests/cases/compiler/superNewCall1.ts(9,9): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/superNewCall1.ts(9,9): error TS2351: This expression is not constructable.
Type 'A<number, string>' has no construct signatures.
tests/cases/compiler/superNewCall1.ts(9,13): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
@ -16,7 +17,8 @@ tests/cases/compiler/superNewCall1.ts(9,13): error TS17011: 'super' must be call
new super(value => String(value));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'A<number, string>' has no construct signatures.
~~~~~
!!! error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
}

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag01.ts(3,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'typeof CtorTag' has no compatible call signatures.
tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag01.ts(3,1): error TS2349: This expression is not callable.
Type 'typeof CtorTag' has no call signatures.
==== tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag01.ts (1 errors) ====
@ -6,4 +7,5 @@ tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag01.ts(3,
CtorTag `Hello world!`;
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'typeof CtorTag' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'typeof CtorTag' has no call signatures.

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag02.ts(6,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'I' has no compatible call signatures.
tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag02.ts(6,1): error TS2349: This expression is not callable.
Type 'I' has no call signatures.
==== tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag02.ts (1 errors) ====
@ -9,4 +10,5 @@ tests/cases/conformance/es6/templates/taggedTemplateWithConstructableTag02.ts(6,
var tag: I;
tag `Hello world!`;
~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'I' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'I' has no call signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInCallExpression.ts(1,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInCallExpression.ts(1,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/es6/templates/templateStringInCallExpression.ts (1 errors) ====
`abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInCallExpressionES6.ts(1,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInCallExpressionES6.ts(1,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/es6/templates/templateStringInCallExpressionES6.ts (1 errors) ====
`abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInNewExpression.ts(1,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/conformance/es6/templates/templateStringInNewExpression.ts(1,1): error TS2351: This expression is not constructable.
Type 'String' has no construct signatures.
==== tests/cases/conformance/es6/templates/templateStringInNewExpression.ts (1 errors) ====
new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'String' has no construct signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInNewExpressionES6.ts(1,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/conformance/es6/templates/templateStringInNewExpressionES6.ts(1,1): error TS2351: This expression is not constructable.
Type 'String' has no construct signatures.
==== tests/cases/conformance/es6/templates/templateStringInNewExpressionES6.ts (1 errors) ====
new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'String' has no construct signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInNewOperator.ts(1,9): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/conformance/es6/templates/templateStringInNewOperator.ts(1,9): error TS2351: This expression is not constructable.
Type 'String' has no construct signatures.
==== tests/cases/conformance/es6/templates/templateStringInNewOperator.ts (1 errors) ====
var x = new `abc${ 1 }def`;
~~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'String' has no construct signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInNewOperatorES6.ts(1,9): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/conformance/es6/templates/templateStringInNewOperatorES6.ts(1,9): error TS2351: This expression is not constructable.
Type 'String' has no construct signatures.
==== tests/cases/conformance/es6/templates/templateStringInNewOperatorES6.ts (1 errors) ====
var x = new `abc${ 1 }def`;
~~~~~~~~~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type 'String' has no construct signatures.

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{ a: string; }' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(1,9): error TS2349: This expression is not callable.
Type '{ a: string; }' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(3,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(3,8): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(3,10): error TS1134: Variable declaration expected.
@ -12,7 +13,8 @@ tests/cases/conformance/es6/templates/templateStringInObjectLiteral.ts(4,1): err
~~~~~~~~~~~~~~~~~~~~~~~~
`b`: 321
~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{ a: string; }' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{ a: string; }' has no call signatures.
~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{ a: string; }' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(1,9): error TS2349: This expression is not callable.
Type '{ a: string; }' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(3,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(3,8): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(3,10): error TS1134: Variable declaration expected.
@ -12,7 +13,8 @@ tests/cases/conformance/es6/templates/templateStringInObjectLiteralES6.ts(4,1):
~~~~~~~~~~~~~~~~~~~~~~~~
`b`: 321
~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{ a: string; }' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{ a: string; }' has no call signatures.
~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(1,9): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(2,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(2,8): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(2,10): error TS1134: Variable declaration expected.
@ -10,7 +11,8 @@ tests/cases/conformance/es6/templates/templateStringInPropertyName1.ts(3,1): err
~
`a`: 321
~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(1,9): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(2,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(2,32): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(2,34): error TS1134: Variable declaration expected.
@ -10,7 +11,8 @@ tests/cases/conformance/es6/templates/templateStringInPropertyName2.ts(3,1): err
~
`abc${ 123 }def${ 456 }ghi`: 321
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
~~~~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(1,9): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(2,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(2,8): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(2,10): error TS1134: Variable declaration expected.
@ -10,7 +11,8 @@ tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_1.ts(3,1):
~
`a`: 321
~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,4 +1,5 @@
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(1,9): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(1,9): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(2,5): error TS1136: Property assignment expected.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(2,32): error TS1005: ',' expected.
tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(2,34): error TS1134: Variable declaration expected.
@ -10,7 +11,8 @@ tests/cases/conformance/es6/templates/templateStringInPropertyNameES6_2.ts(3,1):
~
`abc${ 123 }def${ 456 }ghi`: 321
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
~~~~~~
!!! error TS1136: Property assignment expected.
~

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInTaggedTemplate.ts(1,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInTaggedTemplate.ts(1,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/es6/templates/templateStringInTaggedTemplate.ts (1 errors) ====
`I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.

View file

@ -1,7 +1,9 @@
tests/cases/conformance/es6/templates/templateStringInTaggedTemplateES6.ts(1,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
tests/cases/conformance/es6/templates/templateStringInTaggedTemplateES6.ts(1,1): error TS2349: This expression is not callable.
Type 'String' has no call signatures.
==== tests/cases/conformance/es6/templates/templateStringInTaggedTemplateES6.ts (1 errors) ====
`I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'String' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'String' has no call signatures.

View file

@ -1,7 +1,9 @@
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(1,19): error TS2313: Type parameter 'T' has a circular constraint.
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(4,19): error TS2339: Property 'foo' does not exist on type 'T'.
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(5,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(7,17): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(5,17): error TS2351: This expression is not constructable.
Type '{}' has no construct signatures.
tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(7,17): error TS2349: This expression is not callable.
Type '{}' has no call signatures.
==== tests/cases/compiler/typeParameterWithInvalidConstraintType.ts (4 errors) ====
@ -15,10 +17,12 @@ tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(7,17): error TS23
!!! error TS2339: Property 'foo' does not exist on type 'T'.
var b = new x(123);
~~~~~~~~~~
!!! error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
!!! error TS2351: This expression is not constructable.
!!! error TS2351: Type '{}' has no construct signatures.
var c = x[1];
var d = x();
~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type '{}' has no call signatures.
}
}

View file

@ -3,7 +3,8 @@ tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(5,10): error TS2
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(8,10): error TS2347: Untyped function calls may not accept type arguments.
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(10,7): error TS2420: Class 'C' incorrectly implements interface 'Function'.
Type 'C' is missing the following properties from type 'Function': apply, call, bind
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(18,10): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'C' has no compatible call signatures.
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(18,10): error TS2349: This expression is not callable.
Type 'C' has no call signatures.
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(22,10): error TS2347: Untyped function calls may not accept type arguments.
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(28,12): error TS2558: Expected 0 type arguments, but got 1.
tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(35,4): error TS2558: Expected 0 type arguments, but got 1.
@ -39,7 +40,8 @@ tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(41,4): error TS2
var c2: C;
var r4 = c2<number>(); // should be an error
~~~~~~~~~~~~
!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'C' has no compatible call signatures.
!!! error TS2349: This expression is not callable.
!!! error TS2349: Type 'C' has no call signatures.
class C2 extends Function { } // error
var c3: C2;

View file

@ -33,6 +33,17 @@ var t5 = new new Date;
// Can be an expression
new String;
// Error on union
declare const union: { a: string } | { b: string }
new union;
// Error on union with one constructor
declare const ctorUnion: { a: string } | (new (a: string) => void)
new ctorUnion("");
// Error on union with incompatible constructors
declare const ctorUnion2: (new <T extends number>(a: T) => void) | (new <T>(a: string) => void)
new ctorUnion2("");
module M {
export class T {