()
| 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); |
nothing calls this directly
no test coverage detected