Boo.Lang.Compiler.Steps.ProcessMethodBodies.ProcessMetaMethodInvocation C# (CSharp) Метод

ProcessMetaMethodInvocation() приватный Метод

private ProcessMetaMethodInvocation ( MethodInvocationExpression node, bool resolvedArgs ) : bool
node MethodInvocationExpression
resolvedArgs bool
Результат bool
        private bool ProcessMetaMethodInvocation(MethodInvocationExpression node, bool resolvedArgs)
        {
            var targetEntity = node.Target.Entity;
            if (targetEntity == null) return false;
            if (!IsOrContainMetaMethod(targetEntity)) return false;

            var arguments = GetMetaMethodInvocationArguments(node);
            var argumentTypes = MethodResolver.GetArgumentTypes(arguments);
            var resolver = new MethodResolver(argumentTypes);
            var method = resolver.ResolveMethod(EnumerateMetaMethods(targetEntity));
            if (method == null) return false;

            if (ShouldResolveArgsOf(method))
            {
                Visit(node.Arguments);
                InvokeMetaMethod(node, method, GetMetaMethodInvocationArguments(node));
                return true;
            }

            InvokeMetaMethod(node, method, arguments);
            return true;
        }
ProcessMethodBodies