MCPcopy Create free account
hub / github.com/nodejs/node / checkGrammarAccessor

Function checkGrammarAccessor

test/fixtures/snapshot/typescript.js:88520–88564  ·  view source on GitHub ↗
(accessor)

Source from the content-addressed store, hash-verified

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.

Callers 1

Calls 3

grammarErrorOnNodeFunction · 0.85
grammarErrorAtPosFunction · 0.85

Tested by

no test coverage detected