public override RubyArray/*!*/ GetRubyParameterArray() {
var context = _declaringScope.RubyContext;
var reqSymbol = context.CreateAsciiSymbol("req");
var optSymbol = context.CreateAsciiSymbol("opt");
var ps =_body.Ast.Parameters;
RubyArray result = new RubyArray();
for (int i = 0; i < ps.LeadingMandatoryCount; i++) {
result.Add(new RubyArray { reqSymbol, context.EncodeIdentifier(((LocalVariable)ps.Mandatory[i]).Name) });
}
foreach (var p in ps.Optional) {
result.Add(new RubyArray { optSymbol, context.EncodeIdentifier(((LocalVariable)p.Left).Name) });
}
if (ps.Unsplat != null) {
result.Add(new RubyArray { context.CreateAsciiSymbol("rest"), context.EncodeIdentifier(((LocalVariable)ps.Unsplat).Name) });
}
for (int i = ps.LeadingMandatoryCount; i < ps.Mandatory.Length; i++) {
result.Add(new RubyArray { reqSymbol, context.EncodeIdentifier(((LocalVariable)ps.Mandatory[i]).Name) });
}
if (ps.Block != null) {
result.Add(new RubyArray { context.CreateAsciiSymbol("block"), context.EncodeIdentifier(ps.Block.Name) });
}
return result;
}