Add related span pointing to this-shadowing location for implicitly-any this (#28299)

* Add diagnostic pointing to this-shadowing location

* Fix almost-top-level-this case

* Change message on span
This commit is contained in:
Wesley Wigham
2018-11-06 11:27:07 -08:00
committed by GitHub
parent 772f6cdf48
commit cc36e294cc
8 changed files with 106 additions and 1 deletions

View File

@@ -16296,11 +16296,17 @@ namespace ts {
const type = tryGetThisTypeAt(node, container);
if (!type && noImplicitThis) {
// With noImplicitThis, functions may not reference 'this' if it has type 'any'
error(
const diag = error(
node,
capturedByArrowFunction && container.kind === SyntaxKind.SourceFile ?
Diagnostics.The_containing_arrow_function_captures_the_global_value_of_this_which_implicitly_has_type_any :
Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation);
if (!isSourceFile(container)) {
const outsideThis = tryGetThisTypeAt(container);
if (outsideThis) {
addRelatedInfo(diag, createDiagnosticForNode(container, Diagnostics.An_outer_value_of_this_is_shadowed_by_this_container));
}
}
}
return type || anyType;
}

View File

@@ -2509,6 +2509,10 @@
"category": "Error",
"code": 2737
},
"An outer value of 'this' is shadowed by this container.": {
"category": "Message",
"code": 2738
},
"Import declaration '{0}' is using private name '{1}'.": {
"category": "Error",