-
Notifications
You must be signed in to change notification settings - Fork 13.1k
Description
We now support related information for diagnostic messages. This issue now tracks, in aggregate, which diagnostics we have extra information for. The following errors are candidates:
MVP
-
_____ used before its declaration. -
Property '{0}' is used before being assigned. -
Cannot redeclare block-scoped variable '{0}'. -
Type '{0}' is not assignable to type '{1}'. -
Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated. -
Expected {0} arguments, ___________
Others
-
Cannot find name '{0}'. Did you mean ______ -
Duplicate declaration '{0}'. -
_____ has or is using private name '{1}' -
Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'. -
'{0}' are specified twice. The attribute named '{0}' will be overwritten. -
'get' and 'set' accessor must have the same type. -
Accessors must both be abstract or non-abstract. -
Overload signatures must all be ______ -
Overload signature is not compatible with function implementation. -
Individual declarations in merged declaration '{0}' must be all exported or all local. -
Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'. -
Subtyping
-
Class '{0}' incorrectly extends base class '{1}'. -
Class static side '{0}' incorrectly extends base class static side '{1}'. -
Class '{0}' incorrectly implements interface '{1}'. -
Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor. -
Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property. -
Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function. -
Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function. -
Interface '{0}' incorrectly extends interface '{1}'. -
Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'. -
Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'.
-
-
All declarations of '{0}' must have identical type parameters. -
In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element. -
Namespace merging
-
A namespace declaration cannot be in a different file from a class or function with which it is merged. -
A namespace declaration cannot be located prior to a class or function with which it is merged.
-
-
Module '{0}' is hidden by a local declaration with the same name.- should probably be changed to "namespace"
-
Types have separate declarations of a private property '{0}'. -
Property '{0}' is protected but type '{1}' is not a class derived from '{2}'. -
Property '{0}' is protected in type '{1}' but public in type '{2}'. -
An AMD module cannot have multiple name assignments. -
Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}' -
Export declaration conflicts with exported declaration of '{0}'. -
Cannot redeclare identifier '{0}' in catch clause. -
Module '{0}' uses 'export =' and cannot be used with 'export *'. -
Base constructors must all have the same return type. -
Overload signatures must all be abstract or non-abstract. -
A module cannot have multiple default exports. -
Type '{0}' has no properties in common with type '{1}'. -
Base class expressions cannot reference class type parameters. -
A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums. -
'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead. -
All declarations of '{0}' must have identical modifiers.
Bonus? -
A computed property name cannot reference a type parameter from its containing type. -
Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'.
Original Post:
Often a diagnostic message can have additional location information. it is specially helpful in IDE's where clicking on the location can take you there. For instance
- duplicate declaration errors, can have the other locations where the name was re-declared
- type
xnot assignable to typey, a reference to where the target symbol's type is defined - implicit any errors, have a reference to the declaration of the container type
- parameter type/number mismatch, have a reference tot he function declaration
VSCode is adding support for exposing a list of related diagnostics in microsoft/vscode#1927.
We can also expose this in
--pretty.