IronRuby.Runtime.Calls.CallArguments.GetCallSiteArguments C# (CSharp) Method

GetCallSiteArguments() private method

private GetCallSiteArguments ( Expression targetExpression ) : ReadOnlyCollection
targetExpression System.Linq.Expressions.Expression
return ReadOnlyCollection
        internal ReadOnlyCollection<Expression>/*!*/ GetCallSiteArguments(Expression/*!*/ targetExpression) {
            // context, target, arguments:
            var result = new AstExpressions(CallSiteArgumentCount);

            if (_hasScopeOrContextArg) {
                result.Add(_signature.HasScope ? MetaScope.Expression : MetaContext.Expression);
            }
            result.Add(targetExpression);

            for (int j = FirstArgumentIndex; j < _args.Length; j++) {
                result.Add(_args[j].Expression);
            }

            return result.ToReadOnlyCollection();
        }

Usage Example

        // Only used if method_missing() is called directly on the main singleton.
        internal override void BuildCallNoFlow(MetaObjectBuilder/*!*/ metaBuilder, CallArguments/*!*/ args, string/*!*/ name) {
            var globalScope = args.TargetClass.GlobalScope;

            // TODO: this just calls super for now, so it doesn't look up the scope:
            metaBuilder.Result = AstUtils.LightDynamic(
                new RubyCallAction(globalScope.Context, Symbols.MethodMissing,
                    new RubyCallSignature(
                        args.Signature.ArgumentCount,
                        args.Signature.Flags | RubyCallFlags.HasImplicitSelf | RubyCallFlags.IsSuperCall
                    )
                ),
                typeof(object),
                args.GetCallSiteArguments(args.TargetExpression)
            );
        }
All Usage Examples Of IronRuby.Runtime.Calls.CallArguments::GetCallSiteArguments