Frontend.SignatureMismatch
type type_mismatch = private
| DataOnlyError
| TypeMismatch of Middle.UnsizedType.t * Middle.UnsizedType.t * details option
and details =
| SuffixMismatch of unit Middle.Fun_kind.suffix * unit Middle.Fun_kind.suffix
| ReturnTypeMismatch of Middle.UnsizedType.returntype
* Middle.UnsizedType.returntype
| InputMismatch of function_mismatch
type signature_error =
(Middle.UnsizedType.returntype * Middle.UnsizedType.argumentlist)
* function_mismatch
type ('unique, 'error) generic_match_result =
| UniqueMatch of 'unique
| AmbiguousMatch of (Middle.UnsizedType.returntype
* Middle.UnsizedType.argumentlist)
list
| SignatureErrors of 'error
type match_result =
(Middle.UnsizedType.returntype
* (bool Middle.Fun_kind.suffix ->
Ast.fun_kind)
* Promotion.t list,
signature_error list * bool)
generic_match_result
The match result for general (non-variadic) functions
val check_of_same_type_mod_conv :
Middle.UnsizedType.t ->
Middle.UnsizedType.t ->
(Promotion.t, type_mismatch) Core.result
val check_compatible_arguments_mod_conv :
Middle.UnsizedType.argumentlist ->
Middle.UnsizedType.argumentlist ->
(Promotion.t list, function_mismatch) Core.result
val check_compatible_arguments_no_promotion :
Middle.UnsizedType.argumentlist ->
Middle.UnsizedType.argumentlist ->
(unit, function_mismatch) Core.result
val unique_minimum_promotion :
('a * Promotion.t list) list ->
('a * Promotion.t list, 'a list option) Core.result
val matching_function :
Environment.t ->
string ->
Middle.UnsizedType.argumentlist ->
match_result
Searches for a function of the given name which can support the required argument types. Requires a unique minimum option under type promotion
val matching_stanlib_function :
string ->
Middle.UnsizedType.argumentlist ->
match_result
Same as matching_function
but requires specifically that the function be from StanMath (uses Environment.stan_math_environment
)
val check_variadic_args :
allow_lpdf:bool ->
Middle.UnsizedType.argumentlist ->
Middle.UnsizedType.argumentlist ->
Middle.UnsizedType.t ->
Middle.UnsizedType.argumentlist ->
(Middle.UnsizedType.t * Promotion.t list,
Middle.UnsizedType.argumentlist * function_mismatch)
Core.result
Check variadic function arguments. If a match is found, returns Ok
of the function type and a list of promotions (see promote
) If none is found, returns Error
of the list of args and a function_mismatch.
val pp_mismatch_details :
skipped:string list ->
Stdlib.Format.formatter ->
details ->
unit
val pp_signature_mismatch :
Stdlib.Format.formatter ->
(string
* Middle.UnsizedType.t list
* (((Middle.UnsizedType.returntype * Middle.UnsizedType.argumentlist)
* function_mismatch)
list
* bool)) ->
unit
val pp_math_lib_assignmentoperator_sigs :
Stdlib.Format.formatter ->
(Middle.UnsizedType.t * Middle.Operator.t) ->
unit
val compare_errors : function_mismatch -> function_mismatch -> int
val compare_match_results : match_result -> match_result -> int