예제 #1
0
        public RubyCallSignature(int argumentCount, RubyCallFlags flags)
        {
            Debug.Assert(argumentCount >= 0 && argumentCount < MaxArgumentCount);
            Debug.Assert(((int)flags >> FlagsCount) == 0);

            _countAndFlags = ((uint)argumentCount << FlagsCount) | (uint)flags;
        }
예제 #2
0
        public MSA.Expression /*!*/ MakeSuperCallAction(int lexicalScopeId, bool hasImplicitArguments)
        {
            RubyCallFlags flags = GetSignatureFlags() | RubyCallFlags.HasImplicitSelf;

            if (hasImplicitArguments)
            {
                flags |= RubyCallFlags.HasImplicitArguments;
            }

            return(MakeCallSite(SuperCallAction.Make(_gen.Context, new RubyCallSignature(Count - HiddenArgumentCount, flags), lexicalScopeId)));
        }
예제 #3
0
        public MSA.Expression /*!*/ MakeCallAction(string /*!*/ name, bool hasImplicitSelf)
        {
            RubyCallFlags flags = GetSignatureFlags();

            if (hasImplicitSelf)
            {
                flags |= RubyCallFlags.HasImplicitSelf;
            }

            return(MakeCallSite(RubyCallAction.Make(_gen.Context, name, new RubyCallSignature(Count - HiddenArgumentCount, flags))));
        }
 /// <summary>
 /// Used by defined? operator applied on methods.
 /// </summary>
 private RubyCallSignature(RubyCallFlags flags)
 {
     Debug.Assert(((int)flags >> FlagsCount) == 0);
     _countAndFlags = ((uint)ResolveOnlyArgumentCount << FlagsCount) | (uint)flags;
 }