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

100% Statements 13/13
100% Branches 4/4
100% Functions 1/1
100% Lines 13/13

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     14x 14x 6x     8x   8x 8x 2x           2x   6x        
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)));
    }
  }
}