Skip to content

Commit 6bac861

Browse files
kbansalfacebook-github-bot
authored andcommitted
Refactor uninitializedLocalCheck to allow running directly on define
Reviewed By: dkgi Differential Revision: D28973956 fbshipit-source-id: 18a58aea48b72d99fd0cafea37aec757ccc1b376
1 parent 62a6f5d commit 6bac861

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

source/analysis/uninitializedLocalCheck.ml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -127,20 +127,24 @@ module State (Context : Context) = struct
127127
let backward ~key:_ _ ~statement:_ = failwith "Not implemented"
128128
end
129129

130+
let run_on_define ~qualifier define =
131+
let module Context = struct
132+
let uninitialized_usage = Int.Table.create ()
133+
end
134+
in
135+
let module State = State (Context) in
136+
let module Fixpoint = Fixpoint.Make (State) in
137+
let cfg = Cfg.create (Node.value define) in
138+
let fixpoint = Fixpoint.forward ~cfg ~initial:(State.initial ~define) in
139+
Fixpoint.exit fixpoint >>| State.errors ~qualifier ~define |> Option.value ~default:[]
140+
141+
130142
let run
131143
~configuration:_
132144
~environment:_
133145
~source:({ Source.source_path = { SourcePath.qualifier; _ }; _ } as source)
134146
=
135-
let check define =
136-
let module Context = struct
137-
let uninitialized_usage = Int.Table.create ()
138-
end
139-
in
140-
let module State = State (Context) in
141-
let module Fixpoint = Fixpoint.Make (State) in
142-
let cfg = Cfg.create (Node.value define) in
143-
let fixpoint = Fixpoint.forward ~cfg ~initial:(State.initial ~define) in
144-
Fixpoint.exit fixpoint >>| State.errors ~qualifier ~define |> Option.value ~default:[]
145-
in
146-
source |> Preprocessing.defines ~include_toplevels:false |> List.map ~f:check |> List.concat
147+
source
148+
|> Preprocessing.defines ~include_toplevels:false
149+
|> List.map ~f:(run_on_define ~qualifier)
150+
|> List.concat

source/analysis/uninitializedLocalCheck.mli

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ module Error = AnalysisError
1010

1111
val name : string
1212

13+
val run_on_define : qualifier:Reference.t -> Statement.Define.t Node.t -> Error.t list
14+
1315
val run
1416
: configuration:Configuration.Analysis.t ->
1517
environment:TypeEnvironment.ReadOnly.t ->

0 commit comments

Comments
 (0)