Raise error when a trait is <<__ConsistentConstruct>> but does not declare an explici...
[hiphop-php.git] / hphp / hack / src / options / globalOptions.mli
blob59ffee60c3fa5fc1a13cfaec7418f20bbaa55576
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 (* If set to 0, only the type check delegate's logic will be used.
22 If the delegate fails to type check, the typing check service as a whole
23 will fail. *)
24 tco_num_local_workers: int option;
25 (* If the number of files to type check is fewer than this value, the files
26 will be type checked sequentially (in the master process). Otherwise,
27 the files will be type checked in parallel (in MultiWorker workers). *)
28 tco_parallel_type_checking_threshold: int;
29 (* If set, typechecker workers will quit after they exceed this limit *)
30 tco_max_typechecker_worker_memory_mb: int option;
31 (* If set, defers class declarations after N lazy declarations; if not set,
32 always lazily declares classes not already in cache. *)
33 tco_defer_class_declaration_threshold: int option;
34 (* If set, defers class declarations if worker memory exceeds threshold.
35 This prevents OOMs due to a single file fetching a lot of decls, which would
36 not be prevented by [tco_max_typechecker_worker_memory_mb] which is checked
37 only after each file. It doesn't make sense to set this higher
38 than [tco_max_typechecker_worker_memory_mb]. *)
39 tco_defer_class_memory_mb_threshold: int option;
40 (* Whether the Eden prefetch hook should be invoked *)
41 tco_prefetch_deferred_files: bool;
42 (* If set, distributes type checking to remote workers if the number of files to
43 type check exceeds the threshold. If not set, then always checks everything locally. *)
44 tco_remote_type_check_threshold: int option;
45 (* Turns on remote type checking *)
46 tco_remote_type_check: bool;
47 (* If set, uses the key to fetch type checking jobs *)
48 tco_remote_worker_key: string option;
49 (* If set, uses the check ID when logging events in the context of remove init/work *)
50 tco_remote_check_id: string option;
51 (* The max batch size that a remote worker can receive to type check *)
52 tco_remote_max_batch_size: int;
53 (* The min batch size that a remote worker can receive to type check *)
54 tco_remote_min_batch_size: int;
55 (* Dictates the number of remote type checking workers *)
56 tco_num_remote_workers: int;
57 tco_stream_errors: bool;
58 (** Whether to send errors to the IDE as soon as they are discovered. *)
59 (* The version specifier that is used to identify the remote worker package version to install *)
60 so_remote_version_specifier: string option;
61 (* Above this threshold of files to check, the remote type checking worker will not use Eden *)
62 so_remote_worker_vfs_checkout_threshold: int;
63 (* Enables the reverse naming table to fall back to SQLite for queries. *)
64 so_naming_sqlite_path: string option;
65 (* Namespace aliasing map *)
66 po_auto_namespace_map: (string * string) list;
67 (* Are we emitting bytecode? *)
68 po_codegen: bool;
69 (* Flag for disabling functions in HHI files with the __PHPStdLib attribute *)
70 po_deregister_php_stdlib: bool;
71 (* Flag to disallow `require`, `require_once` etc as toplevel statements *)
72 po_disallow_toplevel_requires: bool;
73 (* Flag to disable PHP's non-top-level declarations *)
74 po_disable_nontoplevel_declarations: bool;
75 (* Allows enabling unstable features via the __EnableUnstableFeatures attribute *)
76 po_allow_unstable_features: bool;
77 (* Print types of size bigger than 1000 after performing a type union. *)
78 tco_log_inference_constraints: bool;
80 * Flag to disallow array typehints
82 tco_disallow_array_typehint: bool;
84 * Flag to disallow array literal expressions
86 tco_disallow_array_literal: bool;
88 * Flag to enable logging of statistics regarding use of language features.
89 * Currently used for lambdas.
91 tco_language_feature_logging: bool;
93 * When enabled, mismatches between the types of the scrutinee and case value
94 * of a switch expression are reported as type errors.
96 tco_disallow_scrutinee_case_value_type_mismatch: bool;
98 * If non-zero, give up type checking a class or function after this many seconds
100 tco_timeout: int;
102 * Flag to disallow using values that get casted to array keys at runtime;
103 * like bools, floats, or null; as array keys.
105 tco_disallow_invalid_arraykey: bool;
107 * Produces an error if an arguments is passed by reference to dynamically
108 * called function [e.g. $foo(&$bar)].
110 tco_disallow_byref_dynamic_calls: bool;
112 * Produces an error if an arguments is passed by reference in any form
113 * [e.g. foo(&$bar)].
115 tco_disallow_byref_calls: bool;
116 (* Error codes for which we allow HH_FIXMEs in strict mode *)
117 allowed_fixme_codes_strict: ISet.t;
118 allowed_fixme_codes_partial: ISet.t;
119 codes_not_raised_partial: ISet.t;
120 (* Initial hh_log_level settings *)
121 log_levels: int SMap.t;
122 (* Flag to disable using lvals as expressions. *)
123 po_disable_lval_as_an_expression: bool;
124 (* Flag to ignore the string in vec<string>[...] *)
125 (* Look up class members lazily from shallow declarations instead of eagerly
126 computing folded declarations representing the entire class type. *)
127 tco_shallow_class_decl: bool;
128 (* Use shallow decl fanout algorithm while remaining to use folded decls
129 for typechecking *)
130 tco_force_shallow_decl_fanout: bool;
131 (* Flag to fetch old decls from remote decl store *)
132 tco_fetch_remote_old_decls: bool;
133 (* Always load hot shallow decls from saved state *)
134 tco_force_load_hot_shallow_decls: bool;
135 (* Skip checks on hierarchy e.g. overrides, require extend, etc.
136 Set to true only for debugging purposes! *)
137 tco_skip_hierarchy_checks: bool;
138 (* Use Rust parser errors *)
139 po_rust_parser_errors: bool;
140 (* Enables like type hints *)
141 tco_like_type_hints: bool;
142 (* Enables union and intersection type hints *)
143 tco_union_intersection_type_hints: bool;
144 (* Enables checking of coeffects *)
145 tco_coeffects: bool;
146 (* Enables checking of coeffects for local operations (not calls) *)
147 tco_coeffects_local: bool;
148 (* Internal (for tests-only): whether any type can appear in a context list
149 * or only types defined in the appropriate Context namespace *)
150 tco_strict_contexts: bool;
151 (* Enables like casts *)
152 tco_like_casts: bool;
153 (* A simpler form of pessimization, only wraps the outermost type in like
154 * if the type is not enforceable *)
155 tco_simple_pessimize: float;
156 (* Enables complex coercion interactions that involve like types *)
157 tco_complex_coercion: bool;
158 (* Set of codes to be treated as if they were in strict mode files *)
159 error_codes_treated_strictly: ISet.t;
160 (* static check xhp required attribute *)
161 tco_check_xhp_attribute: bool;
162 (* Check redundant generics in return types *)
163 tco_check_redundant_generics: bool;
165 * Flag to produce an error whenever the TAST contains unresolved type variables
167 tco_disallow_unresolved_type_variables: bool;
168 (* Ban use of traits that are already used in parent classes. *)
169 tco_disallow_trait_reuse: bool;
170 (* Disallow using non-string, non-int types as array key type constraints. *)
171 tco_disallow_invalid_arraykey_constraint: bool;
172 (* Enable class-level where clauses, i.e.
173 class base<T> where T = int {} *)
174 po_enable_class_level_where_clauses: bool;
175 (* Disable legacy soft typehint syntax (@int) and only allow the __Soft attribute. *)
176 po_disable_legacy_soft_typehints: bool;
177 (* Set of error codes disallowed in decl positions *)
178 po_allowed_decl_fixme_codes: ISet.t;
179 (* Enable @ attribute syntax *)
180 po_allow_new_attribute_syntax: bool;
181 (* Perform global inference globally on the code base to infer missing type annotations. *)
182 tco_global_inference: bool;
183 tco_gi_reinfer_types: string list;
184 (** Types we want to remove and replace by infered types during global inference. *)
185 tco_ordered_solving: bool;
186 (** Whether to solve typing inference constraints using ordered solving or transitive closure. *)
187 (* Enable const static properties *)
188 tco_const_static_props: bool;
189 (* Disable <<...>> attribute syntax *)
190 po_disable_legacy_attribute_syntax: bool;
191 (* Allow <<__Const>> attribute *)
192 tco_const_attribute: bool;
193 (* Statically check default function arguments *)
194 po_const_default_func_args: bool;
195 (* Statically check default lambda arguments. Subset of default_func_args *)
196 po_const_default_lambda_args: bool;
197 (* Flag to disable the error suppression operator *)
198 po_disallow_silence: bool;
199 (* Static properties can be abstract *)
200 po_abstract_static_props: bool;
201 (* Make unsetting a class constant a parse error *)
202 po_disable_unset_class_const: bool;
203 (* Ignore all errors except those that can influence the shape of syntax tree
204 * (skipping post parse error checks) *)
205 po_parser_errors_only: bool;
206 tco_check_attribute_locations: bool;
207 (* Service name for glean connection; default "" to autoselect server *)
208 glean_service: string;
209 (* Hostname for glean connection; default "" to autoselect server *)
210 glean_hostname: string;
211 (* Port number for glean connection; default 0 to autoselect server *)
212 glean_port: int;
213 (* Reponame used for glean connection, default to "www.autocomplete" *)
214 glean_reponame: string;
215 (* Path prefix to use for files relative to the repository root when writing symbol info to JSON *)
216 symbol_write_root_path: string;
217 (* Path prefix to use for hhi files when writing symbol info to JSON *)
218 symbol_write_hhi_path: string;
219 (* Filepaths to ignore when writing symbol info to JSON, relative to path prefix, eg: root|foo.php *)
220 symbol_write_ignore_paths: string list;
221 (* When set, write indexing data for these filepaths only. Relative to repository root, eg: bar.php for root|bar.php *)
222 symbol_write_index_paths: string list;
223 (* A file which contains a list of Relative_path.t (one per line) to index *)
224 symbol_write_index_paths_file: string option;
225 (* Write the list of Relative_path.t to this file instead of indexing. Useful for sharding *)
226 symbol_write_index_paths_file_output: string option;
227 (* Write symbol indexing data for hhi files *)
228 symbol_write_include_hhi: bool;
229 (* Flag to disallow HH\fun and HH\class_meth in constants and constant initializers *)
230 po_disallow_func_ptrs_in_constants: bool;
231 (* Flag to report an error on php style anonymous functions *)
232 tco_error_php_lambdas: bool;
233 (* Flag to error on using discarded nullable awaitables *)
234 tco_disallow_discarded_nullable_awaitables: bool;
235 (* Enable the new style xhp class.
236 * Old style: class :name {}
237 * New style: xhp class name {}
239 po_enable_xhp_class_modifier: bool;
241 * Flag to disable the old stype xhp element mangling. `<something/>` would otherwise be resolved as `xhp_something`
242 * The new style `xhp class something {}` does not do this style of mangling, thus we need a way to disable it on the
243 * 'lookup side'.
245 po_disable_xhp_element_mangling: bool;
246 (* Disable `children (foo|bar+|pcdata)` declarations as they can be implemented without special syntax *)
247 po_disable_xhp_children_declarations: bool;
248 (* Enable enum class syntax *)
249 po_enable_enum_classes: bool;
250 (* Treats partial files as strict *)
251 po_disable_modes: bool;
252 po_disable_hh_ignore_error: bool;
253 (* Disable array(...) *)
254 po_disable_array: bool;
255 po_disable_array_typehint: bool;
256 (* Enable features used to typecheck systemlib *)
257 tco_enable_systemlib_annotations: bool;
258 (* Controls if higher-kinded types are supported *)
259 tco_higher_kinded_types: bool;
260 (* Controls if method-call inference is supported *)
261 tco_method_call_inference: bool;
262 (* If set, then positions derived from reason information are tainted, and primary errors
263 * with such positions are flagged
265 tco_report_pos_from_reason: bool;
266 (* Type check this proportion of all files. Default is 1.0.
267 * DO NOT set to any other value except for testing purposes.
269 tco_typecheck_sample_rate: float;
270 (* Experimental implementation of a "sound" dynamic type *)
271 tco_enable_sound_dynamic: bool;
272 (* Disable parsing of fun() and class_meth() *)
273 po_disallow_fun_and_cls_meth_pseudo_funcs: bool;
274 (* Disable parsing of inst_meth() *)
275 po_disallow_inst_meth: bool;
276 (* Enable readonly enforcement while parsing *)
277 po_enable_readonly_in_emitter: bool;
278 (* Escape brace in \{$x} *)
279 po_escape_brace: bool;
280 (* Enable use of the direct decl parser for parsing type signatures. *)
281 tco_use_direct_decl_parser: bool;
282 (* Enable ifc on the specified list of path prefixes
283 (a list containing the empty string would denote all files,
284 an empty list denotes no files) *)
285 tco_ifc_enabled: string list;
286 (* Enables the enum supertyping extension *)
287 po_enable_enum_supertyping: bool;
288 (* <<__Soft>> T -> ~T *)
289 po_interpret_soft_types_as_like_types: bool;
290 (* Restricts string concatenation and interpolation to arraykeys *)
291 tco_enable_strict_string_concat_interp: bool;
292 (* Ignores unsafe_cast and retains the original type of the expression *)
293 tco_ignore_unsafe_cast: bool;
294 (* Enable Unstable feature readonly tast check *)
295 tco_readonly: bool;
296 (* Enable expression trees via unstable features flag *)
297 tco_enable_expression_trees: bool;
298 (* Enable unstable feature: modules *)
299 tco_enable_modules: bool;
300 (* Allowed expression tree visitors when not enabled via unstable features flag *)
301 tco_allowed_expression_tree_visitors: string list;
302 (* Use a new error code for math operations: addition, subtraction,
303 division, multiplication, exponentiation *)
304 tco_math_new_code: bool;
305 (* Raise an error when a concrete type constant is overridden by a concrete type constant
306 in a child class. *)
307 tco_typeconst_concrete_concrete_error: bool;
308 (* Raise an error whenever a concrete const is defined multiple times *)
309 tco_enable_strict_const_semantics: bool;
310 (* meth_caller can only reference public methods *)
311 tco_meth_caller_only_public_visibility: bool;
312 (* Consider `require extends` and `require implements` as ancestors when checking a class *)
313 tco_require_extends_implements_ancestors: bool;
314 (* Emit an error when "==" or "!=" is used to compare values that are incompatible types *)
315 tco_strict_value_equality: bool;
316 (* All member of the __Sealed whitelist should be subclasses*)
317 tco_enforce_sealed_subclasses: bool;
318 (* All classes are implcitly marked <<__SupportDynamicType>> *)
319 tco_everything_sdt: bool;
320 (* All collections and Hack arrays are treated as containing ~T *)
321 tco_pessimise_builtins: bool;
322 tco_enable_disk_heap: bool;
323 (* Resolves unsoundness arising from incorrect [defaults] context generated for default
324 * constructors during __ConsistentConstruct check *)
325 tco_pure_default_consistent_constructors: bool;
326 (* Raises an error when a classish is declared <<__ConsistentConstruct>> but lacks an
327 * explicit constructor declaration. 0 does not raise, 1 raises for traits, 2 raises
328 * for all classish *)
329 tco_explicit_consistent_constructors: int;
331 [@@deriving eq, show]
333 val make :
334 ?po_deregister_php_stdlib:bool ->
335 ?po_disallow_toplevel_requires:bool ->
336 ?po_disable_nontoplevel_declarations:bool ->
337 ?tco_log_inference_constraints:bool ->
338 ?tco_experimental_features:SSet.t ->
339 ?tco_migration_flags:SSet.t ->
340 ?tco_num_local_workers:int ->
341 ?tco_parallel_type_checking_threshold:int ->
342 ?tco_max_typechecker_worker_memory_mb:int ->
343 ?tco_defer_class_declaration_threshold:int ->
344 ?tco_defer_class_memory_mb_threshold:int ->
345 ?tco_prefetch_deferred_files:bool ->
346 ?tco_remote_type_check_threshold:int ->
347 ?tco_remote_type_check:bool ->
348 ?tco_remote_worker_key:string ->
349 ?tco_remote_check_id:string ->
350 ?tco_remote_max_batch_size:int ->
351 ?tco_remote_min_batch_size:int ->
352 ?tco_num_remote_workers:int ->
353 ?tco_stream_errors:bool ->
354 ?so_remote_version_specifier:string ->
355 ?so_remote_worker_vfs_checkout_threshold:int ->
356 ?so_naming_sqlite_path:string ->
357 ?po_auto_namespace_map:(string * string) list ->
358 ?tco_disallow_array_typehint:bool ->
359 ?tco_disallow_array_literal:bool ->
360 ?tco_language_feature_logging:bool ->
361 ?tco_disallow_scrutinee_case_value_type_mismatch:bool ->
362 ?tco_timeout:int ->
363 ?tco_disallow_invalid_arraykey:bool ->
364 ?tco_disallow_byref_dynamic_calls:bool ->
365 ?tco_disallow_byref_calls:bool ->
366 ?allowed_fixme_codes_strict:ISet.t ->
367 ?allowed_fixme_codes_partial:ISet.t ->
368 ?codes_not_raised_partial:ISet.t ->
369 ?log_levels:int SMap.t ->
370 ?po_disable_lval_as_an_expression:bool ->
371 ?tco_shallow_class_decl:bool ->
372 ?tco_force_shallow_decl_fanout:bool ->
373 ?tco_fetch_remote_old_decls:bool ->
374 ?tco_force_load_hot_shallow_decls:bool ->
375 ?tco_skip_hierarchy_checks:bool ->
376 ?po_rust_parser_errors:bool ->
377 ?tco_like_type_hints:bool ->
378 ?tco_union_intersection_type_hints:bool ->
379 ?tco_coeffects:bool ->
380 ?tco_coeffects_local:bool ->
381 ?tco_strict_contexts:bool ->
382 ?tco_like_casts:bool ->
383 ?tco_simple_pessimize:float ->
384 ?tco_complex_coercion:bool ->
385 ?error_codes_treated_strictly:ISet.t ->
386 ?tco_check_xhp_attribute:bool ->
387 ?tco_check_redundant_generics:bool ->
388 ?tco_disallow_unresolved_type_variables:bool ->
389 ?tco_disallow_trait_reuse:bool ->
390 ?tco_disallow_invalid_arraykey_constraint:bool ->
391 ?po_enable_class_level_where_clauses:bool ->
392 ?po_disable_legacy_soft_typehints:bool ->
393 ?po_allowed_decl_fixme_codes:ISet.t ->
394 ?po_allow_new_attribute_syntax:bool ->
395 ?tco_global_inference:bool ->
396 ?tco_gi_reinfer_types:string list ->
397 ?tco_ordered_solving:bool ->
398 ?tco_const_static_props:bool ->
399 ?po_disable_legacy_attribute_syntax:bool ->
400 ?tco_const_attribute:bool ->
401 ?po_const_default_func_args:bool ->
402 ?po_const_default_lambda_args:bool ->
403 ?po_disallow_silence:bool ->
404 ?po_abstract_static_props:bool ->
405 ?po_disable_unset_class_const:bool ->
406 ?po_parser_errors_only:bool ->
407 ?tco_check_attribute_locations:bool ->
408 ?glean_service:string ->
409 ?glean_hostname:string ->
410 ?glean_port:int ->
411 ?glean_reponame:string ->
412 ?symbol_write_root_path:string ->
413 ?symbol_write_hhi_path:string ->
414 ?symbol_write_ignore_paths:string list ->
415 ?symbol_write_index_paths:string list ->
416 ?symbol_write_index_paths_file:string ->
417 ?symbol_write_index_paths_file_output:string ->
418 ?symbol_write_include_hhi:bool ->
419 ?po_disallow_func_ptrs_in_constants:bool ->
420 ?tco_error_php_lambdas:bool ->
421 ?tco_disallow_discarded_nullable_awaitables:bool ->
422 ?po_enable_xhp_class_modifier:bool ->
423 ?po_disable_xhp_element_mangling:bool ->
424 ?po_disable_xhp_children_declarations:bool ->
425 ?po_enable_enum_classes:bool ->
426 ?po_disable_modes:bool ->
427 ?po_disable_hh_ignore_error:bool ->
428 ?po_disable_array:bool ->
429 ?po_disable_array_typehint:bool ->
430 ?po_allow_unstable_features:bool ->
431 ?tco_enable_systemlib_annotations:bool ->
432 ?tco_higher_kinded_types:bool ->
433 ?tco_method_call_inference:bool ->
434 ?tco_report_pos_from_reason:bool ->
435 ?tco_typecheck_sample_rate:float ->
436 ?tco_enable_sound_dynamic:bool ->
437 ?po_disallow_fun_and_cls_meth_pseudo_funcs:bool ->
438 ?po_disallow_inst_meth:bool ->
439 ?po_enable_readonly_in_emitter:bool ->
440 ?po_escape_brace:bool ->
441 ?tco_use_direct_decl_parser:bool ->
442 ?tco_ifc_enabled:string list ->
443 ?po_enable_enum_supertyping:bool ->
444 ?po_interpret_soft_types_as_like_types:bool ->
445 ?tco_enable_strict_string_concat_interp:bool ->
446 ?tco_ignore_unsafe_cast:bool ->
447 ?tco_readonly:bool ->
448 ?tco_enable_expression_trees:bool ->
449 ?tco_enable_modules:bool ->
450 ?tco_allowed_expression_tree_visitors:string list ->
451 ?tco_math_new_code:bool ->
452 ?tco_typeconst_concrete_concrete_error:bool ->
453 ?tco_enable_strict_const_semantics:bool ->
454 ?tco_meth_caller_only_public_visibility:bool ->
455 ?tco_require_extends_implements_ancestors:bool ->
456 ?tco_strict_value_equality:bool ->
457 ?tco_enforce_sealed_subclasses:bool ->
458 ?tco_everything_sdt:bool ->
459 ?tco_pessimise_builtins:bool ->
460 ?tco_enable_disk_heap:bool ->
461 ?tco_pure_default_consistent_constructors:bool ->
462 ?tco_explicit_consistent_constructors:int ->
463 unit ->
466 val tco_experimental_feature_enabled : t -> SSet.elt -> bool
468 val tco_migration_flag_enabled : t -> SSet.elt -> bool
470 val tco_num_local_workers : t -> int option
472 val tco_parallel_type_checking_threshold : t -> int
474 val tco_max_typechecker_worker_memory_mb : t -> int option
476 val tco_defer_class_declaration_threshold : t -> int option
478 val tco_defer_class_memory_mb_threshold : t -> int option
480 val tco_prefetch_deferred_files : t -> bool
482 val tco_remote_type_check_threshold : t -> int option
484 val tco_remote_type_check : t -> bool
486 val tco_remote_worker_key : t -> string option
488 val tco_remote_check_id : t -> string option
490 val tco_remote_max_batch_size : t -> int
492 val tco_remote_min_batch_size : t -> int
494 val tco_num_remote_workers : t -> int
496 val tco_stream_errors : t -> bool
498 val so_remote_version_specifier : t -> string option
500 val so_remote_worker_vfs_checkout_threshold : t -> int
502 val so_naming_sqlite_path : t -> string option
504 val po_auto_namespace_map : t -> (string * string) list
506 val po_deregister_php_stdlib : t -> bool
508 val po_disallow_toplevel_requires : t -> bool
510 val po_disable_nontoplevel_declarations : t -> bool
512 val po_codegen : t -> bool
514 val tco_log_inference_constraints : t -> bool
516 val tco_disallow_array_typehint : t -> bool
518 val tco_disallow_array_literal : t -> bool
520 val tco_language_feature_logging : t -> bool
522 val tco_disallow_scrutinee_case_value_type_mismatch : t -> bool
524 val tco_timeout : t -> int
526 val tco_disallow_invalid_arraykey : t -> bool
528 val tco_disallow_byref_dynamic_calls : t -> bool
530 val tco_disallow_byref_calls : t -> bool
532 val default : t
534 val tco_experimental_generics_arity : string
536 val tco_experimental_forbid_nullable_cast : string
538 val tco_experimental_disallow_static_memoized : string
540 val tco_experimental_type_param_shadowing : string
542 val tco_experimental_abstract_type_const_with_default : string
544 val tco_experimental_infer_flows : string
546 val tco_experimental_case_sensitive_inheritance : string
548 val tco_experimental_supportdynamic_type_hint : string
550 val tco_experimental_all : SSet.t
552 val tco_migration_flags_all : SSet.t
554 val allowed_fixme_codes_strict : t -> ISet.t
556 val allowed_fixme_codes_partial : t -> ISet.t
558 val codes_not_raised_partial : t -> ISet.t
560 val log_levels : t -> int SMap.t
562 val po_disable_lval_as_an_expression : t -> bool
564 val tco_shallow_class_decl : t -> bool
566 val tco_force_shallow_decl_fanout : t -> bool
568 val tco_fetch_remote_old_decls : t -> bool
570 val tco_force_load_hot_shallow_decls : t -> bool
572 val tco_skip_hierarchy_checks : t -> bool
574 val po_rust_parser_errors : t -> bool
576 val tco_like_type_hints : t -> bool
578 val tco_union_intersection_type_hints : t -> bool
580 val tco_call_coeffects : t -> bool
582 val tco_local_coeffects : t -> bool
584 val tco_strict_contexts : t -> bool
586 val ifc_enabled : t -> string list
588 val enable_ifc : t -> t
590 val tco_like_casts : t -> bool
592 val tco_simple_pessimize : t -> float
594 val tco_complex_coercion : t -> bool
596 val error_codes_treated_strictly : t -> ISet.t
598 val tco_check_xhp_attribute : t -> bool
600 val tco_check_redundant_generics : t -> bool
602 val tco_disallow_unresolved_type_variables : t -> bool
604 val tco_disallow_trait_reuse : t -> bool
606 val tco_disallow_invalid_arraykey_constraint : t -> bool
608 val po_enable_class_level_where_clauses : t -> bool
610 val po_disable_legacy_soft_typehints : t -> bool
612 val po_allowed_decl_fixme_codes : t -> ISet.t
614 val po_allow_new_attribute_syntax : t -> bool
616 val tco_global_inference : t -> bool
618 val tco_gi_reinfer_types : t -> string list
620 val tco_ordered_solving : t -> bool
622 val tco_const_static_props : t -> bool
624 val po_disable_legacy_attribute_syntax : t -> bool
626 val tco_const_attribute : t -> bool
628 val po_const_default_func_args : t -> bool
630 val po_const_default_lambda_args : t -> bool
632 val po_disallow_silence : t -> bool
634 val po_abstract_static_props : t -> bool
636 val po_allow_unstable_features : t -> bool
638 val po_disable_unset_class_const : t -> bool
640 val set_global_inference : t -> t
642 val set_ordered_solving : t -> bool -> t
644 val po_parser_errors_only : t -> bool
646 val tco_check_attribute_locations : t -> bool
648 val glean_service : t -> string
650 val glean_hostname : t -> string
652 val glean_port : t -> int
654 val glean_reponame : t -> string
656 val symbol_write_root_path : t -> string
658 val symbol_write_hhi_path : t -> string
660 val symbol_write_ignore_paths : t -> string list
662 val symbol_write_index_paths : t -> string list
664 val symbol_write_index_paths_file : t -> string option
666 val symbol_write_index_paths_file_output : t -> string option
668 val symbol_write_include_hhi : t -> bool
670 val po_disallow_func_ptrs_in_constants : t -> bool
672 val tco_error_php_lambdas : t -> bool
674 val tco_disallow_discarded_nullable_awaitables : t -> bool
676 val po_enable_xhp_class_modifier : t -> bool
678 val po_disable_xhp_element_mangling : t -> bool
680 val po_disable_xhp_children_declarations : t -> bool
682 val po_enable_enum_classes : t -> bool
684 val po_disable_modes : t -> bool
686 val po_disable_hh_ignore_error : t -> bool
688 val po_disable_array : t -> bool
690 val po_disable_array_typehint : t -> bool
692 val tco_enable_systemlib_annotations : t -> bool
694 val tco_higher_kinded_types : t -> bool
696 val tco_method_call_inference : t -> bool
698 val tco_report_pos_from_reason : t -> bool
700 val tco_typecheck_sample_rate : t -> float
702 val tco_enable_sound_dynamic : t -> bool
704 val po_disallow_fun_and_cls_meth_pseudo_funcs : t -> bool
706 val po_disallow_inst_meth : t -> bool
708 val po_enable_readonly_in_emitter : t -> bool
710 val po_escape_brace : t -> bool
712 val tco_use_direct_decl_parser : t -> bool
714 val po_enable_enum_supertyping : t -> bool
716 val po_interpret_soft_types_as_like_types : t -> bool
718 val tco_enable_strict_string_concat_interp : t -> bool
720 val tco_ignore_unsafe_cast : t -> bool
722 val tco_readonly : t -> bool
724 val set_tco_readonly : t -> bool -> t
726 val set_tco_enable_expression_trees : t -> bool -> t
728 val tco_enable_modules : t -> bool
730 val set_tco_enable_modules : t -> bool -> t
732 val expression_trees_enabled : t -> bool
734 val allowed_expression_tree_visitors : t -> string list
736 val tco_math_new_code : t -> bool
738 val tco_typeconst_concrete_concrete_error : t -> bool
740 val tco_enable_strict_const_semantics : t -> bool
742 val tco_meth_caller_only_public_visibility : t -> bool
744 val tco_require_extends_implements_ancestors : t -> bool
746 val tco_strict_value_equality : t -> bool
748 val tco_enforce_sealed_subclasses : t -> bool
750 val tco_everything_sdt : t -> bool
752 val tco_pessimise_builtins : t -> bool
754 val tco_enable_disk_heap : t -> bool
756 val tco_pure_default_consistent_constructors : t -> bool
758 val tco_explicit_consistent_constructors : t -> int