Add SetModule and fd_module defs
commita7b5f59516d50aa1ad20c63e16e1d61ed5ce67be
authorJames Wu <jjwu@fb.com>
Fri, 22 Apr 2022 22:43:53 +0000 (22 15:43 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Fri, 22 Apr 2022 22:43:53 +0000 (22 15:43 -0700)
tree1c3c3a3bb43b239418586c1cd6fecddc817580f7
parent1f5b554925aeb0a4116d847051a56ccefa18e160
Add SetModule and fd_module defs

Summary:
This diff adds SetModule as a new AST def in the AAST. It does not implement parsing for it in the FFP, so nothing in the CST lowers to it just yet. But it allows us to represent setting module membership at the start of a file.

After this diff, we will add code in namespace_elaborate.rs to move namespaces to toplevel entities just like file attributes. This diff just adds the aast node and makes it compile.

Reviewed By: oulgen

Differential Revision: D35372038

fbshipit-source-id: 35d49da003c1b30eec90355231d0c2889586969b
276 files changed:
hphp/hack/src/annotated_ast/aast.ml
hphp/hack/src/decl/decl.ml
hphp/hack/src/decl/decl_nast.ml
hphp/hack/src/hackc/compile/closure_convert.rs
hphp/hack/src/hackc/compile/rewrite_program.rs
hphp/hack/src/hh_single_decl.ml
hphp/hack/src/naming/naming.ml
hphp/hack/src/naming/nast.ml
hphp/hack/src/oxidized/aast_visitor/node_impl_gen.rs
hphp/hack/src/oxidized/aast_visitor/node_mut_impl_gen.rs
hphp/hack/src/oxidized/gen/aast.rs
hphp/hack/src/oxidized/impl_gen/aast_impl_gen.rs
hphp/hack/src/oxidized/manual/aast_impl.rs
hphp/hack/src/oxidized_by_ref/gen/aast.rs
hphp/hack/src/parser/lowerer/lowerer.rs
hphp/hack/src/rupro/hackrs/naming/naming.rs
hphp/hack/src/rupro/hackrs/typing/ast/typing_class.rs
hphp/hack/src/rupro/hackrs/typing/ast/typing_fun_def.rs
hphp/hack/src/rupro/hackrs/typing_check_utils.rs
hphp/hack/src/typing/nast_check_env.ml
hphp/hack/src/typing/tast_env.ml
hphp/hack/src/typing/typing_toplevel.ml
hphp/hack/src/typing/typing_type_wellformedness.ml
hphp/hack/src/typing/typing_typedef.ml
hphp/hack/src/typing/typing_variance.ml
hphp/hack/test/holes/append_keyset.php.holes.exp
hphp/hack/test/holes/append_set.php.holes.exp
hphp/hack/test/holes/append_string_datetime.php.holes.exp
hphp/hack/test/holes/array_access_read_object.php.holes.exp
hphp/hack/test/holes/array_access_read_prim.php.holes.exp
hphp/hack/test/holes/array_access_write_intersection.php.holes.exp
hphp/hack/test/holes/array_access_write_object.php.holes.exp
hphp/hack/test/holes/array_access_write_prim.php.holes.exp
hphp/hack/test/holes/array_access_write_union.php.holes.exp
hphp/hack/test/holes/array_append_object.php.holes.exp
hphp/hack/test/holes/array_append_prim.php.holes.exp
hphp/hack/test/holes/array_append_union.php.holes.exp
hphp/hack/test/holes/array_const_mutation_immvector.php.holes.exp
hphp/hack/test/holes/array_const_mutation_keyedcontainer.php.holes.exp
hphp/hack/test/holes/array_get_index_dict.php.holes.exp
hphp/hack/test/holes/array_get_index_immvector.php.holes.exp
hphp/hack/test/holes/array_get_index_keyed_container.php.holes.exp
hphp/hack/test/holes/array_get_index_keyset.php.holes.exp
hphp/hack/test/holes/array_get_index_map.php.holes.exp
hphp/hack/test/holes/array_get_index_mixed.php.holes.exp
hphp/hack/test/holes/array_get_index_nullable.php.holes.exp
hphp/hack/test/holes/array_get_index_pair.php.holes.exp
hphp/hack/test/holes/array_get_index_string.php.holes.exp
hphp/hack/test/holes/array_get_index_tuple.php.holes.exp
hphp/hack/test/holes/array_get_index_varray.php.holes.exp
hphp/hack/test/holes/array_get_index_vec.php.holes.exp
hphp/hack/test/holes/array_get_index_vector.php.holes.exp
hphp/hack/test/holes/assign_array_append_intersection.php.holes.exp
hphp/hack/test/holes/assign_array_append_set.php.holes.exp
hphp/hack/test/holes/assign_array_append_union.php.holes.exp
hphp/hack/test/holes/assign_array_append_vector.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_dict.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_map.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_string.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_tuple.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_varray.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_vec.php.holes.exp
hphp/hack/test/holes/assign_array_get_index_vector.php.holes.exp
hphp/hack/test/holes/assign_array_get_map.php.holes.exp
hphp/hack/test/holes/assign_array_get_string.php.holes.exp
hphp/hack/test/holes/assign_array_get_union.php.holes.exp
hphp/hack/test/holes/assign_array_get_vector.php.holes.exp
hphp/hack/test/holes/assign_class_get.php.holes.exp
hphp/hack/test/holes/assign_list.php.holes.exp
hphp/hack/test/holes/assign_obj_get.php.holes.exp
hphp/hack/test/holes/call_collection.php.holes.exp
hphp/hack/test/holes/call_dead_code.php.holes.exp
hphp/hack/test/holes/call_dict.php.holes.exp
hphp/hack/test/holes/call_generic.php.holes.exp
hphp/hack/test/holes/call_imm_set.php.holes.exp
hphp/hack/test/holes/call_imm_vector.php.holes.exp
hphp/hack/test/holes/call_inout.php.holes.exp
hphp/hack/test/holes/call_iterable.php.holes.exp
hphp/hack/test/holes/call_keyed_traversable.php.holes.exp
hphp/hack/test/holes/call_keyset.php.holes.exp
hphp/hack/test/holes/call_pair.php.holes.exp
hphp/hack/test/holes/call_prim.php.holes.exp
hphp/hack/test/holes/call_refinement.php.holes.exp
hphp/hack/test/holes/call_set.php.holes.exp
hphp/hack/test/holes/call_traversable.php.holes.exp
hphp/hack/test/holes/call_tuple.php.holes.exp
hphp/hack/test/holes/call_unpack.php.holes.exp
hphp/hack/test/holes/call_variadic.php.holes.exp
hphp/hack/test/holes/call_varray.php.holes.exp
hphp/hack/test/holes/call_varray_or_darray.php.holes.exp
hphp/hack/test/holes/call_vec.php.holes.exp
hphp/hack/test/holes/call_vector.php.holes.exp
hphp/hack/test/holes/compound_assign_bitwise_and.php.holes.exp
hphp/hack/test/holes/compound_assign_div.php.holes.exp
hphp/hack/test/holes/compound_assign_plus.php.holes.exp
hphp/hack/test/holes/compound_assign_rshift.php.holes.exp
hphp/hack/test/holes/const_mutation_map.php.holes.exp
hphp/hack/test/holes/const_mutation_nothing.php.holes.exp
hphp/hack/test/holes/const_mutation_vector.php.holes.exp
hphp/hack/test/holes/echo_non_arraykey.php.holes.exp
hphp/hack/test/holes/expected_class.php.holes.exp
hphp/hack/test/holes/expected_class_intersection.php.holes.exp
hphp/hack/test/holes/expected_class_intersection_classname.php.holes.exp
hphp/hack/test/holes/expected_class_union.php.holes.exp
hphp/hack/test/holes/expected_class_union_classname.php.holes.exp
hphp/hack/test/holes/expr_dependent.php.holes.exp
hphp/hack/test/holes/foreach_async_non_traversable.php.holes.exp
hphp/hack/test/holes/foreach_async_union_int_dynamic.php.holes.exp
hphp/hack/test/holes/foreach_kv_non_traversable.php.holes.exp
hphp/hack/test/holes/foreach_kv_union_int_dynamic.php.holes.exp
hphp/hack/test/holes/foreach_non_traversable.php.holes.exp
hphp/hack/test/holes/foreach_union_int_dynamic.php.holes.exp
hphp/hack/test/holes/imprecise_cast.php.holes.exp
hphp/hack/test/holes/keyset_lit.php.holes.exp
hphp/hack/test/holes/keyvalue_collection_lit.php.holes.exp
hphp/hack/test/holes/member_not_found_method.php.holes.exp
hphp/hack/test/holes/member_not_found_property.php.holes.exp
hphp/hack/test/holes/non_object_member_read_intersection.php.holes.exp
hphp/hack/test/holes/non_object_member_read_method.php.holes.exp
hphp/hack/test/holes/non_object_member_read_property.php.holes.exp
hphp/hack/test/holes/non_object_member_read_union.php.holes.exp
hphp/hack/test/holes/null_member_read_method.php.holes.exp
hphp/hack/test/holes/null_member_read_property.php.holes.exp
hphp/hack/test/holes/pair_lit.php.holes.exp
hphp/hack/test/holes/return_async.php.holes.exp
hphp/hack/test/holes/return_awaitable_void.php.holes.exp
hphp/hack/test/holes/return_literal.php.holes.exp
hphp/hack/test/holes/return_refinement.php.holes.exp
hphp/hack/test/holes/return_sync.php.holes.exp
hphp/hack/test/holes/string_interp.php.holes.exp
hphp/hack/test/holes/unsafe_cast_flow_typing.php.holes.exp
hphp/hack/test/holes/value_collection_lit.php.holes.exp
hphp/hack/test/holes/xhp_simple_attribute.php.holes.exp
hphp/hack/test/holes/xhp_spread_attribute.php.holes.exp
hphp/hack/test/nast/class_level_where_clauses/test_class_level_where_clauses.php.exp
hphp/hack/test/nast/coeffects/anon.php.exp
hphp/hack/test/nast/coeffects/ctx_alias.php.exp
hphp/hack/test/nast/coeffects/ctx_const.php.exp
hphp/hack/test/nast/coeffects/ctx_const2.php.exp
hphp/hack/test/nast/coeffects/ctx_const_abstract.php.exp
hphp/hack/test/nast/coeffects/ctx_const_both_bounds.php.exp
hphp/hack/test/nast/coeffects/ctx_const_fail.php.exp
hphp/hack/test/nast/coeffects/ctx_const_lower_bound.php.exp
hphp/hack/test/nast/coeffects/ctx_const_naespacing.php.exp
hphp/hack/test/nast/coeffects/ctx_const_upper_bound.php.exp
hphp/hack/test/nast/coeffects/poly_ctx.php.exp
hphp/hack/test/nast/coeffects/poly_var.php.exp
hphp/hack/test/nast/coeffects_poly_var.php.exp
hphp/hack/test/nast/expression_tree.php.exp
hphp/hack/test/nast/expression_tree_assign.php.exp
hphp/hack/test/nast/expression_tree_for.php.exp
hphp/hack/test/nast/expression_tree_function_order.php.exp
hphp/hack/test/nast/expression_tree_invalid.php.exp
hphp/hack/test/nast/expression_tree_loop.php.exp
hphp/hack/test/nast/expression_tree_pipe.php.exp
hphp/hack/test/nast/expression_tree_splice.php.exp
hphp/hack/test/nast/expression_tree_xhp.php.exp
hphp/hack/test/nast/file_attributes_from_multiple_namespaces.php.exp
hphp/hack/test/nast/file_attributes_in_namespaces.php.exp
hphp/hack/test/nast/file_attributes_in_namespaces_with_namespaced_values.php.exp
hphp/hack/test/nast/fun_decl.php.exp
hphp/hack/test/nast/fun_empty.php.exp
hphp/hack/test/nast/function_pointers/class_meth.php.exp
hphp/hack/test/nast/function_pointers/function_pointer.php.exp
hphp/hack/test/nast/hh_show.php.exp
hphp/hack/test/nast/higher_kinded_type_constraints1.php.exp
hphp/hack/test/nast/higher_kinded_type_constraints2.php.exp
hphp/hack/test/nast/multifile.php.exp
hphp/hack/test/nast/numeric_literals_underscores.php.exp
hphp/hack/test/nast/top_level.php.exp
hphp/hack/test/nast/typeconsts/multiple-bounds_as-only.php.exp
hphp/hack/test/tast/add_vector.php.exp
hphp/hack/test/tast/arith_plus.php.exp
hphp/hack/test/tast/array_order.php.exp
hphp/hack/test/tast/async_lambda.php.exp
hphp/hack/test/tast/awaitall.php.exp
hphp/hack/test/tast/call_args.php.exp
hphp/hack/test/tast/class_const.php.exp
hphp/hack/test/tast/class_get.php.exp
hphp/hack/test/tast/class_level_where_clauses/test_class_level_where_clauses.php.exp
hphp/hack/test/tast/coeffects.php.exp
hphp/hack/test/tast/concurrent_error.php.exp
hphp/hack/test/tast/construct_unknown_class.php.exp
hphp/hack/test/tast/contravariant_solve.php.exp
hphp/hack/test/tast/control_flow/do.php.exp
hphp/hack/test/tast/control_flow/do_throw_while.php.exp
hphp/hack/test/tast/control_flow/dos.php.exp
hphp/hack/test/tast/control_flow/loop_cond.php.exp
hphp/hack/test/tast/control_flow/while.php.exp
hphp/hack/test/tast/control_flow/while_throw.php.exp
hphp/hack/test/tast/dict_attribute.php.exp
hphp/hack/test/tast/dynamic_member_access.php.exp
hphp/hack/test/tast/eq_op.php.exp
hphp/hack/test/tast/fake_member.php.exp
hphp/hack/test/tast/file_attributes_from_multiple_namespaces.php.exp
hphp/hack/test/tast/file_attributes_in_namespaces.php.exp
hphp/hack/test/tast/file_attributes_in_namespaces_with_namespaced_values.php.exp
hphp/hack/test/tast/finally.php.exp
hphp/hack/test/tast/fun_meth_variadic.php.exp
hphp/hack/test/tast/global_inference/array.php.exp
hphp/hack/test/tast/global_inference/call_chain.php.exp
hphp/hack/test/tast/global_inference/call_chain_evil.php.exp
hphp/hack/test/tast/global_inference/call_chain_evil2.php.exp
hphp/hack/test/tast/global_inference/call_chain_evil_evil.php.exp
hphp/hack/test/tast/global_inference/call_chain_evil_evil1.php.exp
hphp/hack/test/tast/global_inference/call_chain_evil_evil1_static.php.exp
hphp/hack/test/tast/global_inference/fun_composed.php.exp
hphp/hack/test/tast/global_inference/fun_composed_small.php.exp
hphp/hack/test/tast/global_inference/id_composed.php.exp
hphp/hack/test/tast/global_inference/map.php.exp
hphp/hack/test/tast/global_inference/mymap.php.exp
hphp/hack/test/tast/global_inference/one_two_three.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_inferred_parameters.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_inferred_parameters_constructor.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_parameter_call.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_parameter_call_method.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_parameter_indirect.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_parameter_method.php.exp
hphp/hack/test/tast/global_inference/params/type_hint_parameter_survive_assignment.php.exp
hphp/hack/test/tast/global_inference/partial_annot.php.exp
hphp/hack/test/tast/global_inference/partial_annot_where.php.exp
hphp/hack/test/tast/global_inference/properties/inherit.php.exp
hphp/hack/test/tast/global_inference/properties/type_hint_inferred_property_assignment.php.exp
hphp/hack/test/tast/global_inference/properties/type_hint_inferred_property_constructor.php.exp
hphp/hack/test/tast/global_inference/properties/type_hint_inferred_property_getter.php.exp
hphp/hack/test/tast/global_inference/properties/type_hint_inferred_property_initializer.php.exp
hphp/hack/test/tast/global_inference/properties/type_hint_inferred_property_setter.php.exp
hphp/hack/test/tast/global_inference/reinfer_types/call_chain_evil.php.exp
hphp/hack/test/tast/global_inference/reinfer_types/return_type_awaitable.php.exp
hphp/hack/test/tast/global_inference/reinfer_types/unsafe_type_fixme.php.exp
hphp/hack/test/tast/global_inference/return/type_hint_inferred_awaitable.php.exp
hphp/hack/test/tast/global_inference/return/type_hint_inferred_function.php.exp
hphp/hack/test/tast/global_inference/return/type_hint_inferred_method.php.exp
hphp/hack/test/tast/global_inference/type_hint_inferred_anon_function.php.exp
hphp/hack/test/tast/global_inference/typeparams/type_hint_typeparameter_custom.php.exp
hphp/hack/test/tast/global_inference/typeparams/type_hint_typeparameter_method.php.exp
hphp/hack/test/tast/global_inference/typeparams/type_hint_typeparameter_subtyping.php.exp
hphp/hack/test/tast/global_inference/typeparams/type_hint_typeparameter_variance.php.exp
hphp/hack/test/tast/initializer.php.exp
hphp/hack/test/tast/invalid_fun_pointer.php.exp
hphp/hack/test/tast/lambda1.php.exp
hphp/hack/test/tast/lambda_contextual.php.exp
hphp/hack/test/tast/lambda_efun.php.exp
hphp/hack/test/tast/lambda_return_type.php.exp
hphp/hack/test/tast/mixed_mixed.php.exp
hphp/hack/test/tast/multiple_type.php.exp
hphp/hack/test/tast/null_check.php.exp
hphp/hack/test/tast/null_coalesce.php.exp
hphp/hack/test/tast/null_coalesce_assignment.php.exp
hphp/hack/test/tast/parent_construct.php.exp
hphp/hack/test/tast/parent_method.php.exp
hphp/hack/test/tast/pseudofunctions.php.exp
hphp/hack/test/tast/re_prefixed_string/re_prefixed_string.php.exp
hphp/hack/test/tast/reactive.php.exp
hphp/hack/test/tast/reified_generic_attributes.php.exp
hphp/hack/test/tast/reified_generic_shadowing.php.exp
hphp/hack/test/tast/reified_generic_shadowing2.php.exp
hphp/hack/test/tast/reified_generic_shadowing3.php.exp
hphp/hack/test/tast/reify_mix_with_erased.php.exp
hphp/hack/test/tast/sdt/nonnull_and_mixed.php.exp
hphp/hack/test/tast/sdt/sdt.php.exp
hphp/hack/test/tast/shapes_special_functions.php.exp
hphp/hack/test/tast/singleton_unresolved_function_call.php.exp
hphp/hack/test/tast/switch_fallthrough.php.exp
hphp/hack/test/tast/try_catch.php.exp
hphp/hack/test/tast/typeconsts.php.exp
hphp/hack/test/tast/typedef.php.exp
hphp/hack/test/tast/unbound_func.php.exp
hphp/hack/test/tast/unbound_global.php.exp
hphp/hack/test/tast/unbound_name_partial.php.exp
hphp/hack/test/tast/unresolved_grown_after_lambda.php.exp
hphp/hack/test/tast/using.php.exp
hphp/hack/test/tast/wildcard_generic_depth.php.exp
hphp/hack/test/tast/xhp.php.exp
hphp/hack/test/tast/xhp_modifier/xhp.php.exp
hphp/hack/test/tast/xml_child_order.php.exp