All files / src/abap/types event_definition.ts

87.5% Statements 42/48
66.66% Branches 4/6
75% Functions 3/4
87.5% Lines 42/48

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 481x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 12x     12x 12x     12x 12x 12x 12x 12x 12x 12x 1x 1x 17x 17x 1x 1x     1x 1x 1x 1x 12x 7x 7x 12x 1x 1x
import {Identifier} from "../4_file_information/_identifier";
import {IEventDefinition} from "./_event_definition";
import * as Expressions from "../2_statements/expressions";
import {Visibility} from "../4_file_information/visibility";
import {StatementNode} from "../nodes/statement_node";
import {Events} from "../2_statements/statements/events";
import {TypedIdentifier} from "./_typed_identifier";
import {MethodParam as MethodParamExpression} from "../2_statements/expressions";
import {MethodParam} from "../5_syntax/expressions/method_param";
import {SyntaxInput} from "../5_syntax/_syntax_input";
 
export class EventDefinition extends Identifier implements IEventDefinition {
  private readonly parameters: TypedIdentifier[];
  private readonly is_static: boolean;
 
  public constructor(node: StatementNode, _visibility: Visibility, input: SyntaxInput) {
    if (!(node.get() instanceof Events)) {
      throw new Error("MethodDefinition, expected MethodDef as part of input node");
    }
    const found = node.findFirstExpression(Expressions.EventName);
    if (found === undefined) {
      throw new Error("MethodDefinition, expected MethodDef as part of input node");
    }
    super(found.getFirstToken(), input.filename);
 
    this.parameters = [];
    this.parse(node, input);
 
    this.is_static = node.getFirstToken().getStr().toUpperCase() === "CLASS";
  }
 
  public getParameters(): readonly TypedIdentifier[] {
    return this.parameters;
  }
 
  public isStatic(): boolean {
    return this.is_static;
  }
 
///////////////
 
  private parse(node: StatementNode, input: SyntaxInput) {
    for (const e of node.findAllExpressions(MethodParamExpression)) {
      this.parameters.push(MethodParam.runSyntax(e, input, []));
    }
  }
 
}