@ -684,16 +684,16 @@ let resolve_java_pname tenv prop args pname_java call_flags : Typ.Procname.Java.
(* * Resolve the procedure name and run the analysis of the resolved procedure
(* * Resolve the procedure name and run the analysis of the resolved procedure
if not already analyzed * )
if not already analyzed * )
let resolve_and_analyze tenv caller_pdesc prop args callee_proc_name call_flags
let resolve_and_analyze tenv ~ caller_pdesc prop args callee_proc_name call_flags
: Typ . Procname . t * Specs . summary option =
: Typ . Procname . t * Specs . summary option =
(* TODO ( #15748878 ) : Fix conflict with method overloading by encoding in the procedure name
(* TODO ( #15748878 ) : Fix conflict with method overloading by encoding in the procedure name
whether the method is defined or generated by the specialization * )
whether the method is defined or generated by the specialization * )
let analyze_ondemand resolved_pname : Specs . summary option =
let analyze_ondemand resolved_pname : Specs . summary option =
if Typ . Procname . equal resolved_pname callee_proc_name then
if Typ . Procname . equal resolved_pname callee_proc_name then
Ondemand . analyze_proc_name caller_pdesc callee_proc_name
Ondemand . analyze_proc_name ~ caller_pdesc callee_proc_name
else
else
(* Create the type sprecialized procedure description and analyze it directly *)
(* Create the type sprecialized procedure description and analyze it directly *)
let analyze specialized_pdesc = Ondemand . analyze_proc_desc caller_pdesc specialized_pdesc in
let analyze specialized_pdesc = Ondemand . analyze_proc_desc ~ caller_pdesc specialized_pdesc in
let resolved_proc_desc_option =
let resolved_proc_desc_option =
match Ondemand . get_proc_desc resolved_pname with
match Ondemand . get_proc_desc resolved_pname with
| Some resolved_proc_desc ->
| Some resolved_proc_desc ->
@ -1183,7 +1183,8 @@ let rec sym_exec tenv current_pdesc instr_ (prop_: Prop.normal Prop.t) path
norm_args
norm_args
in
in
let resolved_pname , resolved_summary_opt =
let resolved_pname , resolved_summary_opt =
resolve_and_analyze tenv current_pdesc norm_prop norm_args callee_pname call_flags
resolve_and_analyze tenv ~ caller_pdesc : current_pdesc norm_prop norm_args callee_pname
call_flags
in
in
match resolved_summary_opt with
match resolved_summary_opt with
| None ->
| None ->
@ -1210,7 +1211,7 @@ let rec sym_exec tenv current_pdesc instr_ (prop_: Prop.normal Prop.t) path
skip_call ~ reason norm_prop path pname ret_annots loc ret_id ( Some ret_type )
skip_call ~ reason norm_prop path pname ret_annots loc ret_id ( Some ret_type )
url_handled_args
url_handled_args
in
in
match Ondemand . analyze_proc_name current_pdesc pname with
match Ondemand . analyze_proc_name ~ caller_pdesc : current_pdesc pname with
| None ->
| None ->
let ret_typ = Typ . Procname . Java . get_return_typ callee_pname_java in
let ret_typ = Typ . Procname . Java . get_return_typ callee_pname_java in
let ret_annots = load_ret_annots callee_pname in
let ret_annots = load_ret_annots callee_pname in
@ -1239,8 +1240,8 @@ let rec sym_exec tenv current_pdesc instr_ (prop_: Prop.normal Prop.t) path
(* method with block parameters *)
(* method with block parameters *)
let with_block_parameters_summary_opt =
let with_block_parameters_summary_opt =
if call_flags . CallFlags . cf_with_block_parameters then
if call_flags . CallFlags . cf_with_block_parameters then
SymExecBlocks . resolve_method_with_block_args_and_analyze current_pdesc resolved_pname
SymExecBlocks . resolve_method_with_block_args_and_analyze ~ caller_pdesc : current_pdesc
actual_params
resolved_pname actual_params
else None
else None
in
in
match with_block_parameters_summary_opt with
match with_block_parameters_summary_opt with
@ -1253,7 +1254,9 @@ let rec sym_exec tenv current_pdesc instr_ (prop_: Prop.normal Prop.t) path
( call_args prop_r resolved_pname n_extended_actual_params ret_id loc )
( call_args prop_r resolved_pname n_extended_actual_params ret_id loc )
| None ->
| None ->
(* Generic fun call with known name *)
(* Generic fun call with known name *)
let resolved_summary_opt = Ondemand . analyze_proc_name current_pdesc resolved_pname in
let resolved_summary_opt =
Ondemand . analyze_proc_name ~ caller_pdesc : current_pdesc resolved_pname
in
let callee_pdesc_opt = Ondemand . get_proc_desc resolved_pname in
let callee_pdesc_opt = Ondemand . get_proc_desc resolved_pname in
let ret_typ_opt = Option . map ~ f : Procdesc . get_ret_type callee_pdesc_opt in
let ret_typ_opt = Option . map ~ f : Procdesc . get_ret_type callee_pdesc_opt in
let sentinel_result =
let sentinel_result =