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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {CDSAggregate, CDSArithParen, CDSArithmetics, CDSCast, CDSCondition, CDSFunction, CDSInteger, CDSPrefixedName, CDSString} from ".";
import {altPrio, Expression, optPrio, plusPrio, seq} from "../../abap/2_statements/combi";
import {IStatementRunnable} from "../../abap/2_statements/statement_runnable";
export class CDSCase extends Expression {
public getRunnable(): IStatementRunnable {
// CDSArithmetics first: handles cast()*n, sum()*n, field+n, etc. before standalone alternatives
const value = altPrio(CDSString, CDSCase, CDSArithmetics, CDSCast,
CDSAggregate, CDSArithParen, CDSFunction, CDSInteger, CDSPrefixedName);
const simple = seq(altPrio(CDSArithmetics, CDSArithParen, CDSFunction, CDSPrefixedName), plusPrio(seq("WHEN", value, "THEN", value)));
const complex = plusPrio(seq("WHEN", CDSCondition, "THEN", value));
return seq("CASE", altPrio(complex, simple), optPrio(seq("ELSE", value)), "END");
}
} |