All files / src/abap/2_statements/expressions method_source.ts

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

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 181x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x
import {seq, alt, tok, Expression, starPrio} from "../combi";
import {InstanceArrow, StaticArrow} from "../../1_lexer/tokens";
import {ClassName, MethodName, Dynamic, FieldChain, MethodCallChain} from ".";
import {IStatementRunnable} from "../statement_runnable";
 
export class MethodSource extends Expression {
  public getRunnable(): IStatementRunnable {
    const mname = alt(MethodName, Dynamic);
    const cname = alt(FieldChain, MethodCallChain, Dynamic);
 
    // this is a bit tricky, this part is required as FieldChain takes a AttributeName
    const stati = seq(ClassName, tok(StaticArrow), mname);
 
    const part1 = seq(cname, alt(tok(InstanceArrow), tok(StaticArrow)));
 
    return alt(stati, seq(starPrio(part1), mname));
  }
}