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

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

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 42 431x 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 3x 3x 3x 3x 3x 3x 1x 1x
import {IStatement} from "./_statement";
import {seq, opt, alt, per, optPrio, altPrio, verLang, verNotLang} from "../combi";
import {Target, Source, ExceptionName, MessageSource, MessageSourceSource} from "../expressions";
import {IStatementRunnable} from "../statement_runnable";
import {LanguageVersion} from "../../../version";
 
export class Message implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const like = seq("DISPLAY LIKE", Source);
    const into = seq("INTO", Target);
    // RAISING addition blocked in KeyUser
    const raising = verNotLang(LanguageVersion.KeyUser, seq("RAISING", ExceptionName));
 
    const options = per(like, into, raising);
 
    const type = seq("TYPE", Source);
 
    const sou = altPrio(options, MessageSourceSource);
    const sourc = alt(sou,
                      seq(MessageSourceSource, sou),
                      seq(MessageSourceSource, MessageSourceSource, sou),
                      seq(MessageSourceSource, MessageSourceSource, MessageSourceSource, options));
 
    const mwith = seq("WITH", MessageSourceSource, opt(sourc));
 
    const foo = seq(MessageSource, opt(options), opt(mwith));
    const text = seq(MessageSourceSource, type, optPrio(like), optPrio(raising));
 
    const cloud1 = seq(opt(seq("WITH", Source, opt(Source), opt(Source), opt(Source))), altPrio(into, raising));
    const cloud2 = seq(altPrio(into, raising), opt(seq("WITH", Source, opt(Source), opt(Source), opt(Source))));
    const cloud = seq(MessageSource, alt(cloud1, cloud2));
 
    const ret = seq("MESSAGE", altPrio(
      verNotLang(LanguageVersion.Cloud, foo),
      verNotLang(LanguageVersion.Cloud, text),
      verLang(LanguageVersion.Cloud, cloud),
    ));
 
    return ret;
  }
 
}