internal override MSA.Expression/*!*/ Transform(AstGenerator/*!*/ gen) {
// eval:
if (gen.CompilerOptions.IsEval) {
return Methods.EvalRedo.OpCall(gen.CurrentScopeVariable);
}
// loop:
if (gen.CurrentLoop != null) {
return Ast.Block(
Ast.Assign(gen.CurrentLoop.RedoVariable, AstUtils.Constant(true)),
Ast.Continue(gen.CurrentLoop.ContinueLabel),
AstUtils.Empty()
);
}
// block:
if (gen.CurrentBlock != null) {
return Ast.Continue(gen.CurrentBlock.RedoLabel);
}
// method:
return Methods.MethodRedo.OpCall(gen.CurrentScopeVariable);
}
}