All files / src/abap/2_statements/statements class_definition.ts

100% Statements 35/35
100% Branches 1/1
100% Functions 1/1
100% Lines 35/35

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 351x 1x 1x 1x 1x 1x 1x 1x 1x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1436x 1x 1x
import {IStatement} from "./_statement";
import {seq, opt, alt, per, ver} from "../combi";
import {ClassName, SuperClassName, ClassGlobal, ClassFinal, SimpleName, ClassFriends} from "../expressions";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class ClassDefinition implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const create = seq("CREATE", alt("PUBLIC", "PROTECTED", "PRIVATE"));
 
    const level = alt("CRITICAL", "HARMLESS", "DANGEROUS");
    const risk = seq("RISK LEVEL", level);
 
    const time = alt("LONG", "MEDIUM", "SHORT");
    const duration = seq("DURATION", time);
 
    const blah = per(ClassGlobal,
                     ClassFinal,
                     "ABSTRACT",
                     seq("INHERITING FROM", SuperClassName),
                     create,
                     "FOR TESTING",
                     risk,
                     "SHARED MEMORY ENABLED",
                     duration,
                     ver(Version.v754, seq("FOR BEHAVIOR OF", SimpleName)),
                     ClassFriends);
 
    const def = seq("DEFINITION", opt(blah));
 
    return seq("CLASS", ClassName, def);
  }
 
}