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

88% Statements 44/50
35.71% Branches 5/14
100% Functions 1/1
88% Lines 44/50

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 501x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 7x 7x 3x 3x 3x 2x 2x 2x 2x     2x 3x 3x 3x 2x 2x 2x 2x     2x 3x 3x 3x 1x 1x 1x 1x     1x 3x 3x 1x
import * as Expressions from "../../2_statements/expressions";
import {StatementNode} from "../../nodes";
import {InlineData} from "../expressions/inline_data";
import {TimeType, DateType, PackedType} from "../../types/basic";
import {Source} from "../expressions/source";
import {Target} from "../expressions/target";
import {StatementSyntax} from "../_statement_syntax";
import {SyntaxInput} from "../_syntax_input";
 
export class Convert implements StatementSyntax {
  public runSyntax(node: StatementNode, input: SyntaxInput): void {
 
// todo, the source must be of a specific type
 
    for (const s of node.findDirectExpressions(Expressions.Source)) {
      Source.runSyntax(s, input);
    }
 
    const timeTarget = node.findExpressionAfterToken("TIME");
    if (timeTarget?.get() instanceof Expressions.Target) {
      const inline = timeTarget?.findDirectExpression(Expressions.InlineData);
      if (inline) {
        InlineData.runSyntax(inline, input, new TimeType());
      } else {
        Target.runSyntax(timeTarget, input);
      }
    }
 
    const dateTarget = node.findExpressionAfterToken("DATE");
    if (dateTarget?.get() instanceof Expressions.Target) {
      const inline = dateTarget?.findDirectExpression(Expressions.InlineData);
      if (inline) {
        InlineData.runSyntax(inline, input, new DateType());
      } else {
        Target.runSyntax(dateTarget, input);
      }
    }
 
    const stampTarget = node.findExpressionAfterToken("STAMP");
    if (stampTarget?.get() instanceof Expressions.Target) {
      const inline = stampTarget?.findDirectExpression(Expressions.InlineData);
      if (inline) {
        InlineData.runSyntax(inline, input, new PackedType(8, 4));
      } else {
        Target.runSyntax(stampTarget, input);
      }
    }
 
  }
}