Boo.Lang.Compiler.TypeSystem.TypeSystemServices.IsCallableTypeAssignableFrom C# (CSharp) Method

IsCallableTypeAssignableFrom() public method

public IsCallableTypeAssignableFrom ( ICallableType lhs, IType rhs ) : bool
lhs ICallableType
rhs IType
return bool
        public bool IsCallableTypeAssignableFrom(ICallableType lhs, IType rhs)
        {
            if (lhs == rhs) return true;
            if (rhs.IsNull()) return true;

            var other = rhs as ICallableType;
            if (null == other) return false;

            CallableSignature lvalue = lhs.GetSignature();
            CallableSignature rvalue = other.GetSignature();
            if (lvalue == rvalue) return true;

            IParameter[] lparams = lvalue.Parameters;
            IParameter[] rparams = rvalue.Parameters;
            if (lparams.Length < rparams.Length) return false;

            for (int i = 0; i < rparams.Length; ++i)
                if (!CanBeReachedFrom(lparams[i].Type, rparams[i].Type))
                    return false;

            return CompatibleReturnTypes(lvalue, rvalue);
        }

Usage Example

Example #1
0
 override public bool IsAssignableFrom(IType other)
 {
     return(_typeSystemServices.IsCallableTypeAssignableFrom(this, other));
 }
TypeSystemServices