All files / src/abap/5_syntax/statements message.ts

90.47% Statements 38/42
83.33% Branches 10/12
100% Functions 1/1
90.47% Lines 38/42

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 421x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 28x 28x 28x 28x 1x 28x     28x 28x 20x 19x 19x 20x 1x 1x 20x 28x 28x 2x 2x 28x     28x 26x 26x 28x 28x 1x
import * as Expressions from "../../2_statements/expressions";
import {StatementNode} from "../../nodes";
import {InlineData} from "../expressions/inline_data";
import {StringType} from "../../types/basic";
import {Source} from "../expressions/source";
import {Target} from "../expressions/target";
import {StatementSyntax} from "../_statement_syntax";
import {MessageSource} from "../expressions/message_source";
import {SyntaxInput} from "../_syntax_input";
 
export class Message implements StatementSyntax {
  public runSyntax(node: StatementNode, input: SyntaxInput): void {
    const found = node.findExpressionAfterToken("INTO");
    const inline = found?.findDirectExpression(Expressions.InlineData);
 
    if (inline) {
      InlineData.runSyntax(inline, input, StringType.get());
    } else if (found) {
      Target.runSyntax(found, input);
    }
 
    for (const mss of node.findDirectExpressions(Expressions.MessageSourceSource)) {
      for (const s of mss.findDirectExpressions(Expressions.Source)) {
        Source.runSyntax(s, input);
      }
      for (const s of mss.findDirectExpressions(Expressions.SimpleSource3)) {
        Source.runSyntax(s, input);
      }
    }
 
    for (const s of node.findDirectExpressions(Expressions.Source)) {
      Source.runSyntax(s, input);
    }
    for (const s of node.findDirectExpressions(Expressions.SimpleSource3)) {
      Source.runSyntax(s, input);
    }
    for (const s of node.findDirectExpressions(Expressions.MessageSource)) {
      MessageSource.runSyntax(s, input);
    }
 
  }
}