feat(49385): forbid inlay hints for some kind of initialized declarations (#49412)

.
This commit is contained in:
Oleksandr T
2022-06-16 01:34:57 +03:00
committed by GitHub
parent 18ac37221b
commit 180bc4cbea
9 changed files with 73 additions and 78 deletions

View File

@@ -121,7 +121,7 @@ namespace ts.InlayHints {
}
function visitVariableLikeDeclaration(decl: VariableDeclaration | PropertyDeclaration) {
if (!decl.initializer || isBindingPattern(decl.name)) {
if (!decl.initializer || isBindingPattern(decl.name) || isVariableDeclaration(decl) && !isHintableDeclaration(decl)) {
return;
}
@@ -272,8 +272,11 @@ namespace ts.InlayHints {
for (let i = 0; i < node.parameters.length && i < signature.parameters.length; ++i) {
const param = node.parameters[i];
const effectiveTypeAnnotation = getEffectiveTypeAnnotationNode(param);
if (!isHintableDeclaration(param)) {
continue;
}
const effectiveTypeAnnotation = getEffectiveTypeAnnotationNode(param);
if (effectiveTypeAnnotation) {
continue;
}
@@ -323,5 +326,13 @@ namespace ts.InlayHints {
function isUndefined(name: __String) {
return name === "undefined";
}
function isHintableDeclaration(node: VariableDeclaration | ParameterDeclaration) {
if ((isParameterDeclaration(node) || isVariableDeclaration(node) && isVarConst(node)) && node.initializer) {
const initializer = skipParentheses(node.initializer);
return !(isHintableLiteral(initializer) || isNewExpression(initializer) || isObjectLiteralExpression(initializer) || isAssertionExpression(initializer));
}
return true;
}
}
}