- if dangerous_args = [] then (
- if List.mem k showstoppers then k :: concat_map free_vars all_args else
- try
- let arity = arity_of arities k in
-prerr_endline ("dangerous_inert_conv: ar=" ^ string_of_int arity ^ " k="^string_of_var p.var_names k ^ " listlenargs=" ^ (string_of_int (List.length args)) ^ " more_args=" ^ string_of_int more_args);
- if more_args > 0 (* match argument*) && List.length args = arity then []
- else if List.length all_args + more_args > arity then k :: concat_map free_vars all_args else []
- with
- Not_found -> []
- ) else k :: concat_map free_vars all_args
+ if List.mem k showstoppers then raise Dangerous else
+ try
+ let arity = arity_of arities k in
+(* prerr_endline ("dangerous_inert_conv: ar=" ^ string_of_int arity ^ " k="^string_of_var p.var_names k ^ " listlenargs=" ^ (string_of_int (List.length args)) ^ " more_args=" ^ string_of_int more_args); *)
+ if more_args > 0 (* match argument*) && List.length args = arity then raise (TriggerMatchReduction k)
+ else if List.length all_args + more_args > arity then raise Dangerous else ()
+ with
+ Not_found -> ()