Skip to content

Commit 8995126

Browse files
committed
Update LKG
1 parent b127090 commit 8995126

7 files changed

+449
-243
lines changed

lib/enu/diagnosticMessages.generated.json.lcg

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,12 @@
735735
</Str>
736736
<Disp Icon="Str" />
737737
</Item>
738+
<Item ItemId=";All_variables_are_unused_6199" ItemType="0" PsrId="306" Leaf="true">
739+
<Str Cat="Text">
740+
<Val><![CDATA[All variables are unused.]]></Val>
741+
</Str>
742+
<Disp Icon="Str" />
743+
</Item>
738744
<Item ItemId=";Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011" ItemType="0" PsrId="306" Leaf="true">
739745
<Str Cat="Text">
740746
<Val><![CDATA[Allow default imports from modules with no default export. This does not affect code emit, just typechecking.]]></Val>
@@ -4305,6 +4311,12 @@
43054311
</Str>
43064312
<Disp Icon="Str" />
43074313
</Item>
4314+
<Item ItemId=";Remove_variable_statement_90010" ItemType="0" PsrId="306" Leaf="true">
4315+
<Str Cat="Text">
4316+
<Val><![CDATA[Remove variable statement]]></Val>
4317+
</Str>
4318+
<Disp Icon="Str" />
4319+
</Item>
43084320
<Item ItemId=";Replace_import_with_0_95015" ItemType="0" PsrId="306" Leaf="true">
43094321
<Str Cat="Text">
43104322
<Val><![CDATA[Replace import with '{0}'.]]></Val>

lib/tsc.js

Lines changed: 59 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4526,6 +4526,7 @@ var ts;
45264526
_0_is_declared_but_never_used: diag(6196, ts.DiagnosticCategory.Error, "_0_is_declared_but_never_used_6196", "'{0}' is declared but never used.", true),
45274527
Include_modules_imported_with_json_extension: diag(6197, ts.DiagnosticCategory.Message, "Include_modules_imported_with_json_extension_6197", "Include modules imported with '.json' extension"),
45284528
All_destructured_elements_are_unused: diag(6198, ts.DiagnosticCategory.Error, "All_destructured_elements_are_unused_6198", "All destructured elements are unused.", true),
4529+
All_variables_are_unused: diag(6199, ts.DiagnosticCategory.Error, "All_variables_are_unused_6199", "All variables are unused.", true),
45294530
Projects_to_reference: diag(6300, ts.DiagnosticCategory.Message, "Projects_to_reference_6300", "Projects to reference"),
45304531
Enable_project_compilation: diag(6302, ts.DiagnosticCategory.Message, "Enable_project_compilation_6302", "Enable project compilation"),
45314532
Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0: diag(6202, ts.DiagnosticCategory.Error, "Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202", "Project references may not form a circular graph. Cycle detected: {0}"),
@@ -4634,6 +4635,7 @@ var ts;
46344635
Implement_inherited_abstract_class: diag(90007, ts.DiagnosticCategory.Message, "Implement_inherited_abstract_class_90007", "Implement inherited abstract class"),
46354636
Add_0_to_unresolved_variable: diag(90008, ts.DiagnosticCategory.Message, "Add_0_to_unresolved_variable_90008", "Add '{0}.' to unresolved variable"),
46364637
Remove_destructuring: diag(90009, ts.DiagnosticCategory.Message, "Remove_destructuring_90009", "Remove destructuring"),
4638+
Remove_variable_statement: diag(90010, ts.DiagnosticCategory.Message, "Remove_variable_statement_90010", "Remove variable statement"),
46374639
Import_0_from_module_1: diag(90013, ts.DiagnosticCategory.Message, "Import_0_from_module_1_90013", "Import '{0}' from module \"{1}\""),
46384640
Change_0_to_1: diag(90014, ts.DiagnosticCategory.Message, "Change_0_to_1_90014", "Change '{0}' to '{1}'"),
46394641
Add_0_to_existing_import_declaration_from_1: diag(90015, ts.DiagnosticCategory.Message, "Add_0_to_existing_import_declaration_from_1_90015", "Add '{0}' to existing import declaration from \"{1}\""),
@@ -38935,13 +38937,6 @@ var ts;
3893538937
}
3893638938
function errorUnusedLocal(declaration, name, addDiagnostic) {
3893738939
var node = ts.getNameOfDeclaration(declaration) || declaration;
38938-
if (isIdentifierThatStartsWithUnderScore(node)) {
38939-
var declaration_2 = ts.getRootDeclaration(node.parent);
38940-
if ((declaration_2.kind === 231 && ts.isForInOrOfStatement(declaration_2.parent.parent)) ||
38941-
declaration_2.kind === 147) {
38942-
return;
38943-
}
38944-
}
3894538940
var message = isTypeDeclaration(declaration) ? ts.Diagnostics._0_is_declared_but_never_used : ts.Diagnostics._0_is_declared_but_its_value_is_never_read;
3894638941
addDiagnostic(0, ts.createDiagnosticForNodeSpan(ts.getSourceFileOfNode(declaration), declaration, node, message, name));
3894738942
}
@@ -39014,6 +39009,7 @@ var ts;
3901439009
return;
3901539010
var unusedImports = ts.createMap();
3901639011
var unusedDestructures = ts.createMap();
39012+
var unusedVariables = ts.createMap();
3901739013
nodeWithLocals.locals.forEach(function (local) {
3901839014
if (local.flags & 262144 ? !(local.flags & 3 && !(local.isReferenced & 3)) : local.isReferenced || local.exportSymbol) {
3901939015
return;
@@ -39031,6 +39027,11 @@ var ts;
3903139027
addToGroup(unusedDestructures, declaration.parent, declaration, getNodeId);
3903239028
}
3903339029
}
39030+
else if (ts.isVariableDeclaration(declaration)) {
39031+
if (!isIdentifierThatStartsWithUnderScore(declaration.name) || !ts.isForInOrOfStatement(declaration.parent.parent)) {
39032+
addToGroup(unusedVariables, declaration.parent, declaration, getNodeId);
39033+
}
39034+
}
3903439035
else {
3903539036
var parameter = local.valueDeclaration && tryGetRootParameterDeclaration(local.valueDeclaration);
3903639037
if (parameter) {
@@ -39048,47 +39049,74 @@ var ts;
3904839049
unusedImports.forEach(function (_a) {
3904939050
var importClause = _a[0], unuseds = _a[1];
3905039051
var importDecl = importClause.parent;
39051-
if (forEachImportedDeclaration(importClause, function (d) { return !ts.contains(unuseds, d); })) {
39052+
var nDeclarations = (importClause.name ? 1 : 0) +
39053+
(importClause.namedBindings ?
39054+
(importClause.namedBindings.kind === 245 ? 1 : importClause.namedBindings.elements.length)
39055+
: 0);
39056+
if (nDeclarations === unuseds.length) {
39057+
addDiagnostic(0, unuseds.length === 1
39058+
? ts.createDiagnosticForNode(importDecl, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.first(unuseds).name))
39059+
: ts.createDiagnosticForNode(importDecl, ts.Diagnostics.All_imports_in_import_declaration_are_unused));
39060+
}
39061+
else {
3905239062
for (var _i = 0, unuseds_1 = unuseds; _i < unuseds_1.length; _i++) {
3905339063
var unused = unuseds_1[_i];
3905439064
errorUnusedLocal(unused, ts.idText(unused.name), addDiagnostic);
3905539065
}
3905639066
}
39057-
else if (unuseds.length === 1) {
39058-
addDiagnostic(0, ts.createDiagnosticForNode(importDecl, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.first(unuseds).name)));
39059-
}
39060-
else {
39061-
addDiagnostic(0, ts.createDiagnosticForNode(importDecl, ts.Diagnostics.All_imports_in_import_declaration_are_unused));
39062-
}
3906339067
});
3906439068
unusedDestructures.forEach(function (_a) {
3906539069
var bindingPattern = _a[0], bindingElements = _a[1];
3906639070
var kind = tryGetRootParameterDeclaration(bindingPattern.parent) ? 1 : 0;
39067-
if (!bindingPattern.elements.every(function (e) { return ts.contains(bindingElements, e); })) {
39071+
if (bindingPattern.elements.length === bindingElements.length) {
39072+
if (bindingElements.length === 1 && bindingPattern.parent.kind === 231 && bindingPattern.parent.parent.kind === 232) {
39073+
addToGroup(unusedVariables, bindingPattern.parent.parent, bindingPattern.parent, getNodeId);
39074+
}
39075+
else {
39076+
addDiagnostic(kind, bindingElements.length === 1
39077+
? ts.createDiagnosticForNode(bindingPattern, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.cast(ts.first(bindingElements).name, ts.isIdentifier)))
39078+
: ts.createDiagnosticForNode(bindingPattern, ts.Diagnostics.All_destructured_elements_are_unused));
39079+
}
39080+
}
39081+
else {
3906839082
for (var _i = 0, bindingElements_1 = bindingElements; _i < bindingElements_1.length; _i++) {
3906939083
var e = bindingElements_1[_i];
3907039084
addDiagnostic(kind, ts.createDiagnosticForNode(e, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.cast(e.name, ts.isIdentifier))));
3907139085
}
3907239086
}
39073-
else if (bindingElements.length === 1) {
39074-
addDiagnostic(kind, ts.createDiagnosticForNode(bindingPattern, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.cast(ts.first(bindingElements).name, ts.isIdentifier))));
39087+
});
39088+
unusedVariables.forEach(function (_a) {
39089+
var declarationList = _a[0], declarations = _a[1];
39090+
if (declarationList.declarations.length === declarations.length) {
39091+
addDiagnostic(0, declarations.length === 1
39092+
? ts.createDiagnosticForNode(ts.first(declarations).name, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, bindingNameText(ts.first(declarations).name))
39093+
: ts.createDiagnosticForNode(declarationList.parent.kind === 213 ? declarationList.parent : declarationList, ts.Diagnostics.All_variables_are_unused));
3907539094
}
3907639095
else {
39077-
addDiagnostic(kind, ts.createDiagnosticForNode(bindingPattern, ts.Diagnostics.All_destructured_elements_are_unused));
39096+
for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) {
39097+
var decl = declarations_5[_i];
39098+
addDiagnostic(0, ts.createDiagnosticForNode(decl, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, ts.idText(ts.cast(decl.name, ts.isIdentifier))));
39099+
}
3907839100
}
3907939101
});
3908039102
}
39103+
function bindingNameText(name) {
39104+
switch (name.kind) {
39105+
case 71:
39106+
return ts.idText(name);
39107+
case 180:
39108+
case 179:
39109+
return bindingNameText(ts.cast(ts.first(name.elements), ts.isBindingElement).name);
39110+
default:
39111+
return ts.Debug.assertNever(name);
39112+
}
39113+
}
3908139114
function isImportedDeclaration(node) {
3908239115
return node.kind === 244 || node.kind === 247 || node.kind === 245;
3908339116
}
3908439117
function importClauseFromImported(decl) {
3908539118
return decl.kind === 244 ? decl : decl.kind === 245 ? decl.parent : decl.parent.parent;
3908639119
}
39087-
function forEachImportedDeclaration(importClause, cb) {
39088-
var defaultName = importClause.name, namedBindings = importClause.namedBindings;
39089-
return (defaultName && cb(importClause)) ||
39090-
namedBindings && (namedBindings.kind === 245 ? cb(namedBindings) : ts.forEach(namedBindings.elements, cb));
39091-
}
3909239120
function checkBlock(node) {
3909339121
if (node.kind === 212) {
3909439122
checkGrammarStatementInAmbientContext(node);
@@ -39983,8 +40011,8 @@ var ts;
3998340011
var type = getDeclaredTypeOfSymbol(symbol);
3998440012
if (!areTypeParametersIdentical(declarations, type.localTypeParameters)) {
3998540013
var name = symbolToString(symbol);
39986-
for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) {
39987-
var declaration = declarations_5[_i];
40014+
for (var _i = 0, declarations_6 = declarations; _i < declarations_6.length; _i++) {
40015+
var declaration = declarations_6[_i];
3998840016
error(declaration.name, ts.Diagnostics.All_declarations_of_0_must_have_identical_type_parameters, name);
3998940017
}
3999040018
}
@@ -39993,8 +40021,8 @@ var ts;
3999340021
function areTypeParametersIdentical(declarations, targetParameters) {
3999440022
var maxTypeArgumentCount = ts.length(targetParameters);
3999540023
var minTypeArgumentCount = getMinTypeArgumentCount(targetParameters);
39996-
for (var _i = 0, declarations_6 = declarations; _i < declarations_6.length; _i++) {
39997-
var declaration = declarations_6[_i];
40024+
for (var _i = 0, declarations_7 = declarations; _i < declarations_7.length; _i++) {
40025+
var declaration = declarations_7[_i];
3999840026
var sourceParameters = ts.getEffectiveTypeParameterDeclarations(declaration);
3999940027
var numTypeParameters = sourceParameters.length;
4000040028
if (numTypeParameters < minTypeArgumentCount || numTypeParameters > maxTypeArgumentCount) {
@@ -40527,8 +40555,8 @@ var ts;
4052740555
}
4052840556
function getFirstNonAmbientClassOrFunctionDeclaration(symbol) {
4052940557
var declarations = symbol.declarations;
40530-
for (var _i = 0, declarations_7 = declarations; _i < declarations_7.length; _i++) {
40531-
var declaration = declarations_7[_i];
40558+
for (var _i = 0, declarations_8 = declarations; _i < declarations_8.length; _i++) {
40559+
var declaration = declarations_8[_i];
4053240560
if ((declaration.kind === 234 ||
4053340561
(declaration.kind === 233 && ts.nodeIsPresent(declaration.body))) &&
4053440562
!(declaration.flags & 4194304)) {
@@ -40917,8 +40945,8 @@ var ts;
4091740945
return;
4091840946
}
4091940947
if (exportedDeclarationsCount > 1) {
40920-
for (var _i = 0, declarations_8 = declarations; _i < declarations_8.length; _i++) {
40921-
var declaration = declarations_8[_i];
40948+
for (var _i = 0, declarations_9 = declarations; _i < declarations_9.length; _i++) {
40949+
var declaration = declarations_9[_i];
4092240950
if (isNotOverload(declaration)) {
4092340951
diagnostics.add(ts.createDiagnosticForNode(declaration, ts.Diagnostics.Cannot_redeclare_exported_variable_0, ts.unescapeLeadingUnderscores(id)));
4092440952
}

0 commit comments

Comments
 (0)