Array unification switch
[hiphop-php.git] / hphp / hack / src / options / globalOptions.mli
blob5f82446cc9e4909daabd04521fbdabfbdc142469
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 (* Naming conventions in this file:
11 - tco_<feature/flag/setting> - type checker option
12 - po_<feature/flag/setting> - parser option
13 - so_<feature/flag/setting> - server option
16 type t = {
17 (* Set of experimental features, in lowercase. *)
18 tco_experimental_features: SSet.t;
19 (* Set of opt-in migration behavior flags, in lowercase. *)
20 tco_migration_flags: SSet.t;
21 (* Whether to treat Tany as Tdynamic *)
22 tco_dynamic_view: bool;
23 (* If set to 0, only the type check delegate's logic will be used.
24 If the delegate fails to type check, the typing check service as a whole
25 will fail. *)
26 tco_num_local_workers: int option;
27 (* If the number of files to type check is fewer than this value, the files
28 will be type checked sequentially (in the master process). Otherwise,
29 the files will be type checked in parallel (in MultiWorker workers). *)
30 tco_parallel_type_checking_threshold: int;
31 (* If set, typechecker workers will quit after they exceed this limit *)
32 tco_max_typechecker_worker_memory_mb: int option;
33 (* If set, defers class declarations after N lazy declarations; if not set,
34 always lazily declares classes not already in cache. *)
35 tco_defer_class_declaration_threshold: int option;
36 (* If set, defers class declarations if worker memory exceeds threshold.
37 This prevents OOMs due to a single file fetching a lot of decls, which would
38 not be prevented by [tco_max_typechecker_worker_memory_mb] which is checked
39 only after each file. It doesn't make sense to set this higher
40 than [tco_max_typechecker_worker_memory_mb]. *)
41 tco_defer_class_memory_mb_threshold: int option;
42 (* If set, prevents type checking of files from being deferred more than
43 the number of times greater than or equal to the threshold. If not set,
44 defers class declarations indefinitely. *)
45 tco_max_times_to_defer_type_checking: int option;
46 (* Whether the Eden prefetch hook should be invoked *)
47 tco_prefetch_deferred_files: bool;
48 (* If set, distributes type checking to remote workers if the number of files to
49 type check exceeds the threshold. If not set, then always checks everything locally. *)
50 tco_remote_type_check_threshold: int option;
51 (* Turns on remote type checking *)
52 tco_remote_type_check: bool;
53 (* If set, uses the key to fetch type checking jobs *)
54 tco_remote_worker_key: string option;
55 (* If set, uses the check ID when logging events in the context of remove init/work *)
56 tco_remote_check_id: string option;
57 (* The max batch size that a remote worker can receive to type check *)
58 tco_remote_max_batch_size: int;
59 (* The min batch size that a remote worker can receive to type check *)
60 tco_remote_min_batch_size: int;
61 (* Dictates the number of remote type checking workers *)
62 tco_num_remote_workers: int;
63 (* The version specifier that is used to identify the remote worker package version to install *)
64 so_remote_version_specifier: string option;
65 (* Above this threshold of files to check, the remote type checking worker will not use Eden *)
66 so_remote_worker_vfs_checkout_threshold: int;
67 (* Enables the reverse naming table to fall back to SQLite for queries. *)
68 so_naming_sqlite_path: string option;
69 (* Namespace aliasing map *)
70 po_auto_namespace_map: (string * string) list;
71 (* Are we emitting bytecode? *)
72 po_codegen: bool;
73 (* Flag for disabling functions in HHI files with the __PHPStdLib attribute *)
74 po_deregister_php_stdlib: bool;
75 (* Flag to disallow `require`, `require_once` etc as toplevel statements *)
76 po_disallow_toplevel_requires: bool;
77 (* Flag to disable PHP's non-top-level declarations *)
78 po_disable_nontoplevel_declarations: bool;
79 (* Flag to disable PHP's static closures *)
80 po_disable_static_closures: bool;
81 (* Allows enabling unstable features via the __EnableUnstableFeatures attribute *)
82 po_allow_unstable_features: bool;
83 (* Print types of size bigger than 1000 after performing a type union. *)
84 tco_log_inference_constraints: bool;
86 * Flag to disallow array typehints
88 tco_disallow_array_typehint: bool;
90 * Flag to disallow array literal expressions
92 tco_disallow_array_literal: bool;
94 * Flag to enable logging of statistics regarding use of language features.
95 * Currently used for lambdas.
97 tco_language_feature_logging: bool;
99 * Flag to disable enforcement of requirements for reactive Hack.
101 * Currently defaults to true as Reactive Hack is experimental and
102 * undocumented; the HSL is compatible with it, but we don't want to
103 * raise errors that can't be fully understood without knowledge of
104 * undocumented features.
106 tco_unsafe_rx: bool;
108 * When enabled, mismatches between the types of the scrutinee and case value
109 * of a switch expression are reported as type errors.
111 tco_disallow_scrutinee_case_value_type_mismatch: bool;
113 * If non-zero, give up type checking a class or function after this many seconds
115 tco_timeout: int;
117 * Flag to disallow using values that get casted to array keys at runtime;
118 * like bools, floats, or null; as array keys.
120 tco_disallow_invalid_arraykey: bool;
122 * Produces an error if an arguments is passed by reference to dynamically
123 * called function [e.g. $foo(&$bar)].
125 tco_disallow_byref_dynamic_calls: bool;
127 * Produces an error if an arguments is passed by reference in any form
128 * [e.g. foo(&$bar)].
130 tco_disallow_byref_calls: bool;
131 (* Error codes for which we allow HH_FIXMEs in strict mode *)
132 allowed_fixme_codes_strict: ISet.t;
133 allowed_fixme_codes_partial: ISet.t;
134 codes_not_raised_partial: ISet.t;
135 (* Initial hh_log_level settings *)
136 log_levels: int SMap.t;
137 (* Flag to disable using lvals as expressions. *)
138 po_disable_lval_as_an_expression: bool;
139 (* Flag to ignore the string in vec<string>[...] *)
140 (* Look up class members lazily from shallow declarations instead of eagerly
141 computing folded declarations representing the entire class type. *)
142 tco_shallow_class_decl: bool;
143 (* Use Rust parser errors *)
144 po_rust_parser_errors: bool;
145 (* The threshold (in seconds) that determines whether a file's type checking time
146 should be logged. It's only in effect if we're profiling type checking to begin
147 with. To profile, pass --profile-log to hh_server. *)
148 profile_type_check_duration_threshold: float;
149 (* When typechecking, do a second typecheck on each file. *)
150 profile_type_check_twice: bool;
151 (* Two more profile options, used solely to send to logging backend. These allow
152 the person who launches hack, to provide unique identifying keys that get
153 sent to logging, so they can correlate/sort/filter their logs as they want. *)
154 profile_owner: string option;
155 profile_desc: string;
156 (* Enables like type hints *)
157 tco_like_type_hints: bool;
158 (* Enables union and intersection type hints *)
159 tco_union_intersection_type_hints: bool;
160 (* Enables checking of coeffects *)
161 tco_coeffects: bool;
162 (* Enables checking of coeffects for local operations (not calls) *)
163 tco_coeffects_local: bool;
164 (* Internal (for tests-only): whether any type can appear in a context list
165 * or only types defined in the appropriate Context namespace *)
166 tco_strict_contexts: bool;
167 (* Enables like casts *)
168 tco_like_casts: bool;
169 (* A simpler form of pessimization, only wraps the outermost type in like
170 * if the type is not enforceable *)
171 tco_simple_pessimize: float;
172 (* Enables complex coercion interactions that involve like types *)
173 tco_complex_coercion: bool;
174 (* Treat partially abstract typeconsts like concrete typeconsts, disable overriding type *)
175 tco_disable_partially_abstract_typeconsts: bool;
176 (* Set of codes to be treated as if they were in strict mode files *)
177 error_codes_treated_strictly: ISet.t;
178 (* static check xhp required attribute *)
179 tco_check_xhp_attribute: bool;
180 (* Check redundant generics in return types *)
181 tco_check_redundant_generics: bool;
183 * Flag to produce an error whenever the TAST contains unresolved type variables
185 tco_disallow_unresolved_type_variables: bool;
186 (* Ban use of traits that are already used in parent classes. *)
187 tco_disallow_trait_reuse: bool;
188 (* Disallow using non-string, non-int types as array key type constraints. *)
189 tco_disallow_invalid_arraykey_constraint: bool;
190 (* Enable class-level where clauses, i.e.
191 class base<T> where T = int {} *)
192 po_enable_class_level_where_clauses: bool;
193 (* Disable legacy soft typehint syntax (@int) and only allow the __Soft attribute. *)
194 po_disable_legacy_soft_typehints: bool;
195 (* Set of error codes disallowed in decl positions *)
196 po_allowed_decl_fixme_codes: ISet.t;
197 (* Enable @ attribute syntax *)
198 po_allow_new_attribute_syntax: bool;
199 (* Perform global inference globally on the code base to infer missing type annotations. *)
200 tco_global_inference: bool;
201 tco_gi_reinfer_types: string list;
202 (** Types we want to remove and replace by infered types during global inference. *)
203 tco_ordered_solving: bool;
204 (** Whether to solve typing inference constraints using ordered solving or transitive closure. *)
205 (* Enable const static properties *)
206 tco_const_static_props: bool;
207 (* Disable <<...>> attribute syntax *)
208 po_disable_legacy_attribute_syntax: bool;
209 (* Allow <<__Const>> attribute *)
210 tco_const_attribute: bool;
211 (* Statically check default function arguments *)
212 po_const_default_func_args: bool;
213 (* Statically check default lambda arguments. Subset of default_func_args *)
214 po_const_default_lambda_args: bool;
215 (* Flag to disable the error suppression operator *)
216 po_disallow_silence: bool;
217 (* Static properties can be abstract *)
218 po_abstract_static_props: bool;
219 (* Make unsetting a class constant a parse error *)
220 po_disable_unset_class_const: bool;
221 (* Ignore all errors except those that can influence the shape of syntax tree
222 * (skipping post parse error checks) *)
223 po_parser_errors_only: bool;
224 tco_check_attribute_locations: bool;
225 (* Service name for glean connection; default "" to autoselect server *)
226 glean_service: string;
227 (* Hostname for glean connection; default "" to autoselect server *)
228 glean_hostname: string;
229 (* Port number for glean connection; default 0 to autoselect server *)
230 glean_port: int;
231 (* Reponame used for glean connection, default to "www.autocomplete" *)
232 glean_reponame: string;
233 (* Path prefix to use for files relative to the repository root when writing symbol info to JSON *)
234 symbol_write_root_path: string;
235 (* Path prefix to use for hhi files when writing symbol info to JSON *)
236 symbol_write_hhi_path: string;
237 (* Filepaths to ignore when writing symbol info to JSON, relative to path prefix, eg: root|foo.php *)
238 symbol_write_ignore_paths: string list;
239 (* When set, write indexing data for these filepaths only. Relative to repository root, eg: bar.php for root|bar.php *)
240 symbol_write_index_paths: string list;
241 (* Write symbol indexing data for hhi files *)
242 symbol_write_include_hhi: bool;
243 (* Flag to disallow HH\fun and HH\class_meth in constants and constant initializers *)
244 po_disallow_func_ptrs_in_constants: bool;
245 (* Flag to report an error on php style anonymous functions *)
246 tco_error_php_lambdas: bool;
247 (* Flag to error on using discarded nullable awaitables *)
248 tco_disallow_discarded_nullable_awaitables: bool;
249 (* Enable the new style xhp class.
250 * Old style: class :name {}
251 * New style: xhp class name {}
253 po_enable_xhp_class_modifier: bool;
255 * Flag to disable the old stype xhp element mangling. `<something/>` would otherwise be resolved as `xhp_something`
256 * The new style `xhp class something {}` does not do this style of mangling, thus we need a way to disable it on the
257 * 'lookup side'.
259 po_disable_xhp_element_mangling: bool;
260 (* Disable `children (foo|bar+|pcdata)` declarations as they can be implemented without special syntax *)
261 po_disable_xhp_children_declarations: bool;
262 (* Enable enum class syntax *)
263 po_enable_enum_classes: bool;
264 (* Treats partial files as strict *)
265 po_disable_modes: bool;
266 po_disable_hh_ignore_error: bool;
267 (* Disable array(...) *)
268 po_disable_array: bool;
269 po_disable_array_typehint: bool;
270 (* Enable features used to typecheck systemlib *)
271 tco_enable_systemlib_annotations: bool;
272 (* Controls if higher-kinded types are supported *)
273 tco_higher_kinded_types: bool;
274 (* Controls if method-call inference is supported *)
275 tco_method_call_inference: bool;
276 (* If set, then positions derived from reason information are tainted, and primary errors
277 * with such positions are flagged
279 tco_report_pos_from_reason: bool;
280 (* Type check this proportion of all files. Default is 1.0.
281 * DO NOT set to any other value except for testing purposes.
283 tco_typecheck_sample_rate: float;
284 (* Experimental implementation of a "sound" dynamic type *)
285 tco_enable_sound_dynamic: bool;
286 (* Disallow #-style comments, except hashbangs(#!) *)
287 po_disallow_hash_comments: bool;
288 (* Disable parsing of fun() and class_meth() *)
289 po_disallow_fun_and_cls_meth_pseudo_funcs: bool;
290 (* Enable use of the direct decl parser for parsing type signatures. *)
291 tco_use_direct_decl_parser: bool;
292 (* Enable ifc on the specified list of path prefixes
293 (a list containing the empty string would denote all files,
294 an empty list denotes no files) *)
295 tco_ifc_enabled: string list;
296 (* Enables the enum supertyping extension *)
297 po_enable_enum_supertyping: bool;
298 (* Treat varray as vec, dict as dict, TODO varray_or_darray as vec_or_dict *)
299 po_array_unification: bool;
301 [@@deriving eq, show]
303 val make :
304 ?po_deregister_php_stdlib:bool ->
305 ?po_disallow_toplevel_requires:bool ->
306 ?po_disable_nontoplevel_declarations:bool ->
307 ?po_disable_static_closures:bool ->
308 ?tco_log_inference_constraints:bool ->
309 ?tco_experimental_features:SSet.t ->
310 ?tco_migration_flags:SSet.t ->
311 ?tco_dynamic_view:bool ->
312 ?tco_num_local_workers:int ->
313 ?tco_parallel_type_checking_threshold:int ->
314 ?tco_max_typechecker_worker_memory_mb:int ->
315 ?tco_defer_class_declaration_threshold:int ->
316 ?tco_defer_class_memory_mb_threshold:int ->
317 ?tco_max_times_to_defer_type_checking:int ->
318 ?tco_prefetch_deferred_files:bool ->
319 ?tco_remote_type_check_threshold:int ->
320 ?tco_remote_type_check:bool ->
321 ?tco_remote_worker_key:string ->
322 ?tco_remote_check_id:string ->
323 ?tco_remote_max_batch_size:int ->
324 ?tco_remote_min_batch_size:int ->
325 ?tco_num_remote_workers:int ->
326 ?so_remote_version_specifier:string ->
327 ?so_remote_worker_vfs_checkout_threshold:int ->
328 ?so_naming_sqlite_path:string ->
329 ?po_auto_namespace_map:(string * string) list ->
330 ?tco_disallow_array_typehint:bool ->
331 ?tco_disallow_array_literal:bool ->
332 ?tco_language_feature_logging:bool ->
333 ?tco_unsafe_rx:bool ->
334 ?tco_disallow_scrutinee_case_value_type_mismatch:bool ->
335 ?tco_timeout:int ->
336 ?tco_disallow_invalid_arraykey:bool ->
337 ?tco_disallow_byref_dynamic_calls:bool ->
338 ?tco_disallow_byref_calls:bool ->
339 ?allowed_fixme_codes_strict:ISet.t ->
340 ?allowed_fixme_codes_partial:ISet.t ->
341 ?codes_not_raised_partial:ISet.t ->
342 ?log_levels:int SMap.t ->
343 ?po_disable_lval_as_an_expression:bool ->
344 ?tco_shallow_class_decl:bool ->
345 ?po_rust_parser_errors:bool ->
346 ?profile_type_check_duration_threshold:float ->
347 ?profile_type_check_twice:bool ->
348 ?profile_owner:string ->
349 ?profile_desc:string ->
350 ?tco_like_type_hints:bool ->
351 ?tco_union_intersection_type_hints:bool ->
352 ?tco_coeffects:bool ->
353 ?tco_coeffects_local:bool ->
354 ?tco_strict_contexts:bool ->
355 ?tco_like_casts:bool ->
356 ?tco_simple_pessimize:float ->
357 ?tco_complex_coercion:bool ->
358 ?tco_disable_partially_abstract_typeconsts:bool ->
359 ?error_codes_treated_strictly:ISet.t ->
360 ?tco_check_xhp_attribute:bool ->
361 ?tco_check_redundant_generics:bool ->
362 ?tco_disallow_unresolved_type_variables:bool ->
363 ?tco_disallow_trait_reuse:bool ->
364 ?tco_disallow_invalid_arraykey_constraint:bool ->
365 ?po_enable_class_level_where_clauses:bool ->
366 ?po_disable_legacy_soft_typehints:bool ->
367 ?po_allowed_decl_fixme_codes:ISet.t ->
368 ?po_allow_new_attribute_syntax:bool ->
369 ?tco_global_inference:bool ->
370 ?tco_gi_reinfer_types:string list ->
371 ?tco_ordered_solving:bool ->
372 ?tco_const_static_props:bool ->
373 ?po_disable_legacy_attribute_syntax:bool ->
374 ?tco_const_attribute:bool ->
375 ?po_const_default_func_args:bool ->
376 ?po_const_default_lambda_args:bool ->
377 ?po_disallow_silence:bool ->
378 ?po_abstract_static_props:bool ->
379 ?po_disable_unset_class_const:bool ->
380 ?po_parser_errors_only:bool ->
381 ?tco_check_attribute_locations:bool ->
382 ?glean_service:string ->
383 ?glean_hostname:string ->
384 ?glean_port:int ->
385 ?glean_reponame:string ->
386 ?symbol_write_root_path:string ->
387 ?symbol_write_hhi_path:string ->
388 ?symbol_write_ignore_paths:string list ->
389 ?symbol_write_index_paths:string list ->
390 ?symbol_write_include_hhi:bool ->
391 ?po_disallow_func_ptrs_in_constants:bool ->
392 ?tco_error_php_lambdas:bool ->
393 ?tco_disallow_discarded_nullable_awaitables:bool ->
394 ?po_enable_xhp_class_modifier:bool ->
395 ?po_disable_xhp_element_mangling:bool ->
396 ?po_disable_xhp_children_declarations:bool ->
397 ?po_enable_enum_classes:bool ->
398 ?po_disable_modes:bool ->
399 ?po_disable_hh_ignore_error:bool ->
400 ?po_disable_array:bool ->
401 ?po_disable_array_typehint:bool ->
402 ?po_allow_unstable_features:bool ->
403 ?tco_enable_systemlib_annotations:bool ->
404 ?tco_higher_kinded_types:bool ->
405 ?tco_method_call_inference:bool ->
406 ?tco_report_pos_from_reason:bool ->
407 ?tco_typecheck_sample_rate:float ->
408 ?tco_enable_sound_dynamic:bool ->
409 ?po_disallow_hash_comments:bool ->
410 ?po_disallow_fun_and_cls_meth_pseudo_funcs:bool ->
411 ?tco_use_direct_decl_parser:bool ->
412 ?tco_ifc_enabled:string list ->
413 ?po_enable_enum_supertyping:bool ->
414 ?po_array_unification:bool ->
415 unit ->
418 val tco_experimental_feature_enabled : t -> SSet.elt -> bool
420 val tco_migration_flag_enabled : t -> SSet.elt -> bool
422 val tco_dynamic_view : t -> bool
424 val tco_num_local_workers : t -> int option
426 val tco_parallel_type_checking_threshold : t -> int
428 val tco_max_typechecker_worker_memory_mb : t -> int option
430 val tco_defer_class_declaration_threshold : t -> int option
432 val tco_defer_class_memory_mb_threshold : t -> int option
434 val tco_max_times_to_defer_type_checking : t -> int option
436 val tco_prefetch_deferred_files : t -> bool
438 val tco_remote_type_check_threshold : t -> int option
440 val tco_remote_type_check : t -> bool
442 val tco_remote_worker_key : t -> string option
444 val tco_remote_check_id : t -> string option
446 val tco_remote_max_batch_size : t -> int
448 val tco_remote_min_batch_size : t -> int
450 val tco_num_remote_workers : t -> int
452 val so_remote_version_specifier : t -> string option
454 val so_remote_worker_vfs_checkout_threshold : t -> int
456 val so_naming_sqlite_path : t -> string option
458 val po_auto_namespace_map : t -> (string * string) list
460 val po_deregister_php_stdlib : t -> bool
462 val po_disallow_toplevel_requires : t -> bool
464 val po_disable_nontoplevel_declarations : t -> bool
466 val po_disable_static_closures : t -> bool
468 val po_codegen : t -> bool
470 val tco_log_inference_constraints : t -> bool
472 val tco_disallow_array_typehint : t -> bool
474 val tco_disallow_array_literal : t -> bool
476 val tco_language_feature_logging : t -> bool
478 val tco_unsafe_rx : t -> bool
480 val tco_disallow_scrutinee_case_value_type_mismatch : t -> bool
482 val tco_timeout : t -> int
484 val tco_disallow_invalid_arraykey : t -> bool
486 val tco_disallow_byref_dynamic_calls : t -> bool
488 val tco_disallow_byref_calls : t -> bool
490 val default : t
492 val tco_experimental_isarray : string
494 val tco_experimental_generics_arity : string
496 val tco_experimental_forbid_nullable_cast : string
498 val tco_experimental_disallow_static_memoized : string
500 val tco_experimental_type_param_shadowing : string
502 val tco_experimental_abstract_type_const_with_default : string
504 val tco_experimental_infer_flows : string
506 val tco_experimental_case_sensitive_inheritance : string
508 val tco_experimental_all : SSet.t
510 val tco_migration_flags_all : SSet.t
512 val allowed_fixme_codes_strict : t -> ISet.t
514 val allowed_fixme_codes_partial : t -> ISet.t
516 val codes_not_raised_partial : t -> ISet.t
518 val log_levels : t -> int SMap.t
520 val po_disable_lval_as_an_expression : t -> bool
522 val tco_shallow_class_decl : t -> bool
524 val po_rust_parser_errors : t -> bool
526 val profile_type_check_duration_threshold : t -> float
528 val profile_type_check_twice : t -> bool
530 val profile_owner : t -> string option
532 val profile_desc : t -> string
534 val tco_like_type_hints : t -> bool
536 val tco_union_intersection_type_hints : t -> bool
538 val tco_call_coeffects : t -> bool
540 val tco_local_coeffects : t -> bool
542 val tco_strict_contexts : t -> bool
544 val ifc_enabled : t -> string list
546 val enable_ifc : t -> t
548 val tco_like_casts : t -> bool
550 val tco_simple_pessimize : t -> float
552 val tco_complex_coercion : t -> bool
554 val tco_disable_partially_abstract_typeconsts : t -> bool
556 val error_codes_treated_strictly : t -> ISet.t
558 val tco_check_xhp_attribute : t -> bool
560 val tco_check_redundant_generics : t -> bool
562 val tco_disallow_unresolved_type_variables : t -> bool
564 val tco_disallow_trait_reuse : t -> bool
566 val tco_disallow_invalid_arraykey_constraint : t -> bool
568 val po_enable_class_level_where_clauses : t -> bool
570 val po_disable_legacy_soft_typehints : t -> bool
572 val po_allowed_decl_fixme_codes : t -> ISet.t
574 val po_allow_new_attribute_syntax : t -> bool
576 val tco_global_inference : t -> bool
578 val tco_gi_reinfer_types : t -> string list
580 val tco_ordered_solving : t -> bool
582 val tco_const_static_props : t -> bool
584 val po_disable_legacy_attribute_syntax : t -> bool
586 val tco_const_attribute : t -> bool
588 val po_const_default_func_args : t -> bool
590 val po_const_default_lambda_args : t -> bool
592 val po_disallow_silence : t -> bool
594 val po_abstract_static_props : t -> bool
596 val po_allow_unstable_features : t -> bool
598 val po_disable_unset_class_const : t -> bool
600 val set_global_inference : t -> t
602 val set_ordered_solving : t -> bool -> t
604 val po_parser_errors_only : t -> bool
606 val tco_check_attribute_locations : t -> bool
608 val glean_service : t -> string
610 val glean_hostname : t -> string
612 val glean_port : t -> int
614 val glean_reponame : t -> string
616 val symbol_write_root_path : t -> string
618 val symbol_write_hhi_path : t -> string
620 val symbol_write_ignore_paths : t -> string list
622 val symbol_write_index_paths : t -> string list
624 val symbol_write_include_hhi : t -> bool
626 val po_disallow_func_ptrs_in_constants : t -> bool
628 val tco_error_php_lambdas : t -> bool
630 val tco_disallow_discarded_nullable_awaitables : t -> bool
632 val po_enable_xhp_class_modifier : t -> bool
634 val po_disable_xhp_element_mangling : t -> bool
636 val po_disable_xhp_children_declarations : t -> bool
638 val po_enable_enum_classes : t -> bool
640 val po_disable_modes : t -> bool
642 val po_disable_hh_ignore_error : t -> bool
644 val po_disable_array : t -> bool
646 val po_disable_array_typehint : t -> bool
648 val tco_enable_systemlib_annotations : t -> bool
650 val tco_higher_kinded_types : t -> bool
652 val tco_method_call_inference : t -> bool
654 val tco_report_pos_from_reason : t -> bool
656 val tco_typecheck_sample_rate : t -> float
658 val tco_enable_sound_dynamic : t -> bool
660 val po_disallow_hash_comments : t -> bool
662 val po_disallow_fun_and_cls_meth_pseudo_funcs : t -> bool
664 val tco_use_direct_decl_parser : t -> bool
666 val po_enable_enum_supertyping : t -> bool
668 val po_array_unification : t -> bool