public override void VisitModalExpression(ModalExpression modalExpr)
{
if (modalExpr.Mode == ArgumentMode.Out ||
modalExpr.Mode == ArgumentMode.InOut) {
LocalExpression localExpr =
modalExpr.Expression as LocalExpression;
Argument arg = currentRoutine.GetArgument(localExpr.Name);
if (arg != null) {
ilGenerator.Emit(OpCodes.Ldarga, arg.Index);
return;
}
LocalVariable local =
localVariableStack.GetLocal(localExpr.Name);
local.EmitLoadAddress(ilGenerator);
}
else {
modalExpr.Expression.Accept(this);
}
}