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

100% Statements 31/31
100% Branches 5/5
100% Functions 1/1
100% Lines 31/31

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 321x 1x 1x 1x 1x 1x 1x 1x 1x 14x 14x 14x 6x 6x 8x 8x 8x 8x 14x 2x 2x 2x 2x 2x 2x 2x 14x 6x 6x 14x 1x  
import * as Expressions from "../../2_statements/expressions";
import {StatementNode} from "../../nodes";
import {CurrentScope} from "../_current_scope";
import {TypedIdentifier} from "../../types/_typed_identifier";
import {CharacterType, StructureType} from "../../types/basic";
import {StatementSyntax} from "../_statement_syntax";
 
export class SelectionScreen implements StatementSyntax {
  public runSyntax(node: StatementNode, scope: CurrentScope, filename: string) {
 
    const field = node.findFirstExpression(Expressions.InlineField);
    if (field === undefined) {
      return;
    }
 
    const name = field.getFirstToken();
 
    const concat = node.concatTokens().toUpperCase();
    if (concat.includes("BEGIN OF TABBED BLOCK")) {
      const type = new StructureType([
        {name: "PROG", type: new CharacterType(40)},
        {name: "DYNNR", type: new CharacterType(4)},
        {name: "ACTIVETAB", type: new CharacterType(132)},
      ]);
 
      scope.addIdentifier(new TypedIdentifier(name, filename, type));
    } else {
      scope.addIdentifier(new TypedIdentifier(name, filename, new CharacterType(83)));
    }
  }
}