fix(48031): show circularity error for self referential get accessor annotations (#48050)

This commit is contained in:
Oleksandr T
2022-03-26 00:36:22 +02:00
committed by GitHub
parent e7426251b0
commit f4d76e5b93
10 changed files with 92 additions and 5 deletions

View File

@@ -9628,13 +9628,17 @@ namespace ts {
}
let type = resolveTypeOfAccessors(symbol, writing);
if (!popTypeResolution()) {
type = anyType;
if (noImplicitAny) {
const getter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.GetAccessor);
error(getter, Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol));
const getter = getDeclarationOfKind<AccessorDeclaration>(symbol, SyntaxKind.GetAccessor);
if (getter) {
if (getEffectiveTypeAnnotationNode(getter)) {
error(getter.name, Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation, symbolToString(symbol));
}
else if (noImplicitAny) {
error(getter, Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, symbolToString(symbol));
}
}
type = anyType;
}
return type;
}