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

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

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 361x 1x 1x 1x 1x 1x 1x 1x 1x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 108x 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 clas = seq(optPrio("RESUMABLE"),
                     "EXCEPTION",
                     altPrio(from, ver(Version.v752, Source), SimpleSource2));
 
    const ret = seq("RAISE", altPrio(clas, ExceptionName));
 
    return ret;
  }
 
}