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

92.15% Statements 47/51
90.9% Branches 20/22
100% Functions 1/1
92.15% Lines 47/51

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 48 49 50 51 521x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 43x 43x 43x 43x 1x 1x 1x 42x 42x 43x 43x 43x 1x 43x     42x 43x 34x 33x 33x 34x 1x 1x 34x 42x 43x 16x 16x 43x     43x 26x 26x 42x 42x 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, syntaxIssue} from "../_syntax_input";
import {ObjectOriented} from "../_object_oriented";
 
export class Message implements StatementSyntax {
  public runSyntax(node: StatementNode, input: SyntaxInput): void {
 
    const exceptionName = node.findDirectExpression(Expressions.ExceptionName);
    const classicMessage = exceptionName ? new ObjectOriented(input.scope).checkClassicException() : undefined;
    if (exceptionName && classicMessage) {
      input.issues.push(syntaxIssue(input, exceptionName.getFirstToken(), classicMessage));
      return;
    }
 
    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);
    }
 
  }
}