Ejemplo n.º 1
0
        protected override bool LLEquals(TypeSpec obj, bool partialNameMatch)
        {
            ClosureTypeSpec spec = obj as ClosureTypeSpec;

            if (spec == null)
            {
                return(false);
            }

            if (partialNameMatch)
            {
                if (Arguments == null && spec.Arguments == null &&
                    ReturnType == null && spec.ReturnType == null)
                {
                    return(true);
                }
                if (Arguments == null || spec.Arguments == null)
                {
                    return(false);
                }
                if (ReturnType == null || spec.ReturnType == null)
                {
                    return(false);
                }
                return(Arguments.EqualsPartialMatch(spec.Arguments) &&
                       ReturnType.EqualsPartialMatch(spec.ReturnType));
            }
            else
            {
                var specArgs = spec.Arguments is TupleTypeSpec ? spec.Arguments : new TupleTypeSpec(spec.Arguments);
                var thisArgs = Arguments is TupleTypeSpec ? Arguments : new TupleTypeSpec(Arguments);
                return(BothNullOrEqual(thisArgs, specArgs) &&
                       BothNullOrEqual(ReturnType, spec.ReturnType));
            }
        }