[cleanup] replace Location.dummy with Location.none where acceptable

Summary:
`Location.dummy` is often used in a situation where we know the source file, but not the line/column.
Use `Location.none` for this instead.

Reviewed By: jeremydubreil

Differential Revision: D4991232

fbshipit-source-id: fc361a4
master
Sam Blackshear 8 years ago committed by Facebook Github Bot
parent 19da59cf19
commit 6680126af9

@ -27,9 +27,11 @@ let equal = [%compare.equal : t];
/** Dump a location */ /** Dump a location */
let d (loc: t) => L.add_print_action (L.PTloc, Obj.repr loc); let d (loc: t) => L.add_print_action (L.PTloc, Obj.repr loc);
let none file => {line: (-1), col: (-1), file};
/** Dummy location */ /** Dummy location */
let dummy = {line: (-1), col: (-1), file: SourceFile.invalid}; let dummy = none SourceFile.invalid;
/** Pretty print a location */ /** Pretty print a location */

@ -24,7 +24,11 @@ let equal: t => t => bool;
let d: t => unit; let d: t => unit;
/** Dummy location */ /** Dummy source location for the given file */
let none: SourceFile.t => t;
/** Dummy location with no source file */
let dummy: t; let dummy: t;

@ -733,7 +733,11 @@ let reset_summary proc_name attributes_opt proc_desc_option =
| Some attributes -> | Some attributes ->
attributes attributes
| None -> | None ->
ProcAttributes.default proc_name !Config.curr_language in begin
match proc_desc_option with
| Some proc_desc -> Procdesc.get_attributes proc_desc
| None -> ProcAttributes.default proc_name !Config.curr_language
end in
init_summary ( init_summary (
[], [],
ProcAttributes.proc_flags_empty (), ProcAttributes.proc_flags_empty (),

@ -444,12 +444,10 @@ let create_external_procdesc cfg proc_name is_objc_inst_method type_opt =
| Some (ret_type, arg_types) -> | Some (ret_type, arg_types) ->
ret_type, List.map ~f:(fun typ -> (Mangled.from_string "x", typ)) arg_types ret_type, List.map ~f:(fun typ -> (Mangled.from_string "x", typ)) arg_types
| None -> Typ.mk Typ.Tvoid, []) in | None -> Typ.mk Typ.Tvoid, []) in
let loc = Location.dummy in
let proc_attributes = let proc_attributes =
{ (ProcAttributes.default proc_name Config.Clang) with { (ProcAttributes.default proc_name Config.Clang) with
ProcAttributes.formals; ProcAttributes.formals;
is_objc_instance_method = is_objc_inst_method; is_objc_instance_method = is_objc_inst_method;
loc;
ret_type; ret_type;
} in } in
ignore (Cfg.create_proc_desc cfg proc_attributes) ignore (Cfg.create_proc_desc cfg proc_attributes)
@ -476,7 +474,7 @@ let add_default_method_for_class trans_unit_ctx class_name decl_info =
let loc = CLocation.get_sil_location_from_range trans_unit_ctx let loc = CLocation.get_sil_location_from_range trans_unit_ctx
decl_info.Clang_ast_t.di_source_range true in decl_info.Clang_ast_t.di_source_range true in
let proc_name = Typ.Procname.get_default_objc_class_method class_name in let proc_name = Typ.Procname.get_default_objc_class_method class_name in
let attrs = { (ProcAttributes.default proc_name Config.Clang) with loc = loc; } in let attrs = { (ProcAttributes.default proc_name Config.Clang) with loc; } in
AttributesTable.store_attributes attrs AttributesTable.store_attributes attrs
let get_procname_from_cpp_lambda context dec = let get_procname_from_cpp_lambda context dec =

@ -153,9 +153,9 @@ let create_icfg source_file linereader program icfg cn node =
begin begin
match m with match m with
| Javalib.AbstractMethod am -> | Javalib.AbstractMethod am ->
ignore (JTrans.create_am_procdesc program icfg am proc_name) ignore (JTrans.create_am_procdesc source_file program icfg am proc_name)
| Javalib.ConcreteMethod cm when JTrans.is_java_native cm -> | Javalib.ConcreteMethod cm when JTrans.is_java_native cm ->
ignore (JTrans.create_native_procdesc program icfg cm proc_name) ignore (JTrans.create_native_procdesc source_file program icfg cm proc_name)
| Javalib.ConcreteMethod cm -> | Javalib.ConcreteMethod cm ->
add_cmethod source_file program linereader icfg cm proc_name add_cmethod source_file program linereader icfg cm proc_name
end; end;

@ -273,7 +273,7 @@ let trans_access = function
| `Private -> PredSymb.Private | `Private -> PredSymb.Private
| `Protected -> PredSymb.Protected | `Protected -> PredSymb.Protected
let create_am_procdesc program icfg am proc_name : Procdesc.t = let create_am_procdesc source_file program icfg am proc_name : Procdesc.t =
let cfg = icfg.JContext.cfg in let cfg = icfg.JContext.cfg in
let tenv = icfg.JContext.tenv in let tenv = icfg.JContext.tenv in
let m = Javalib.AbstractMethod am in let m = Javalib.AbstractMethod am in
@ -295,18 +295,19 @@ let create_am_procdesc program icfg am proc_name : Procdesc.t =
is_synthetic_method = am.Javalib.am_synthetic; is_synthetic_method = am.Javalib.am_synthetic;
method_annotation; method_annotation;
ret_type = JTransType.return_type program tenv ms; ret_type = JTransType.return_type program tenv ms;
loc = Location.none source_file;
} in } in
Cfg.create_proc_desc cfg proc_attributes in Cfg.create_proc_desc cfg proc_attributes in
let start_kind = Procdesc.Node.Start_node proc_name in let start_kind = Procdesc.Node.Start_node proc_name in
let start_node = Procdesc.create_node procdesc Location.dummy start_kind [] in let start_node = Procdesc.create_node procdesc (Location.none source_file) start_kind [] in
let exit_kind = (Procdesc.Node.Exit_node proc_name) in let exit_kind = (Procdesc.Node.Exit_node proc_name) in
let exit_node = Procdesc.create_node procdesc Location.dummy exit_kind [] in let exit_node = Procdesc.create_node procdesc (Location.none source_file) exit_kind [] in
Procdesc.node_set_succs_exn procdesc start_node [exit_node] [exit_node]; Procdesc.node_set_succs_exn procdesc start_node [exit_node] [exit_node];
Procdesc.set_start_node procdesc start_node; Procdesc.set_start_node procdesc start_node;
Procdesc.set_exit_node procdesc exit_node; Procdesc.set_exit_node procdesc exit_node;
procdesc procdesc
let create_native_procdesc program icfg cm proc_name = let create_native_procdesc source_file program icfg cm proc_name =
let cfg = icfg.JContext.cfg in let cfg = icfg.JContext.cfg in
let tenv = icfg.JContext.tenv in let tenv = icfg.JContext.tenv in
let m = Javalib.ConcreteMethod cm in let m = Javalib.ConcreteMethod cm in
@ -325,6 +326,7 @@ let create_native_procdesc program icfg cm proc_name =
is_synthetic_method = cm.Javalib.cm_synthetic; is_synthetic_method = cm.Javalib.cm_synthetic;
method_annotation; method_annotation;
ret_type = JTransType.return_type program tenv ms; ret_type = JTransType.return_type program tenv ms;
loc = Location.none source_file;
} in } in
Cfg.create_proc_desc cfg proc_attributes Cfg.create_proc_desc cfg proc_attributes

@ -24,10 +24,16 @@ val is_java_native : JCode.jcode Javalib.concrete_method -> bool
(** Create the procedure description for an abstract method *) (** Create the procedure description for an abstract method *)
val create_am_procdesc : val create_am_procdesc :
JClasspath.program -> JContext.icfg -> Javalib.abstract_method -> Typ.Procname.t -> Procdesc.t SourceFile.t ->
JClasspath.program ->
JContext.icfg ->
Javalib.abstract_method ->
Typ.Procname.t ->
Procdesc.t
(** Create the procedure description for a concrete method *) (** Create the procedure description for a concrete method *)
val create_native_procdesc : val create_native_procdesc :
SourceFile.t ->
JClasspath.program -> JClasspath.program ->
JContext.icfg -> JContext.icfg ->
JCode.jcode Javalib.concrete_method -> JCode.jcode Javalib.concrete_method ->

@ -57,7 +57,7 @@ let translate_exceptions (context : JContext.t) exit_nodes get_body_nodes handle
let catch_nodes = get_body_nodes handler.JBir.e_handler in let catch_nodes = get_body_nodes handler.JBir.e_handler in
let loc = match catch_nodes with let loc = match catch_nodes with
| n:: _ -> Procdesc.Node.get_loc n | n:: _ -> Procdesc.Node.get_loc n
| [] -> Location.dummy in | [] -> Location.none context.source_file in
let exn_type = let exn_type =
let class_name = let class_name =
match handler.JBir.e_catch_type with match handler.JBir.e_catch_type with
@ -109,7 +109,7 @@ let translate_exceptions (context : JContext.t) exit_nodes get_body_nodes handle
List.fold ~f:process_handler ~init:exit_nodes (List.rev handler_list) in List.fold ~f:process_handler ~init:exit_nodes (List.rev handler_list) in
let loc = match nodes_first_handler with let loc = match nodes_first_handler with
| n:: _ -> Procdesc.Node.get_loc n | n:: _ -> Procdesc.Node.get_loc n
| [] -> Location.dummy in | [] -> Location.none context.source_file in
let entry_node = create_entry_node loc in let entry_node = create_entry_node loc in
Procdesc.node_set_succs_exn procdesc entry_node nodes_first_handler exit_nodes; Procdesc.node_set_succs_exn procdesc entry_node nodes_first_handler exit_nodes;
Hashtbl.add catch_block_table handler_list [entry_node] in Hashtbl.add catch_block_table handler_list [entry_node] in

Loading…
Cancel
Save