Remove array_cast option from tco_migration_flags list
[hiphop-php.git] / hphp / hack / src / options / globalOptions.ml
blob5bdbd8568479fefa49a07bba6ca043d349a019b0
1 (*
2 * Copyright (c) 2015, Facebook, Inc.
3 * All rights reserved.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
8 *)
10 open Hh_prelude
12 type t = {
13 tco_experimental_features: SSet.t;
14 tco_migration_flags: SSet.t;
15 tco_num_local_workers: int option;
16 tco_parallel_type_checking_threshold: int;
17 tco_max_typechecker_worker_memory_mb: int option;
18 tco_defer_class_declaration_threshold: int option;
19 tco_prefetch_deferred_files: bool;
20 tco_remote_type_check_threshold: int option;
21 tco_remote_type_check: bool;
22 tco_remote_worker_key: string option;
23 tco_remote_check_id: string option;
24 tco_remote_max_batch_size: int;
25 tco_remote_min_batch_size: int;
26 tco_num_remote_workers: int;
27 tco_stream_errors: bool;
28 so_remote_version_specifier: string option;
29 so_remote_worker_vfs_checkout_threshold: int;
30 so_naming_sqlite_path: string option;
31 po_auto_namespace_map: (string * string) list;
32 po_codegen: bool;
33 po_deregister_php_stdlib: bool;
34 po_disallow_toplevel_requires: bool;
35 po_allow_unstable_features: bool;
36 tco_log_inference_constraints: bool;
37 tco_language_feature_logging: bool;
38 tco_timeout: int;
39 tco_disallow_invalid_arraykey: bool;
40 tco_disallow_byref_dynamic_calls: bool;
41 tco_disallow_byref_calls: bool;
42 allowed_fixme_codes_strict: ISet.t;
43 allowed_fixme_codes_partial: ISet.t;
44 codes_not_raised_partial: ISet.t;
45 log_levels: int SMap.t;
46 po_disable_lval_as_an_expression: bool;
47 tco_shallow_class_decl: bool;
48 tco_force_shallow_decl_fanout: bool;
49 tco_fetch_remote_old_decls: bool;
50 tco_force_load_hot_shallow_decls: bool;
51 tco_skip_hierarchy_checks: bool;
52 po_rust_parser_errors: bool;
53 tco_like_type_hints: bool;
54 tco_union_intersection_type_hints: bool;
55 tco_coeffects: bool;
56 tco_coeffects_local: bool;
57 tco_strict_contexts: bool;
58 tco_like_casts: bool;
59 tco_simple_pessimize: float;
60 tco_complex_coercion: bool;
61 error_codes_treated_strictly: ISet.t;
62 tco_check_xhp_attribute: bool;
63 tco_check_redundant_generics: bool;
64 tco_disallow_unresolved_type_variables: bool;
65 tco_disallow_trait_reuse: bool;
66 tco_disallow_invalid_arraykey_constraint: bool;
67 po_enable_class_level_where_clauses: bool;
68 po_disable_legacy_soft_typehints: bool;
69 po_allowed_decl_fixme_codes: ISet.t;
70 po_allow_new_attribute_syntax: bool;
71 tco_global_inference: bool;
72 tco_gi_reinfer_types: string list;
73 tco_ordered_solving: bool;
74 tco_const_static_props: bool;
75 po_disable_legacy_attribute_syntax: bool;
76 tco_const_attribute: bool;
77 po_const_default_func_args: bool;
78 po_const_default_lambda_args: bool;
79 po_disallow_silence: bool;
80 po_abstract_static_props: bool;
81 po_disable_unset_class_const: bool;
82 po_parser_errors_only: bool;
83 tco_check_attribute_locations: bool;
84 glean_service: string;
85 glean_hostname: string;
86 glean_port: int;
87 glean_reponame: string;
88 symbol_write_root_path: string;
89 symbol_write_hhi_path: string;
90 symbol_write_ignore_paths: string list;
91 symbol_write_index_paths: string list;
92 symbol_write_index_paths_file: string option;
93 symbol_write_index_paths_file_output: string option;
94 symbol_write_include_hhi: bool;
95 po_disallow_func_ptrs_in_constants: bool;
96 tco_error_php_lambdas: bool;
97 tco_disallow_discarded_nullable_awaitables: bool;
98 po_enable_xhp_class_modifier: bool;
99 po_disable_xhp_element_mangling: bool;
100 po_disable_xhp_children_declarations: bool;
101 po_enable_enum_classes: bool;
102 po_disable_hh_ignore_error: bool;
103 po_disable_array: bool;
104 po_disable_array_typehint: bool;
105 tco_enable_systemlib_annotations: bool;
106 tco_higher_kinded_types: bool;
107 tco_method_call_inference: bool;
108 tco_report_pos_from_reason: bool;
109 tco_typecheck_sample_rate: float;
110 tco_enable_sound_dynamic: bool;
111 po_disallow_fun_and_cls_meth_pseudo_funcs: bool;
112 po_disallow_inst_meth: bool;
113 tco_use_direct_decl_parser: bool;
114 tco_ifc_enabled: string list;
115 tco_global_write_check_enabled: string list;
116 po_enable_enum_supertyping: bool;
117 po_interpret_soft_types_as_like_types: bool;
118 tco_enable_strict_string_concat_interp: bool;
119 tco_ignore_unsafe_cast: bool;
120 tco_readonly: bool;
121 tco_enable_expression_trees: bool;
122 tco_enable_modules: bool;
123 tco_allowed_expression_tree_visitors: string list;
124 tco_math_new_code: bool;
125 tco_typeconst_concrete_concrete_error: bool;
126 tco_enable_strict_const_semantics: bool;
127 tco_meth_caller_only_public_visibility: bool;
128 tco_require_extends_implements_ancestors: bool;
129 tco_strict_value_equality: bool;
130 tco_enforce_sealed_subclasses: bool;
131 tco_everything_sdt: bool;
132 tco_pessimise_builtins: bool;
133 tco_enable_disk_heap: bool;
134 tco_explicit_consistent_constructors: int;
135 tco_type_printer_fuel: int;
137 [@@deriving eq, show]
140 * Insist on instantiations for all generic types, even in non-strict files
142 let tco_experimental_generics_arity = "generics_arity"
145 * Forbid casting nullable values, since they have unexpected semantics. For
146 * example, casting `null` to an int results in `0`, which may or may not be
147 * what you were expecting.
149 let tco_experimental_forbid_nullable_cast = "forbid_nullable_cast"
152 * Disallow static memoized functions in non-final classes
155 let tco_experimental_disallow_static_memoized = "disallow_static_memoized"
158 * Prevent type param names from shadowing class names
160 let tco_experimental_type_param_shadowing = "type_param_shadowing"
163 * Enable abstract const type with default syntax, i.e.
164 * abstract const type T as num = int;
166 let tco_experimental_abstract_type_const_with_default =
167 "abstract_type_const_with_default"
170 * Allow typechecker to do global inference and infer IFC flows
171 * with the <<InferFlows>> flag
174 let tco_experimental_infer_flows = "ifc_infer_flows"
177 * Allow typechecker to raise error when inheriting members
178 * that differ only by case
180 let tco_experimental_case_sensitive_inheritance = "case_sensitive_inheritance"
182 let tco_experimental_supportdynamic_type_hint = "supportdynamic_type_hint"
184 let tco_experimental_all =
185 List.fold_right
186 ~f:SSet.add
187 ~init:SSet.empty
189 tco_experimental_generics_arity;
190 tco_experimental_forbid_nullable_cast;
191 tco_experimental_disallow_static_memoized;
192 tco_experimental_abstract_type_const_with_default;
193 tco_experimental_infer_flows;
194 tco_experimental_case_sensitive_inheritance;
195 tco_experimental_supportdynamic_type_hint;
198 let tco_migration_flags_all = List.fold_right ~init:SSet.empty ~f:SSet.add []
200 let default =
202 (* Default all features for testing. Actual options are set by reading
203 * from hhconfig, which defaults to empty. *)
204 tco_experimental_features = tco_experimental_all;
205 tco_migration_flags = SSet.empty;
206 tco_num_local_workers = None;
207 tco_parallel_type_checking_threshold = 10;
208 tco_max_typechecker_worker_memory_mb = None;
209 tco_defer_class_declaration_threshold = None;
210 tco_prefetch_deferred_files = false;
211 tco_remote_type_check_threshold = None;
212 tco_remote_type_check = true;
213 tco_remote_worker_key = None;
214 tco_remote_check_id = None;
215 tco_remote_max_batch_size = 8_000;
216 tco_remote_min_batch_size = 5_000;
217 tco_num_remote_workers = 4;
218 tco_stream_errors = false;
219 so_remote_version_specifier = None;
220 so_remote_worker_vfs_checkout_threshold = 10000;
221 so_naming_sqlite_path = None;
222 po_auto_namespace_map = [];
223 po_codegen = false;
224 po_disallow_toplevel_requires = false;
225 po_deregister_php_stdlib = false;
226 po_allow_unstable_features = false;
227 tco_log_inference_constraints = false;
228 tco_language_feature_logging = false;
229 tco_timeout = 0;
230 tco_disallow_invalid_arraykey = true;
231 tco_disallow_byref_dynamic_calls = false;
232 tco_disallow_byref_calls = true;
233 allowed_fixme_codes_strict = ISet.empty;
234 allowed_fixme_codes_partial = ISet.empty;
235 codes_not_raised_partial = ISet.empty;
236 log_levels = SMap.empty;
237 po_disable_lval_as_an_expression = true;
238 tco_shallow_class_decl = false;
239 tco_force_shallow_decl_fanout = false;
240 tco_fetch_remote_old_decls = false;
241 tco_force_load_hot_shallow_decls = false;
242 tco_skip_hierarchy_checks = false;
243 po_rust_parser_errors = false;
244 tco_like_type_hints = false;
245 tco_union_intersection_type_hints = false;
246 tco_coeffects = true;
247 tco_coeffects_local = true;
248 tco_strict_contexts = true;
249 tco_like_casts = false;
250 tco_simple_pessimize = 0.0;
251 tco_complex_coercion = false;
252 error_codes_treated_strictly = ISet.of_list [];
253 tco_check_xhp_attribute = false;
254 tco_check_redundant_generics = false;
255 tco_disallow_unresolved_type_variables = false;
256 tco_disallow_trait_reuse = false;
257 tco_disallow_invalid_arraykey_constraint = false;
258 po_enable_class_level_where_clauses = false;
259 po_disable_legacy_soft_typehints = true;
260 po_allowed_decl_fixme_codes = ISet.of_list [];
261 po_allow_new_attribute_syntax = false;
262 tco_global_inference = false;
263 tco_gi_reinfer_types = [];
264 tco_ordered_solving = false;
265 tco_const_static_props = false;
266 po_disable_legacy_attribute_syntax = false;
267 tco_const_attribute = false;
268 po_const_default_func_args = false;
269 po_const_default_lambda_args = false;
270 po_disallow_silence = false;
271 po_abstract_static_props = false;
272 po_disable_unset_class_const = false;
273 po_parser_errors_only = false;
274 tco_check_attribute_locations = true;
275 glean_service = "";
276 glean_hostname = "";
277 glean_port = 0;
278 glean_reponame = "www.autocomplete";
279 symbol_write_root_path = "www";
280 symbol_write_hhi_path = "hhi";
281 symbol_write_ignore_paths = [];
282 symbol_write_index_paths = [];
283 symbol_write_index_paths_file = None;
284 symbol_write_index_paths_file_output = None;
285 symbol_write_include_hhi = true;
286 po_disallow_func_ptrs_in_constants = false;
287 tco_error_php_lambdas = false;
288 tco_disallow_discarded_nullable_awaitables = false;
289 po_enable_xhp_class_modifier = true;
290 po_disable_xhp_element_mangling = true;
291 po_disable_xhp_children_declarations = true;
292 po_enable_enum_classes = true;
293 po_disable_hh_ignore_error = false;
294 po_disable_array = true;
295 po_disable_array_typehint = true;
296 tco_enable_systemlib_annotations = false;
297 tco_higher_kinded_types = false;
298 tco_method_call_inference = false;
299 tco_report_pos_from_reason = false;
300 tco_typecheck_sample_rate = 1.0;
301 tco_enable_sound_dynamic = false;
302 po_disallow_fun_and_cls_meth_pseudo_funcs = false;
303 po_disallow_inst_meth = false;
304 tco_use_direct_decl_parser = false;
305 tco_ifc_enabled = [];
306 tco_global_write_check_enabled = [];
307 po_enable_enum_supertyping = false;
308 po_interpret_soft_types_as_like_types = false;
309 tco_enable_strict_string_concat_interp = false;
310 tco_ignore_unsafe_cast = false;
311 tco_readonly = false;
312 tco_enable_expression_trees = false;
313 tco_enable_modules = false;
314 tco_allowed_expression_tree_visitors = [];
315 tco_math_new_code = false;
316 tco_typeconst_concrete_concrete_error = false;
317 tco_enable_strict_const_semantics = false;
318 tco_meth_caller_only_public_visibility = true;
319 tco_require_extends_implements_ancestors = false;
320 tco_strict_value_equality = false;
321 tco_enforce_sealed_subclasses = false;
322 tco_everything_sdt = false;
323 tco_pessimise_builtins = false;
324 tco_enable_disk_heap = true;
325 tco_explicit_consistent_constructors = 0;
326 tco_type_printer_fuel = 100;
329 let make
330 ?(po_deregister_php_stdlib = default.po_deregister_php_stdlib)
331 ?(po_disallow_toplevel_requires = default.po_disallow_toplevel_requires)
332 ?(tco_log_inference_constraints = default.tco_log_inference_constraints)
333 ?(tco_experimental_features = default.tco_experimental_features)
334 ?(tco_migration_flags = default.tco_migration_flags)
335 ?tco_num_local_workers
336 ?(tco_parallel_type_checking_threshold =
337 default.tco_parallel_type_checking_threshold)
338 ?tco_max_typechecker_worker_memory_mb
339 ?tco_defer_class_declaration_threshold
340 ?(tco_prefetch_deferred_files = default.tco_prefetch_deferred_files)
341 ?tco_remote_type_check_threshold
342 ?(tco_remote_type_check = default.tco_remote_type_check)
343 ?tco_remote_worker_key
344 ?tco_remote_check_id
345 ?(tco_remote_max_batch_size = default.tco_remote_max_batch_size)
346 ?(tco_remote_min_batch_size = default.tco_remote_min_batch_size)
347 ?(tco_num_remote_workers = default.tco_num_remote_workers)
348 ?(tco_stream_errors = default.tco_stream_errors)
349 ?so_remote_version_specifier
350 ?(so_remote_worker_vfs_checkout_threshold =
351 default.so_remote_worker_vfs_checkout_threshold)
352 ?so_naming_sqlite_path
353 ?(po_auto_namespace_map = default.po_auto_namespace_map)
354 ?(tco_language_feature_logging = default.tco_language_feature_logging)
355 ?(tco_timeout = default.tco_timeout)
356 ?(tco_disallow_invalid_arraykey = default.tco_disallow_invalid_arraykey)
357 ?(tco_disallow_byref_dynamic_calls =
358 default.tco_disallow_byref_dynamic_calls)
359 ?(tco_disallow_byref_calls = default.tco_disallow_byref_calls)
360 ?(allowed_fixme_codes_strict = default.allowed_fixme_codes_strict)
361 ?(allowed_fixme_codes_partial = default.allowed_fixme_codes_partial)
362 ?(codes_not_raised_partial = default.codes_not_raised_partial)
363 ?(log_levels = default.log_levels)
364 ?(po_disable_lval_as_an_expression =
365 default.po_disable_lval_as_an_expression)
366 ?(tco_shallow_class_decl = default.tco_shallow_class_decl)
367 ?(tco_force_shallow_decl_fanout = default.tco_force_shallow_decl_fanout)
368 ?(tco_fetch_remote_old_decls = default.tco_fetch_remote_old_decls)
369 ?(tco_force_load_hot_shallow_decls =
370 default.tco_force_load_hot_shallow_decls)
371 ?(tco_skip_hierarchy_checks = default.tco_skip_hierarchy_checks)
372 ?(po_rust_parser_errors = default.po_rust_parser_errors)
373 ?(tco_like_type_hints = default.tco_like_type_hints)
374 ?(tco_union_intersection_type_hints =
375 default.tco_union_intersection_type_hints)
376 ?(tco_coeffects = default.tco_coeffects)
377 ?(tco_coeffects_local = default.tco_coeffects_local)
378 ?(tco_strict_contexts = default.tco_strict_contexts)
379 ?(tco_like_casts = default.tco_like_casts)
380 ?(tco_simple_pessimize = default.tco_simple_pessimize)
381 ?(tco_complex_coercion = default.tco_complex_coercion)
382 ?(error_codes_treated_strictly = default.error_codes_treated_strictly)
383 ?(tco_check_xhp_attribute = default.tco_check_xhp_attribute)
384 ?(tco_check_redundant_generics = default.tco_check_redundant_generics)
385 ?(tco_disallow_unresolved_type_variables =
386 default.tco_disallow_unresolved_type_variables)
387 ?(tco_disallow_trait_reuse = default.tco_disallow_trait_reuse)
388 ?(tco_disallow_invalid_arraykey_constraint =
389 default.tco_disallow_invalid_arraykey_constraint)
390 ?(po_enable_class_level_where_clauses =
391 default.po_enable_class_level_where_clauses)
392 ?(po_disable_legacy_soft_typehints =
393 default.po_disable_legacy_soft_typehints)
394 ?(po_allowed_decl_fixme_codes = default.po_allowed_decl_fixme_codes)
395 ?(po_allow_new_attribute_syntax = default.po_allow_new_attribute_syntax)
396 ?(tco_global_inference = default.tco_global_inference)
397 ?(tco_gi_reinfer_types = default.tco_gi_reinfer_types)
398 ?(tco_ordered_solving = default.tco_ordered_solving)
399 ?(tco_const_static_props = default.tco_const_static_props)
400 ?(po_disable_legacy_attribute_syntax =
401 default.po_disable_legacy_attribute_syntax)
402 ?(tco_const_attribute = default.tco_const_attribute)
403 ?(po_const_default_func_args = default.po_const_default_func_args)
404 ?(po_const_default_lambda_args = default.po_const_default_lambda_args)
405 ?(po_disallow_silence = default.po_disallow_silence)
406 ?(po_abstract_static_props = default.po_abstract_static_props)
407 ?(po_disable_unset_class_const = default.po_disable_unset_class_const)
408 ?(po_parser_errors_only = default.po_parser_errors_only)
409 ?(tco_check_attribute_locations = default.tco_check_attribute_locations)
410 ?(glean_service = default.glean_service)
411 ?(glean_hostname = default.glean_hostname)
412 ?(glean_port = default.glean_port)
413 ?(glean_reponame = default.glean_reponame)
414 ?(symbol_write_root_path = default.symbol_write_root_path)
415 ?(symbol_write_hhi_path = default.symbol_write_hhi_path)
416 ?(symbol_write_ignore_paths = default.symbol_write_ignore_paths)
417 ?(symbol_write_index_paths = default.symbol_write_index_paths)
418 ?symbol_write_index_paths_file
419 ?symbol_write_index_paths_file_output
420 ?(symbol_write_include_hhi = default.symbol_write_include_hhi)
421 ?(po_disallow_func_ptrs_in_constants =
422 default.po_disallow_func_ptrs_in_constants)
423 ?(tco_error_php_lambdas = default.tco_error_php_lambdas)
424 ?(tco_disallow_discarded_nullable_awaitables =
425 default.tco_disallow_discarded_nullable_awaitables)
426 ?(po_enable_xhp_class_modifier = default.po_enable_xhp_class_modifier)
427 ?(po_disable_xhp_element_mangling = default.po_disable_xhp_element_mangling)
428 ?(po_disable_xhp_children_declarations =
429 default.po_disable_xhp_children_declarations)
430 ?(po_enable_enum_classes = default.po_enable_enum_classes)
431 ?(po_disable_hh_ignore_error = default.po_disable_hh_ignore_error)
432 ?(po_disable_array = default.po_disable_array)
433 ?(po_disable_array_typehint = default.po_disable_array_typehint)
434 ?(po_allow_unstable_features = default.po_allow_unstable_features)
435 ?(tco_enable_systemlib_annotations =
436 default.tco_enable_systemlib_annotations)
437 ?(tco_higher_kinded_types = default.tco_higher_kinded_types)
438 ?(tco_method_call_inference = default.tco_method_call_inference)
439 ?(tco_report_pos_from_reason = default.tco_report_pos_from_reason)
440 ?(tco_typecheck_sample_rate = default.tco_typecheck_sample_rate)
441 ?(tco_enable_sound_dynamic = default.tco_enable_sound_dynamic)
442 ?(po_disallow_fun_and_cls_meth_pseudo_funcs =
443 default.po_disallow_fun_and_cls_meth_pseudo_funcs)
444 ?(po_disallow_inst_meth = default.po_disallow_inst_meth)
445 ?(tco_use_direct_decl_parser = default.tco_use_direct_decl_parser)
446 ?(tco_ifc_enabled = default.tco_ifc_enabled)
447 ?(tco_global_write_check_enabled = default.tco_global_write_check_enabled)
448 ?(po_enable_enum_supertyping = default.po_enable_enum_supertyping)
449 ?(po_interpret_soft_types_as_like_types =
450 default.po_interpret_soft_types_as_like_types)
451 ?(tco_enable_strict_string_concat_interp =
452 default.tco_enable_strict_string_concat_interp)
453 ?(tco_ignore_unsafe_cast = default.tco_ignore_unsafe_cast)
454 ?(tco_readonly = default.tco_readonly)
455 ?(tco_enable_expression_trees = default.tco_enable_expression_trees)
456 ?(tco_enable_modules = default.tco_enable_modules)
457 ?(tco_allowed_expression_tree_visitors =
458 default.tco_allowed_expression_tree_visitors)
459 ?(tco_math_new_code = default.tco_math_new_code)
460 ?(tco_typeconst_concrete_concrete_error =
461 default.tco_typeconst_concrete_concrete_error)
462 ?(tco_enable_strict_const_semantics =
463 default.tco_enable_strict_const_semantics)
464 ?(tco_meth_caller_only_public_visibility =
465 default.tco_meth_caller_only_public_visibility)
466 ?(tco_require_extends_implements_ancestors =
467 default.tco_require_extends_implements_ancestors)
468 ?(tco_strict_value_equality = default.tco_strict_value_equality)
469 ?(tco_enforce_sealed_subclasses = default.tco_enforce_sealed_subclasses)
470 ?(tco_everything_sdt = default.tco_everything_sdt)
471 ?(tco_pessimise_builtins = default.tco_pessimise_builtins)
472 ?(tco_enable_disk_heap = default.tco_enable_disk_heap)
473 ?(tco_explicit_consistent_constructors =
474 default.tco_explicit_consistent_constructors)
475 ?(tco_type_printer_fuel = default.tco_type_printer_fuel)
476 () =
478 tco_experimental_features;
479 tco_migration_flags;
480 tco_num_local_workers;
481 tco_parallel_type_checking_threshold;
482 tco_max_typechecker_worker_memory_mb;
483 tco_defer_class_declaration_threshold;
484 tco_prefetch_deferred_files;
485 tco_remote_type_check_threshold;
486 tco_remote_type_check;
487 tco_remote_worker_key;
488 tco_remote_check_id;
489 tco_remote_max_batch_size;
490 tco_remote_min_batch_size;
491 tco_num_remote_workers;
492 tco_stream_errors;
493 so_remote_version_specifier;
494 so_remote_worker_vfs_checkout_threshold;
495 so_naming_sqlite_path;
496 po_auto_namespace_map;
497 po_codegen = false;
498 allowed_fixme_codes_strict;
499 allowed_fixme_codes_partial;
500 codes_not_raised_partial;
501 po_deregister_php_stdlib;
502 po_disallow_toplevel_requires;
503 po_allow_unstable_features;
504 tco_log_inference_constraints;
505 tco_language_feature_logging;
506 tco_timeout;
507 tco_disallow_invalid_arraykey;
508 tco_disallow_byref_dynamic_calls;
509 tco_disallow_byref_calls;
510 log_levels;
511 po_disable_lval_as_an_expression;
512 tco_shallow_class_decl;
513 tco_force_shallow_decl_fanout;
514 tco_fetch_remote_old_decls;
515 tco_force_load_hot_shallow_decls;
516 tco_skip_hierarchy_checks;
517 po_rust_parser_errors;
518 tco_like_type_hints;
519 tco_union_intersection_type_hints;
520 tco_coeffects;
521 tco_coeffects_local;
522 tco_strict_contexts;
523 tco_like_casts;
524 tco_simple_pessimize;
525 tco_complex_coercion;
526 error_codes_treated_strictly;
527 tco_check_xhp_attribute;
528 tco_check_redundant_generics;
529 tco_disallow_unresolved_type_variables;
530 tco_disallow_trait_reuse;
531 tco_disallow_invalid_arraykey_constraint;
532 po_enable_class_level_where_clauses;
533 po_disable_legacy_soft_typehints;
534 po_allowed_decl_fixme_codes;
535 po_allow_new_attribute_syntax;
536 tco_global_inference;
537 tco_gi_reinfer_types;
538 tco_ordered_solving;
539 tco_const_static_props;
540 po_disable_legacy_attribute_syntax;
541 tco_const_attribute;
542 po_const_default_func_args;
543 po_const_default_lambda_args;
544 po_disallow_silence;
545 po_abstract_static_props;
546 po_disable_unset_class_const;
547 po_parser_errors_only;
548 tco_check_attribute_locations;
549 glean_service;
550 glean_hostname;
551 glean_port;
552 glean_reponame;
553 symbol_write_root_path;
554 symbol_write_hhi_path;
555 symbol_write_ignore_paths;
556 symbol_write_index_paths;
557 symbol_write_index_paths_file;
558 symbol_write_index_paths_file_output;
559 symbol_write_include_hhi;
560 po_disallow_func_ptrs_in_constants;
561 tco_error_php_lambdas;
562 tco_disallow_discarded_nullable_awaitables;
563 po_enable_xhp_class_modifier;
564 po_disable_xhp_element_mangling;
565 po_disable_xhp_children_declarations;
566 po_enable_enum_classes;
567 po_disable_hh_ignore_error;
568 po_disable_array;
569 po_disable_array_typehint;
570 tco_enable_systemlib_annotations;
571 tco_higher_kinded_types;
572 tco_method_call_inference;
573 tco_report_pos_from_reason;
574 tco_typecheck_sample_rate;
575 tco_enable_sound_dynamic;
576 po_disallow_fun_and_cls_meth_pseudo_funcs;
577 po_disallow_inst_meth;
578 tco_use_direct_decl_parser;
579 tco_ifc_enabled;
580 tco_global_write_check_enabled;
581 po_enable_enum_supertyping;
582 po_interpret_soft_types_as_like_types;
583 tco_enable_strict_string_concat_interp;
584 tco_ignore_unsafe_cast;
585 tco_readonly;
586 tco_enable_expression_trees;
587 tco_enable_modules;
588 tco_allowed_expression_tree_visitors;
589 tco_math_new_code;
590 tco_typeconst_concrete_concrete_error;
591 tco_enable_strict_const_semantics;
592 tco_meth_caller_only_public_visibility;
593 tco_require_extends_implements_ancestors;
594 tco_strict_value_equality;
595 tco_enforce_sealed_subclasses;
596 tco_everything_sdt;
597 tco_pessimise_builtins;
598 tco_enable_disk_heap;
599 tco_explicit_consistent_constructors;
600 tco_type_printer_fuel;
603 let tco_experimental_feature_enabled t s =
604 SSet.mem s t.tco_experimental_features
606 let tco_migration_flag_enabled t s = SSet.mem s t.tco_migration_flags
608 let tco_num_local_workers t = t.tco_num_local_workers
610 let tco_parallel_type_checking_threshold t =
611 t.tco_parallel_type_checking_threshold
613 let tco_max_typechecker_worker_memory_mb t =
614 t.tco_max_typechecker_worker_memory_mb
616 let tco_defer_class_declaration_threshold t =
617 t.tco_defer_class_declaration_threshold
619 let tco_prefetch_deferred_files t = t.tco_prefetch_deferred_files
621 let tco_remote_type_check_threshold t = t.tco_remote_type_check_threshold
623 let tco_remote_type_check t = t.tco_remote_type_check
625 let tco_remote_worker_key t = t.tco_remote_worker_key
627 let tco_remote_check_id t = t.tco_remote_check_id
629 let tco_remote_max_batch_size t = t.tco_remote_max_batch_size
631 let tco_remote_min_batch_size t = t.tco_remote_min_batch_size
633 let tco_num_remote_workers t = t.tco_num_remote_workers
635 let tco_stream_errors t = t.tco_stream_errors
637 let so_remote_version_specifier t = t.so_remote_version_specifier
639 let so_remote_worker_vfs_checkout_threshold t =
640 t.so_remote_worker_vfs_checkout_threshold
642 let so_naming_sqlite_path t = t.so_naming_sqlite_path
644 let po_auto_namespace_map t = t.po_auto_namespace_map
646 let po_deregister_php_stdlib t = t.po_deregister_php_stdlib
648 let tco_log_inference_constraints t = t.tco_log_inference_constraints
650 let po_codegen t = t.po_codegen
652 let po_disallow_toplevel_requires t = t.po_disallow_toplevel_requires
654 let tco_language_feature_logging t = t.tco_language_feature_logging
656 let tco_timeout t = t.tco_timeout
658 let tco_disallow_invalid_arraykey t = t.tco_disallow_invalid_arraykey
660 let tco_disallow_invalid_arraykey_constraint t =
661 t.tco_disallow_invalid_arraykey_constraint
663 let tco_disallow_byref_dynamic_calls t = t.tco_disallow_byref_dynamic_calls
665 let tco_disallow_byref_calls t = t.tco_disallow_byref_calls
667 let allowed_fixme_codes_strict t = t.allowed_fixme_codes_strict
669 let allowed_fixme_codes_partial t = t.allowed_fixme_codes_partial
671 let codes_not_raised_partial t = t.codes_not_raised_partial
673 let log_levels t = t.log_levels
675 let po_disable_lval_as_an_expression t = t.po_disable_lval_as_an_expression
677 let tco_shallow_class_decl t = t.tco_shallow_class_decl
679 let tco_force_shallow_decl_fanout t = t.tco_force_shallow_decl_fanout
681 let tco_fetch_remote_old_decls t = t.tco_fetch_remote_old_decls
683 let tco_force_load_hot_shallow_decls t = t.tco_force_load_hot_shallow_decls
685 let tco_skip_hierarchy_checks t = t.tco_skip_hierarchy_checks
687 let po_rust_parser_errors t = t.po_rust_parser_errors
689 let tco_like_type_hints t = t.tco_like_type_hints
691 let tco_union_intersection_type_hints t = t.tco_union_intersection_type_hints
693 let tco_call_coeffects t = t.tco_coeffects
695 let tco_local_coeffects t = t.tco_coeffects_local
697 let tco_strict_contexts t = t.tco_strict_contexts
699 let ifc_enabled t = t.tco_ifc_enabled
701 (* Fully enable IFC on the tcopt *)
702 let enable_ifc t = { t with tco_ifc_enabled = ["/"] }
704 let global_write_check_enabled t = t.tco_global_write_check_enabled
706 let enable_global_write_check t =
707 { t with tco_global_write_check_enabled = ["/"] }
709 let tco_like_casts t = t.tco_like_casts
711 let tco_simple_pessimize t = t.tco_simple_pessimize
713 let tco_complex_coercion t = t.tco_complex_coercion
715 let error_codes_treated_strictly t = t.error_codes_treated_strictly
717 let tco_check_xhp_attribute t = t.tco_check_xhp_attribute
719 let tco_check_redundant_generics t = t.tco_check_redundant_generics
721 let tco_disallow_unresolved_type_variables t =
722 t.tco_disallow_unresolved_type_variables
724 let tco_disallow_trait_reuse t = t.tco_disallow_trait_reuse
726 let po_enable_class_level_where_clauses t =
727 t.po_enable_class_level_where_clauses
729 let po_disable_legacy_soft_typehints t = t.po_disable_legacy_soft_typehints
731 let po_allowed_decl_fixme_codes t = t.po_allowed_decl_fixme_codes
733 let po_allow_new_attribute_syntax t = t.po_allow_new_attribute_syntax
735 let po_allow_unstable_features t = t.po_allow_unstable_features
737 let tco_global_inference t = t.tco_global_inference
739 let tco_gi_reinfer_types t = t.tco_gi_reinfer_types
741 let tco_ordered_solving t = t.tco_ordered_solving
743 let tco_const_static_props t = t.tco_const_static_props
745 let po_disable_legacy_attribute_syntax t = t.po_disable_legacy_attribute_syntax
747 let tco_const_attribute t = t.tco_const_attribute
749 let po_const_default_func_args t = t.po_const_default_func_args
751 let po_const_default_lambda_args t = t.po_const_default_lambda_args
753 let po_disallow_silence t = t.po_disallow_silence
755 let po_abstract_static_props t = t.po_abstract_static_props
757 let po_disable_unset_class_const t = t.po_disable_unset_class_const
759 let tco_check_attribute_locations t = t.tco_check_attribute_locations
761 let glean_service t = t.glean_service
763 let glean_hostname t = t.glean_hostname
765 let glean_port t = t.glean_port
767 let glean_reponame t = t.glean_reponame
769 let symbol_write_root_path t = t.symbol_write_root_path
771 let symbol_write_hhi_path t = t.symbol_write_hhi_path
773 let symbol_write_ignore_paths t = t.symbol_write_ignore_paths
775 let symbol_write_index_paths t = t.symbol_write_index_paths
777 let symbol_write_index_paths_file t = t.symbol_write_index_paths_file
779 let symbol_write_index_paths_file_output t =
780 t.symbol_write_index_paths_file_output
782 let symbol_write_include_hhi t = t.symbol_write_include_hhi
784 let set_global_inference t = { t with tco_global_inference = true }
786 let set_ordered_solving t b = { t with tco_ordered_solving = b }
788 let set_tco_readonly t b = { t with tco_readonly = b }
790 let tco_readonly t = t.tco_readonly
792 let po_parser_errors_only t = t.po_parser_errors_only
794 let po_disallow_func_ptrs_in_constants t = t.po_disallow_func_ptrs_in_constants
796 let tco_error_php_lambdas t = t.tco_error_php_lambdas
798 let tco_disallow_discarded_nullable_awaitables t =
799 t.tco_disallow_discarded_nullable_awaitables
801 let po_enable_xhp_class_modifier t = t.po_enable_xhp_class_modifier
803 let po_disable_xhp_element_mangling t = t.po_disable_xhp_element_mangling
805 let po_disable_xhp_children_declarations t =
806 t.po_disable_xhp_children_declarations
808 let po_enable_enum_classes t = t.po_enable_enum_classes
810 let po_disable_hh_ignore_error t = t.po_disable_hh_ignore_error
812 let po_disable_array t = t.po_disable_array
814 let po_disable_array_typehint t = t.po_disable_array_typehint
816 let tco_enable_systemlib_annotations t = t.tco_enable_systemlib_annotations
818 let tco_higher_kinded_types t = t.tco_higher_kinded_types
820 let tco_method_call_inference t = t.tco_method_call_inference
822 let tco_report_pos_from_reason t = t.tco_report_pos_from_reason
824 let tco_typecheck_sample_rate t = t.tco_typecheck_sample_rate
826 let tco_enable_sound_dynamic t = t.tco_enable_sound_dynamic
828 let po_disallow_fun_and_cls_meth_pseudo_funcs t =
829 t.po_disallow_fun_and_cls_meth_pseudo_funcs
831 let po_disallow_inst_meth t = t.po_disallow_inst_meth
833 let tco_use_direct_decl_parser t = t.tco_use_direct_decl_parser
835 let po_enable_enum_supertyping t = t.po_enable_enum_supertyping
837 let po_interpret_soft_types_as_like_types t =
838 t.po_interpret_soft_types_as_like_types
840 let tco_enable_strict_string_concat_interp t =
841 t.tco_enable_strict_string_concat_interp
843 let tco_ignore_unsafe_cast t = t.tco_ignore_unsafe_cast
845 let set_tco_enable_expression_trees t b =
846 { t with tco_enable_expression_trees = b }
848 let expression_trees_enabled t = t.tco_enable_expression_trees
850 let tco_enable_modules t = t.tco_enable_modules
852 let set_tco_enable_modules t b = { t with tco_enable_modules = b }
854 let allowed_expression_tree_visitors t = t.tco_allowed_expression_tree_visitors
856 let tco_math_new_code t = t.tco_math_new_code
858 let tco_typeconst_concrete_concrete_error t =
859 t.tco_typeconst_concrete_concrete_error
861 let tco_enable_strict_const_semantics t = t.tco_enable_strict_const_semantics
863 let tco_meth_caller_only_public_visibility t =
864 t.tco_meth_caller_only_public_visibility
866 let tco_require_extends_implements_ancestors t =
867 t.tco_require_extends_implements_ancestors
869 let tco_strict_value_equality t = t.tco_strict_value_equality
871 let tco_enforce_sealed_subclasses t = t.tco_enforce_sealed_subclasses
873 let tco_everything_sdt t = t.tco_everything_sdt
875 let tco_pessimise_builtins t = t.tco_pessimise_builtins
877 let tco_enable_disk_heap t = t.tco_enable_disk_heap
879 let tco_explicit_consistent_constructors t =
880 t.tco_explicit_consistent_constructors
882 let tco_type_printer_fuel t = t.tco_type_printer_fuel