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 * [x] `_____ used before its declaration.` * [x] `Property '{0}' is used before being assigned.` * [x] `Cannot redeclare block-scoped variable '{0}'.` * [x] `Type '{0}' is not assignable to type '{1}'.` * [x] `Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.` * [x] `Expected {0} arguments, ___________` Others * [x] `Cannot find name '{0}'. Did you mean ______` * [x] `Duplicate declaration '{0}'.` * [ ] `_____ has or is using private name '{1}'` * [x] `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 ______` * [x] `Overload signature is not compatible with function implementation.` * [ ] `Individual declarations in merged declaration '{0}' must be all exported or all local.` * [x] `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 `x` not assignable to type `y`, 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 https://github.com/Microsoft/vscode/issues/1927. > We can also expose this in `--pretty`.