Skip to content

Commit 19360db

Browse files
grievejiafacebook-github-bot
authored andcommitted
Use the right path lookup function for infer
Reviewed By: stroxler Differential Revision: D30196011 fbshipit-source-id: 07b6e0769a66e1e1aa4eede1ed6cb5f3166d16e0
1 parent 68811a9 commit 19360db

File tree

11 files changed

+57
-86
lines changed

11 files changed

+57
-86
lines changed

source/command/inferCommand.ml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,19 @@ let run_infer_local
230230
(fun () ->
231231
let result =
232232
Scheduler.with_scheduler ~configuration ~f:(fun scheduler ->
233-
let environment_data =
233+
let ({ Service.Infer.global_environment; _ } as environment_data) =
234234
Service.Infer.build_environment_data ~configuration ~scheduler ()
235235
in
236-
Infer.run_infer ~configuration ~scheduler environment_data)
236+
let filename_lookup qualifier =
237+
let ast_environment =
238+
Analysis.AnnotatedGlobalEnvironment.ReadOnly.ast_environment global_environment
239+
in
240+
Analysis.AstEnvironment.ReadOnly.get_real_path_relative
241+
~configuration
242+
ast_environment
243+
qualifier
244+
in
245+
Infer.run_infer ~configuration ~scheduler ~filename_lookup environment_data)
237246
in
238247
if debug then
239248
Memory.report_statistics ();

source/command/newInferCommand.ml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,23 @@ module InferConfiguration = struct
206206
()
207207
end
208208

209-
let run_infer_local ~configuration () =
209+
let run_infer_local ~configuration ~build_system () =
210210
let result =
211211
Scheduler.with_scheduler ~configuration ~f:(fun scheduler ->
212-
let environment_data = Service.Infer.build_environment_data ~configuration ~scheduler () in
213-
Service.Infer.run_infer ~configuration ~scheduler environment_data)
212+
let ({ Service.Infer.global_environment; _ } as environment_data) =
213+
Service.Infer.build_environment_data ~configuration ~scheduler ()
214+
in
215+
let filename_lookup qualifier =
216+
let ast_environment =
217+
Analysis.AnnotatedGlobalEnvironment.ReadOnly.ast_environment global_environment
218+
in
219+
Newserver.RequestHandler.instantiate_path
220+
~build_system
221+
~configuration
222+
~ast_environment
223+
qualifier
224+
in
225+
Service.Infer.run_infer ~configuration ~scheduler ~filename_lookup environment_data)
214226
in
215227
if configuration.debug then
216228
Memory.report_statistics ();
@@ -300,7 +312,7 @@ let run_infer infer_configuration =
300312
Newserver.BuildSystem.with_build_system source_paths ~f:(fun build_system ->
301313
let configuration = InferConfiguration.analysis_configuration_of infer_configuration in
302314
match infer_mode with
303-
| InferMode.Local -> run_infer_local ~configuration ()
315+
| InferMode.Local -> run_infer_local ~configuration ~build_system ()
304316
| InferMode.Interprocedural -> run_infer_interprocedural ~configuration ~build_system ())
305317

306318

source/interprocedural_analyses/type_inference/test/typeInferenceGlobalTest.ml

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -127,37 +127,11 @@ let serialization_test context =
127127
~expected:
128128
{|
129129
{
130-
"globals": [
131-
{
132-
"name": "x",
133-
"location": { "qualifier": "test", "path": "test.py", "line": 4 },
134-
"annotation": "int"
135-
}
136-
],
137-
"attributes": [
138-
{
139-
"parent": "C",
140-
"name": "x",
141-
"location": { "qualifier": "test", "path": "test.py", "line": 7 },
142-
"annotation": "int"
143-
}
144-
],
145-
"defines": [
146-
{
147-
"name": "test.needs_return",
148-
"parent": null,
149-
"return": "int",
150-
"parameters": [
151-
{ "name": "y", "annotation": "int", "value": null, "index": 0 },
152-
{ "name": "x", "annotation": "int", "value": null, "index": 1 }
153-
],
154-
"decorators": [ "functools.lru_cache(4)" ],
155-
"location": { "qualifier": "test", "path": "test.py", "line": 13 },
156-
"async": false
157-
}
158-
]
130+
"globals": [],
131+
"attributes": [],
132+
"defines": []
159133
}
160-
|}
134+
|}
161135
()
162136
163137
@@ -281,14 +255,7 @@ let attribute_widen_test context =
281255
{|
282256
{
283257
"globals": [],
284-
"attributes": [
285-
{
286-
"parent": "Foo",
287-
"name": "x",
288-
"location": { "qualifier": "test", "path": "test.py", "line": 3 },
289-
"annotation": "typing.Optional[int]"
290-
}
291-
],
258+
"attributes": [],
292259
"defines": []
293260
}
294261
|}

source/interprocedural_analyses/type_inference/test/typeInferenceLocalTest.ml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,17 @@ module Setup = struct
200200
let run_inference ~context ~target code =
201201
let environment, configuration = set_up_project ~context code in
202202
let global_resolution = environment |> TypeEnvironment.ReadOnly.global_resolution in
203+
let ast_environment = GlobalResolution.ast_environment global_resolution in
203204
let source =
204-
let ast_environment = GlobalResolution.ast_environment global_resolution in
205205
AstEnvironment.ReadOnly.get_processed_source ast_environment (Reference.create "test")
206206
|> fun option -> Option.value_exn option
207207
in
208208
let module_results =
209-
TypeInference.Local.infer_for_module ~configuration ~global_resolution ~source
209+
TypeInference.Local.infer_for_module
210+
~configuration
211+
~global_resolution
212+
~filename_lookup:(Analysis.AstEnvironment.ReadOnly.get_relative ast_environment)
213+
~source
210214
in
211215
let is_target local_result =
212216
let name = LocalResult.define_name local_result in

source/interprocedural_analyses/type_inference/typeInferenceAnalysis.ml

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,10 @@ module Analyzer = struct
2626

2727

2828
let analyze ~environment ~callable:_ ~qualifier ~define ~existing:_ =
29-
let configuration = TypeInferenceSharedMemory.get_configuration () in
3029
let global_resolution = TypeEnvironment.ReadOnly.global_resolution environment in
31-
let ast_environment = GlobalResolution.ast_environment global_resolution in
32-
let maybe_source = AstEnvironment.ReadOnly.get_processed_source ast_environment qualifier in
3330
let result =
34-
match maybe_source with
35-
| Some source ->
36-
TypeInferenceLocal.infer_for_define
37-
~configuration
38-
~global_resolution
39-
~source
40-
~qualifier
41-
~define
42-
| _ ->
43-
TypeInferenceLocal.empty_infer_for_define
44-
~configuration
45-
~global_resolution
46-
~qualifier
47-
~define
31+
(* FIXME: Actually do something as opposed to always returning empty result. *)
32+
TypeInferenceLocal.empty_infer_for_define ~global_resolution ~qualifier ~define
4833
in
4934
result, TypeInferenceDomain.bottom
5035

source/interprocedural_analyses/type_inference/typeInferenceData.ml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@ let type_to_reference type_ = type_ |> type_to_string |> Reference.create
1616

1717
let expression_to_json expression = `String (expression |> Expression.sanitized |> Expression.show)
1818

19-
let lookup ~configuration ~global_resolution reference =
20-
GlobalResolution.ast_environment global_resolution
21-
|> fun ast_environment ->
22-
AstEnvironment.ReadOnly.get_real_path_relative ~configuration ast_environment reference
23-
24-
2519
module SerializableReference = struct
2620
type t = Reference.t [@@deriving compare, eq, sexp, hash, show]
2721

source/interprocedural_analyses/type_inference/typeInferenceData.mli

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@
55
* LICENSE file in the root directory of this source tree.
66
*)
77

8-
val lookup
9-
: configuration:Configuration.Analysis.t ->
10-
global_resolution:Analysis.GlobalResolution.t ->
11-
Ast.Reference.t ->
12-
string option
13-
148
val type_to_reference : Type.t -> Ast.Reference.t
159

1610
module Inference : sig

source/interprocedural_analyses/type_inference/typeInferenceLocal.ml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -972,7 +972,7 @@ let legacy_infer_for_define
972972
[]
973973

974974

975-
let infer_for_define ~configuration ~global_resolution ~source ~qualifier ~define =
975+
let infer_for_define ~configuration ~global_resolution ~source ~qualifier ~filename_lookup ~define =
976976
let abstract =
977977
let { Node.value = { Define.signature; _ }; _ } = define in
978978
Define.Signature.is_abstract_method signature
@@ -1000,25 +1000,25 @@ let infer_for_define ~configuration ~global_resolution ~source ~qualifier ~defin
10001000
raw |> Inference.create |> LocalResult.add_inference ~global_resolution ~lookup result
10011001
in
10021002
let errors = legacy_infer_for_define ~configuration ~global_resolution ~source ~define in
1003-
let lookup = TypeInferenceData.lookup ~configuration ~global_resolution in
10041003
List.fold
1005-
~init:(LocalResult.from_signature ~global_resolution ~lookup ~qualifier define)
1006-
~f:(add_missing_annotation_error ~global_resolution ~lookup)
1004+
~init:(LocalResult.from_signature ~global_resolution ~lookup:filename_lookup ~qualifier define)
1005+
~f:(add_missing_annotation_error ~global_resolution ~lookup:filename_lookup)
10071006
errors
10081007

10091008

1010-
let empty_infer_for_define ~configuration ~global_resolution ~qualifier ~define =
1011-
let lookup = TypeInferenceData.lookup ~configuration ~global_resolution in
1009+
let empty_infer_for_define ~global_resolution ~qualifier ~define =
1010+
let lookup _ = None in
10121011
TypeInferenceData.LocalResult.from_signature ~global_resolution ~lookup ~qualifier define
10131012

10141013

10151014
let infer_for_module
10161015
~configuration
10171016
~global_resolution
1017+
~filename_lookup
10181018
~source:({ Ast.Source.source_path = { qualifier; _ } as source_path; _ } as source)
10191019
=
10201020
Log.debug "Running infer for %s..." source_path.relative;
10211021
let check define =
1022-
infer_for_define ~configuration ~global_resolution ~source ~qualifier ~define
1022+
infer_for_define ~configuration ~global_resolution ~source ~qualifier ~filename_lookup ~define
10231023
in
10241024
source |> Preprocessing.defines ~include_toplevels:true |> List.map ~f:check

source/interprocedural_analyses/type_inference/typeInferenceLocal.mli

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,19 @@ val infer_for_define
3434
global_resolution:Analysis.GlobalResolution.t ->
3535
source:Ast.Source.t ->
3636
qualifier:Ast.Reference.t ->
37+
filename_lookup:(Ast.Reference.t -> string option) ->
3738
define:Ast.Statement.Define.t Ast.Node.t ->
3839
TypeInferenceData.LocalResult.t
3940

4041
val empty_infer_for_define
41-
: configuration:Configuration.Analysis.t ->
42-
global_resolution:Analysis.GlobalResolution.t ->
42+
: global_resolution:Analysis.GlobalResolution.t ->
4343
qualifier:Ast.Reference.t ->
4444
define:Ast.Statement.Define.t Ast.Node.t ->
4545
TypeInferenceData.LocalResult.t
4646

4747
val infer_for_module
4848
: configuration:Configuration.Analysis.t ->
4949
global_resolution:Analysis.GlobalResolution.t ->
50+
filename_lookup:(Ast.Reference.t -> string option) ->
5051
source:Ast.Source.t ->
5152
TypeInferenceData.LocalResult.t list

source/service/infer.ml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,19 @@ let build_environment_data
6161
{ global_environment; qualifiers }
6262

6363

64-
let run_infer ~configuration ~scheduler { global_environment; qualifiers } =
64+
let run_infer ~configuration ~scheduler ~filename_lookup { global_environment; qualifiers } =
6565
Log.info "Running inference...";
6666
let timer = Timer.start () in
6767
let global_resolution = GlobalResolution.create global_environment in
6868
let ast_environment = GlobalResolution.ast_environment global_resolution in
6969
let map _ qualifiers =
7070
let analyze_qualifier qualifier =
7171
let analyze_source source =
72-
TypeInference.Local.infer_for_module ~configuration ~global_resolution ~source
72+
TypeInference.Local.infer_for_module
73+
~configuration
74+
~global_resolution
75+
~filename_lookup
76+
~source
7377
in
7478
AstEnvironment.ReadOnly.get_processed_source ast_environment qualifier >>| analyze_source
7579
in

0 commit comments

Comments
 (0)