MCPcopy Index your code
hub / github.com/nodejs/node / checkUnusedTypeParameters

Function checkUnusedTypeParameters

test/fixtures/snapshot/typescript.js:82046–82080  ·  view source on GitHub ↗
(node, addDiagnostic)

Source from the content-addressed store, hash-verified

82044 }
82045 }
82046 function checkUnusedTypeParameters(node, addDiagnostic) {
82047 // Only report errors on the last declaration for the type parameter container;
82048 // this ensures that all uses have been accounted for.
82049 var declarations = getSymbolOfNode(node).declarations;
82050 if (!declarations || ts.last(declarations) !== node)
82051 return;
82052 var typeParameters = ts.getEffectiveTypeParameterDeclarations(node);
82053 var seenParentsWithEveryUnused = new ts.Set();
82054 for (var _i = 0, typeParameters_3 = typeParameters; _i < typeParameters_3.length; _i++) {
82055 var typeParameter = typeParameters_3[_i];
82056 if (!isTypeParameterUnused(typeParameter))
82057 continue;
82058 var name = ts.idText(typeParameter.name);
82059 var parent = typeParameter.parent;
82060 if (parent.kind !== 190 /* SyntaxKind.InferType */ && parent.typeParameters.every(isTypeParameterUnused)) {
82061 if (ts.tryAddToSet(seenParentsWithEveryUnused, parent)) {
82062 var sourceFile = ts.getSourceFileOfNode(parent);
82063 var range = ts.isJSDocTemplateTag(parent)
82064 // Whole @template tag
82065 ? ts.rangeOfNode(parent)
82066 // Include the `<>` in the error message
82067 : ts.rangeOfTypeParameters(sourceFile, parent.typeParameters);
82068 var only = parent.typeParameters.length === 1;
82069 //TODO: following line is possible reason for bug #41974, unusedTypeParameters_TemplateTag
82070 var message = only ? ts.Diagnostics._0_is_declared_but_its_value_is_never_read : ts.Diagnostics.All_type_parameters_are_unused;
82071 var arg0 = only ? name : undefined;
82072 addDiagnostic(typeParameter, 1 /* UnusedKind.Parameter */, ts.createFileDiagnostic(sourceFile, range.pos, range.end - range.pos, message, arg0));
82073 }
82074 }
82075 else {
82076 //TODO: following line is possible reason for bug #41974, unusedTypeParameters_TemplateTag
82077 addDiagnostic(typeParameter, 1 /* UnusedKind.Parameter */, ts.createDiagnosticForNode(typeParameter, ts.Diagnostics._0_is_declared_but_its_value_is_never_read, name));
82078 }
82079 }
82080 }
82081 function isTypeParameterUnused(typeParameter) {
82082 return !(getMergedSymbol(typeParameter.symbol).isReferenced & 262144 /* SymbolFlags.TypeParameter */) && !isIdentifierThatStartsWithUnderscore(typeParameter.name);
82083 }

Callers 1

checkUnusedIdentifiersFunction · 0.85

Calls 4

getSymbolOfNodeFunction · 0.85
isTypeParameterUnusedFunction · 0.85
everyMethod · 0.80
lastMethod · 0.45

Tested by

no test coverage detected