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

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

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 421x 1x 1x 1x 1x 1x 1x 1x 1x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 66x 1x 1x
import {IStatement} from "./_statement";
import {seq, alt, opt, ver, optPrio, altPrio} from "../combi";
import {Version} from "../../../version";
import {Source, Field, ParameterListS, ClassName, MessageSource, SimpleSource2} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
 
export class Raise implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const wit = seq("WITH",
                    Source,
                    opt(Source),
                    opt(Source),
                    opt(Source));
 
    const mess = seq("MESSAGE",
                     MessageSource,
                     opt(wit));
 
    const messid = seq("MESSAGE ID",
                       Source,
                       "NUMBER",
                       Source,
                       optPrio(wit));
 
    const exporting = seq("EXPORTING", ParameterListS);
 
    const from = seq("TYPE",
                     ClassName,
                     opt(alt(ver(Version.v750, alt(mess, messid)), ver(Version.v752, "USING MESSAGE"))),
                     optPrio(exporting));
 
    const clas = seq(optPrio("RESUMABLE"),
                     "EXCEPTION",
                     altPrio(from, ver(Version.v752, Source), SimpleSource2));
 
    const ret = seq("RAISE", altPrio(clas, Field));
 
    return ret;
  }
 
}