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

Function checkAccessorDeclarationDiagnostics

test/fixtures/snapshot/typescript.js:80580–80629  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

80578 checkSourceElement(node.body);
80579 setNodeLinksForPrivateIdentifierScope(node);
80580 function checkAccessorDeclarationDiagnostics() {
80581 // Grammar checking accessors
80582 if (!checkGrammarFunctionLikeDeclaration(node) && !checkGrammarAccessor(node))
80583 checkGrammarComputedPropertyName(node.name);
80584 checkDecorators(node);
80585 checkSignatureDeclaration(node);
80586 if (node.kind === 172 /* SyntaxKind.GetAccessor */) {
80587 if (!(node.flags & 16777216 /* NodeFlags.Ambient */) && ts.nodeIsPresent(node.body) && (node.flags & 256 /* NodeFlags.HasImplicitReturn */)) {
80588 if (!(node.flags & 512 /* NodeFlags.HasExplicitReturn */)) {
80589 error(node.name, ts.Diagnostics.A_get_accessor_must_return_a_value);
80590 }
80591 }
80592 }
80593 // Do not use hasDynamicName here, because that returns false for well known symbols.
80594 // We want to perform checkComputedPropertyName for all computed properties, including
80595 // well known symbols.
80596 if (node.name.kind === 162 /* SyntaxKind.ComputedPropertyName */) {
80597 checkComputedPropertyName(node.name);
80598 }
80599 if (hasBindableName(node)) {
80600 // TypeScript 1.0 spec (April 2014): 8.4.3
80601 // Accessors for the same member name must specify the same accessibility.
80602 var symbol = getSymbolOfNode(node);
80603 var getter = ts.getDeclarationOfKind(symbol, 172 /* SyntaxKind.GetAccessor */);
80604 var setter = ts.getDeclarationOfKind(symbol, 173 /* SyntaxKind.SetAccessor */);
80605 if (getter && setter && !(getNodeCheckFlags(getter) & 1 /* NodeCheckFlags.TypeChecked */)) {
80606 getNodeLinks(getter).flags |= 1 /* NodeCheckFlags.TypeChecked */;
80607 var getterFlags = ts.getEffectiveModifierFlags(getter);
80608 var setterFlags = ts.getEffectiveModifierFlags(setter);
80609 if ((getterFlags & 128 /* ModifierFlags.Abstract */) !== (setterFlags & 128 /* ModifierFlags.Abstract */)) {
80610 error(getter.name, ts.Diagnostics.Accessors_must_both_be_abstract_or_non_abstract);
80611 error(setter.name, ts.Diagnostics.Accessors_must_both_be_abstract_or_non_abstract);
80612 }
80613 if (((getterFlags & 16 /* ModifierFlags.Protected */) && !(setterFlags & (16 /* ModifierFlags.Protected */ | 8 /* ModifierFlags.Private */))) ||
80614 ((getterFlags & 8 /* ModifierFlags.Private */) && !(setterFlags & 8 /* ModifierFlags.Private */))) {
80615 error(getter.name, ts.Diagnostics.A_get_accessor_must_be_at_least_as_accessible_as_the_setter);
80616 error(setter.name, ts.Diagnostics.A_get_accessor_must_be_at_least_as_accessible_as_the_setter);
80617 }
80618 var getterType = getAnnotatedAccessorType(getter);
80619 var setterType = getAnnotatedAccessorType(setter);
80620 if (getterType && setterType) {
80621 checkTypeAssignableTo(getterType, setterType, getter, ts.Diagnostics.The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type);
80622 }
80623 }
80624 }
80625 var returnType = getTypeOfAccessors(getSymbolOfNode(node));
80626 if (node.kind === 172 /* SyntaxKind.GetAccessor */) {
80627 checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnType);
80628 }
80629 }
80630 }
80631 function checkMissingDeclaration(node) {
80632 checkDecorators(node);

Callers

nothing calls this directly

Calls 15

checkGrammarAccessorFunction · 0.85
checkDecoratorsFunction · 0.85
hasBindableNameFunction · 0.85
getSymbolOfNodeFunction · 0.85
getNodeCheckFlagsFunction · 0.85
getNodeLinksFunction · 0.85
getAnnotatedAccessorTypeFunction · 0.85
checkTypeAssignableToFunction · 0.85

Tested by

no test coverage detected