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

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

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 371x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x
import {IStatement} from "./_statement";
import {seq, alt, opt, ver, optPrio, altPrio} from "../combi";
import {Version} from "../../../version";
import {Source, ParameterListS, ClassName, MessageSource, SimpleSource2, RaiseWith, MessageNumber, ExceptionName} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
 
export class Raise implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const mess = seq("MESSAGE",
                     MessageSource,
                     opt(RaiseWith));
 
    const messid = seq("MESSAGE ID",
                       Source,
                       "NUMBER",
                       altPrio(MessageNumber, Source),
                       optPrio(RaiseWith));
 
    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 pre = altPrio(seq(optPrio("RESUMABLE"), "EXCEPTION"), "SHORTDUMP");
 
    const clas = seq(pre,
                     altPrio(from, ver(Version.v752, Source), SimpleSource2));
 
    const ret = seq("RAISE", altPrio(clas, ExceptionName));
 
    return ret;
  }
 
}