generatePostCode method

void generatePostCode(
  1. MatcherGenerator<Matcher<Expression>> generator,
  2. CodeBlock block,
  3. void success(
    1. CodeBlock block
    )?,
  4. void fail(
    1. CodeBlock block
    )?,
)

Implementation

void generatePostCode(
    MatcherGenerator generator,
    CodeBlock block,
    void Function(CodeBlock block)? success,
    void Function(CodeBlock block)? fail) {
  final successBlock = generator.success;
  final failBlock = generator.fail;
  if (successBlock != null && success != null) {
    success(successBlock);
    success = null;
  }

  if (failBlock != null && fail != null) {
    fail(failBlock);
    fail = null;
  }

  if (success != null || fail != null) {
    final ifElse = IfElseGenerator(ref(Members.ok));
    if (success != null) {
      ifElse.ifCode(success);
    }

    if (fail != null) {
      ifElse.elseCode(fail);
    }

    block.addLazyCode(() => ifElse.generate().code);
  }
}