final List<ReactorStmtCtx<?, ?, ?>> addEffectiveSubstatement(final List<ReactorStmtCtx<?, ?, ?>> effective,
final Mutable<?, ?, ?> substatement) {
- verifyStatement(substatement);
-
+ final ReactorStmtCtx<?, ?, ?> stmt = verifyStatement(substatement);
final List<ReactorStmtCtx<?, ?, ?>> resized = beforeAddEffectiveStatement(effective, 1);
- final ReactorStmtCtx<?, ?, ?> stmt = (ReactorStmtCtx<?, ?, ?>) substatement;
ensureCompletedExecution(stmt);
resized.add(stmt);
return resized;
abstract Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete();
// exposed for InferredStatementContext only
- final void ensureCompletedPhase(final Mutable<?, ?, ?> stmt) {
- verifyStatement(stmt);
- ensureCompletedExecution((ReactorStmtCtx<?, ?, ?>) stmt);
+ final ReactorStmtCtx<?, ?, ?> ensureCompletedPhase(final Mutable<?, ?, ?> stmt) {
+ final var ret = verifyStatement(stmt);
+ ensureCompletedExecution(ret);
+ return ret;
}
// Make sure target statement has transitioned at least to our phase (if we have one). This method is just before we
verify(stmt.tryToCompletePhase(executionOrder), "Statement %s cannot complete phase %s", stmt, executionOrder);
}
- private static void verifyStatement(final Mutable<?, ?, ?> stmt) {
+ private static ReactorStmtCtx<?, ?, ?> verifyStatement(final Mutable<?, ?, ?> stmt) {
verify(stmt instanceof ReactorStmtCtx, "Unexpected statement %s", stmt);
+ return (ReactorStmtCtx<?, ?, ?>) stmt;
}
private List<ReactorStmtCtx<?, ?, ?>> beforeAddEffectiveStatement(final List<ReactorStmtCtx<?, ?, ?>> effective,
* @return Stream of supported declared statements.
*/
// FIXME: we really want to unify this with streamEffective(), under its name
- abstract Stream<? extends @NonNull StmtContext<?, ?, ?>> streamDeclared();
+ abstract Stream<? extends @NonNull ReactorStmtCtx<?, ?, ?>> streamDeclared();
/**
* Return a stream of inferred statements which can be built into an {@link EffectiveStatement}, as per
* @return Stream of supported effective statements.
*/
// FIXME: this method is currently a misnomer, but unifying with streamDeclared() would make this accurate again
- abstract Stream<? extends @NonNull StmtContext<?, ?, ?>> streamEffective();
+ abstract Stream<? extends @NonNull ReactorStmtCtx<?, ?, ?>> streamEffective();
@Override
final boolean doTryToCompletePhase(final byte targetOrder) {