(accessor)
| 88518 | return false; |
| 88519 | } |
| 88520 | function checkGrammarAccessor(accessor) { |
| 88521 | if (!(accessor.flags & 16777216 /* NodeFlags.Ambient */) && (accessor.parent.kind !== 182 /* SyntaxKind.TypeLiteral */) && (accessor.parent.kind !== 258 /* SyntaxKind.InterfaceDeclaration */)) { |
| 88522 | if (languageVersion < 1 /* ScriptTarget.ES5 */) { |
| 88523 | return grammarErrorOnNode(accessor.name, ts.Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher); |
| 88524 | } |
| 88525 | if (languageVersion < 2 /* ScriptTarget.ES2015 */ && ts.isPrivateIdentifier(accessor.name)) { |
| 88526 | return grammarErrorOnNode(accessor.name, ts.Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); |
| 88527 | } |
| 88528 | if (accessor.body === undefined && !ts.hasSyntacticModifier(accessor, 128 /* ModifierFlags.Abstract */)) { |
| 88529 | return grammarErrorAtPos(accessor, accessor.end - 1, ";".length, ts.Diagnostics._0_expected, "{"); |
| 88530 | } |
| 88531 | } |
| 88532 | if (accessor.body) { |
| 88533 | if (ts.hasSyntacticModifier(accessor, 128 /* ModifierFlags.Abstract */)) { |
| 88534 | return grammarErrorOnNode(accessor, ts.Diagnostics.An_abstract_accessor_cannot_have_an_implementation); |
| 88535 | } |
| 88536 | if (accessor.parent.kind === 182 /* SyntaxKind.TypeLiteral */ || accessor.parent.kind === 258 /* SyntaxKind.InterfaceDeclaration */) { |
| 88537 | return grammarErrorOnNode(accessor.body, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); |
| 88538 | } |
| 88539 | } |
| 88540 | if (accessor.typeParameters) { |
| 88541 | return grammarErrorOnNode(accessor.name, ts.Diagnostics.An_accessor_cannot_have_type_parameters); |
| 88542 | } |
| 88543 | if (!doesAccessorHaveCorrectParameterCount(accessor)) { |
| 88544 | return grammarErrorOnNode(accessor.name, accessor.kind === 172 /* SyntaxKind.GetAccessor */ ? |
| 88545 | ts.Diagnostics.A_get_accessor_cannot_have_parameters : |
| 88546 | ts.Diagnostics.A_set_accessor_must_have_exactly_one_parameter); |
| 88547 | } |
| 88548 | if (accessor.kind === 173 /* SyntaxKind.SetAccessor */) { |
| 88549 | if (accessor.type) { |
| 88550 | return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); |
| 88551 | } |
| 88552 | var parameter = ts.Debug.checkDefined(ts.getSetAccessorValueParameter(accessor), "Return value does not match parameter count assertion."); |
| 88553 | if (parameter.dotDotDotToken) { |
| 88554 | return grammarErrorOnNode(parameter.dotDotDotToken, ts.Diagnostics.A_set_accessor_cannot_have_rest_parameter); |
| 88555 | } |
| 88556 | if (parameter.questionToken) { |
| 88557 | return grammarErrorOnNode(parameter.questionToken, ts.Diagnostics.A_set_accessor_cannot_have_an_optional_parameter); |
| 88558 | } |
| 88559 | if (parameter.initializer) { |
| 88560 | return grammarErrorOnNode(accessor.name, ts.Diagnostics.A_set_accessor_parameter_cannot_have_an_initializer); |
| 88561 | } |
| 88562 | } |
| 88563 | return false; |
| 88564 | } |
| 88565 | /** Does the accessor have the right number of parameters? |
| 88566 | * A get accessor has no parameters or a single `this` parameter. |
| 88567 | * A set accessor has one parameter or a `this` parameter and one more parameter. |
no test coverage detected