[clang] Remove CLocation.curr_file

Summary:
curr_file is remnant of the past when we didn't have good location information
coming from Clang_ast_t location. But it was fixed ~1 year ago.

Reviewed By: jvillard

Differential Revision: D4139750

fbshipit-source-id: 4ce7235
master
Andrzej Kotulski 8 years ago committed by Facebook Github Bot
parent bf14034289
commit 4d43f0e5d8

@ -47,7 +47,6 @@ let init_global_state_for_capture_and_linters source_file => {
CommandLineOption.Clang (Some (Filename.basename (DB.source_file_to_string source_file)));
register_perf_stats_report source_file;
Config.curr_language := Config.Clang;
CLocation.curr_file := source_file;
DB.Results_dir.init source_file;
Clang_ast_main.reset_cache ();
CFrontend_config.reset_global_state ()

@ -63,8 +63,6 @@ let rec do_frontend_checks_stmt (context:CLintersContext.context) stmt =
and do_frontend_checks_decl (context: CLintersContext.context) decl =
let open Clang_ast_t in
let info = Clang_ast_proj.get_decl_tuple decl in
CLocation.update_curr_file context.translation_unit_context info;
let context' =
(match decl with
| FunctionDecl(_, _, _, fdi)

@ -140,7 +140,6 @@ struct
let should_translate_decl trans_unit_ctx dec decl_trans_context =
let info = Clang_ast_proj.get_decl_tuple dec in
CLocation.update_curr_file trans_unit_ctx info;
let source_range = info.Clang_ast_t.di_source_range in
let translate_when_used = match dec with
| Clang_ast_t.FunctionDecl (_, name_info, _, _)

@ -11,10 +11,6 @@ open! Utils
(** Module for function to retrieve the location (file, line, etc) of instructions *)
(** Inside the AST there may be code or type definitions from other files than the one passed as an
argument. That current file in the translation is saved in this variable. *)
let curr_file = ref DB.source_file_empty
let source_file_from_path path =
if Filename.is_relative path then
(failwithf
@ -26,44 +22,12 @@ let source_file_from_path path =
Logging.err_debug "ERROR: %s should be a prefix of %s.@." Config.project_root path;
DB.source_file_from_string path
let choose_sloc_to_update_curr_file trans_unit_ctx sloc1 sloc2 =
match sloc2.Clang_ast_t.sl_file with
| Some f when DB.inode_equal (source_file_from_path f)
trans_unit_ctx.CFrontend_config.source_file ->
sloc2
| _ -> sloc1
let update_curr_file trans_unit_ctx di =
let loc_start, loc_end = di.Clang_ast_t.di_source_range in
let loc = choose_sloc_to_update_curr_file trans_unit_ctx loc_start loc_end in
match loc.Clang_ast_t.sl_file with
| Some f -> curr_file := source_file_from_path f
| None -> ()
let clang_to_sil_location trans_unit_ctx clang_loc procdesc_opt =
let line = match clang_loc.Clang_ast_t.sl_line with
| Some l -> l
| None -> -1 in
let col = match clang_loc.Clang_ast_t.sl_column with
| Some c -> c
| None -> -1 in
let file, nLOC =
match procdesc_opt with
| Some procdesc ->
let proc_loc = Cfg.Procdesc.get_loc procdesc in
if (DB.source_file_equal proc_loc.Location.file DB.source_file_empty) then
!curr_file, !Config.nLOC
else proc_loc.Location.file, proc_loc.Location.nLOC
| None ->
match clang_loc.Clang_ast_t.sl_file with
| Some f ->
let file_db = source_file_from_path f in
let nloc =
if (DB.inode_equal file_db trans_unit_ctx.CFrontend_config.source_file) then
!Config.nLOC
else -1 in
file_db, nloc
| None -> !curr_file, !Config.nLOC in
let clang_to_sil_location trans_unit_ctx clang_loc =
let line = Option.default (-1) clang_loc.Clang_ast_t.sl_line in
let col = Option.default (-1) clang_loc.Clang_ast_t.sl_column in
let file = Option.map_default source_file_from_path
trans_unit_ctx.CFrontend_config.source_file clang_loc.Clang_ast_t.sl_file in
let nLOC = -1 in
Location.{line; col; file; nLOC}
let file_in_project file =
@ -108,8 +72,7 @@ let should_translate trans_unit_ctx (loc_start, loc_end) decl_trans_context ~tra
let translate_on_demand = translate_when_used || file_in_project || Config.models_mode in
let file_in_models = map_path_of DB.file_is_in_cpp_model loc_end
|| map_path_of DB.file_is_in_cpp_model loc_start in
equal_current_source !curr_file
|| map_file_of equal_current_source loc_end
map_file_of equal_current_source loc_end
|| map_file_of equal_current_source loc_start
|| file_in_models
|| (Config.cxx_experimental && decl_trans_context = `Translation && translate_on_demand
@ -130,9 +93,8 @@ let is_file_blacklisted file =
let get_sil_location_from_range trans_unit_ctx source_range prefer_first =
let sloc1, sloc2 = source_range in
let sloc = if not prefer_first then sloc2 else sloc1 in
clang_to_sil_location trans_unit_ctx sloc None
clang_to_sil_location trans_unit_ctx sloc
let get_sil_location stmt_info context =
let sloc1, _ = stmt_info.Clang_ast_t.si_source_range in
clang_to_sil_location context.CContext.translation_unit_context sloc1
(Some (CContext.get_procdesc context))

@ -11,13 +11,8 @@ open! Utils
(** Module for function to retrieve the location (file, line, etc) of instructions *)
(** Inside the AST there may be code or type definitions from other files than the one passed as an
argument. That current file in the translation is saved in this variable. *)
val curr_file : DB.source_file ref
val clang_to_sil_location : CFrontend_config.translation_unit_context ->
Clang_ast_t.source_location -> Cfg.Procdesc.t option ->
Location.t
Clang_ast_t.source_location -> Location.t
val get_sil_location : Clang_ast_t.stmt_info -> CContext.t -> Location.t
@ -27,8 +22,6 @@ val should_translate_lib : CFrontend_config.translation_unit_context -> Clang_as
val should_do_frontend_check : CFrontend_config.translation_unit_context ->
Clang_ast_t.source_range -> bool
val update_curr_file : CFrontend_config.translation_unit_context -> Clang_ast_t.decl_info -> unit
val is_file_blacklisted : string -> bool
val source_file_from_path : string -> DB.source_file

@ -2032,8 +2032,7 @@ struct
let procname = Cfg.Procdesc.get_proc_name context.CContext.procdesc in
let loc =
(match stmt_info.Clang_ast_t.si_source_range with (l1, _) ->
CLocation.clang_to_sil_location context.CContext.translation_unit_context l1
(Some context.CContext.procdesc)) in
CLocation.clang_to_sil_location context.CContext.translation_unit_context l1) in
(* Given a captured var, return the instruction to assign it to a temp *)
let assign_captured_var (cvar, typ) =
let id = Ident.create_fresh Ident.knormal in

Loading…
Cancel
Save