internal static EdmFunction ResolveFunctionOverloads( IList <EdmFunction> functionsMetadata, IList <TypeUsage> argTypes, bool isGroupAggregateFunction, out bool isAmbiguous) { return(FunctionOverloadResolver.ResolveFunctionOverloads <EdmFunction, FunctionParameter>(functionsMetadata, argTypes, (Func <EdmFunction, IList <FunctionParameter> >)(edmFunction => (IList <FunctionParameter>)edmFunction.Parameters), (Func <FunctionParameter, TypeUsage>)(functionParameter => functionParameter.TypeUsage), (Func <FunctionParameter, ParameterMode>)(functionParameter => functionParameter.Mode), (Func <TypeUsage, IEnumerable <TypeUsage> >)(argType => TypeSemantics.FlattenType(argType)), (Func <TypeUsage, TypeUsage, IEnumerable <TypeUsage> >)((paramType, argType) => TypeSemantics.FlattenType(paramType)), (Func <TypeUsage, TypeUsage, bool>)((fromType, toType) => TypeSemantics.IsPromotableTo(fromType, toType)), (Func <TypeUsage, TypeUsage, bool>)((fromType, toType) => TypeSemantics.IsStructurallyEqual(fromType, toType)), isGroupAggregateFunction, out isAmbiguous)); }
internal static EdmFunction ResolveFunctionOverloads( IList <EdmFunction> functionsMetadata, IList <TypeUsage> argTypes, bool isGroupAggregateFunction, out bool isAmbiguous) { return(FunctionOverloadResolver.ResolveFunctionOverloads(functionsMetadata, argTypes, new Func <TypeUsage, IEnumerable <TypeUsage> >(SemanticResolver.UntypedNullAwareFlattenArgumentType), new Func <TypeUsage, TypeUsage, IEnumerable <TypeUsage> >(SemanticResolver.UntypedNullAwareFlattenParameterType), new Func <TypeUsage, TypeUsage, bool>(SemanticResolver.UntypedNullAwareIsPromotableTo), new Func <TypeUsage, TypeUsage, bool>(SemanticResolver.UntypedNullAwareIsStructurallyEqual), isGroupAggregateFunction, out isAmbiguous)); }
internal static EdmFunction ResolveFunctionOverloads( IList <EdmFunction> functionsMetadata, IList <TypeUsage> argTypes, Func <TypeUsage, IEnumerable <TypeUsage> > flattenArgumentType, Func <TypeUsage, TypeUsage, IEnumerable <TypeUsage> > flattenParameterType, Func <TypeUsage, TypeUsage, bool> isPromotableTo, Func <TypeUsage, TypeUsage, bool> isStructurallyEqual, bool isGroupAggregateFunction, out bool isAmbiguous) { return(FunctionOverloadResolver.ResolveFunctionOverloads <EdmFunction, FunctionParameter>(functionsMetadata, argTypes, (Func <EdmFunction, IList <FunctionParameter> >)(edmFunction => (IList <FunctionParameter>)edmFunction.Parameters), (Func <FunctionParameter, TypeUsage>)(functionParameter => functionParameter.TypeUsage), (Func <FunctionParameter, ParameterMode>)(functionParameter => functionParameter.Mode), flattenArgumentType, flattenParameterType, isPromotableTo, isStructurallyEqual, isGroupAggregateFunction, out isAmbiguous)); }
internal static TFunctionMetadata ResolveFunctionOverloads <TFunctionMetadata, TFunctionParameterMetadata>( IList <TFunctionMetadata> functionsMetadata, IList <TypeUsage> argTypes, Func <TFunctionMetadata, IList <TFunctionParameterMetadata> > getSignatureParams, Func <TFunctionParameterMetadata, TypeUsage> getParameterTypeUsage, Func <TFunctionParameterMetadata, ParameterMode> getParameterMode, bool isGroupAggregateFunction, out bool isAmbiguous) where TFunctionMetadata : class { return(FunctionOverloadResolver.ResolveFunctionOverloads <TFunctionMetadata, TFunctionParameterMetadata>(functionsMetadata, argTypes, getSignatureParams, getParameterTypeUsage, getParameterMode, new Func <TypeUsage, IEnumerable <TypeUsage> >(SemanticResolver.UntypedNullAwareFlattenArgumentType), new Func <TypeUsage, TypeUsage, IEnumerable <TypeUsage> >(SemanticResolver.UntypedNullAwareFlattenParameterType), new Func <TypeUsage, TypeUsage, bool>(SemanticResolver.UntypedNullAwareIsPromotableTo), new Func <TypeUsage, TypeUsage, bool>(SemanticResolver.UntypedNullAwareIsStructurallyEqual), isGroupAggregateFunction, out isAmbiguous)); }