1 // Copyright (c) Facebook, Inc. and its affiliates.
3 // This source code is licensed under the MIT license found in the
4 // LICENSE file in the "hack" directory of this source tree.
6 // @generated SignedSource<<05b80ca1176423ba7bdc6dae70db2964>>
8 // To regenerate this file, run:
9 // hphp/hack/src/oxidize_regen.sh
11 use arena_trait::TrivialDrop;
12 use no_pos_hash::NoPosHash;
13 use ocamlrep_derive::FromOcamlRep;
14 use ocamlrep_derive::FromOcamlRepIn;
15 use ocamlrep_derive::ToOcamlRep;
18 #[allow(unused_imports)]
21 pub use crate::ast_defs::shape_map;
23 pub use ast_defs::OgNullFlavor;
24 pub use ast_defs::Pos;
25 pub use ast_defs::PositionedByteString;
26 pub use ast_defs::Pstring;
27 pub use local_id::LocalId;
28 pub use shape_map::ShapeMap;
30 pub use oxidized::aast_defs::Visibility;
45 pub struct Lid<'a>(pub &'a Pos<'a>, pub &'a LocalId<'a>);
46 impl<'a> TrivialDrop for Lid<'a> {}
48 pub type Sid<'a> = ast_defs::Id<'a>;
50 pub use oxidized::aast_defs::IsReified;
52 pub use oxidized::aast_defs::FuncReactive;
54 pub use oxidized::aast_defs::ParamMutability;
56 pub use oxidized::aast_defs::ImportFlavor;
72 pub enum XhpChild<'a> {
73 ChildName(&'a Sid<'a>),
74 ChildList(&'a [XhpChild<'a>]),
75 ChildUnary(&'a (XhpChild<'a>, oxidized::aast_defs::XhpChildOp)),
76 ChildBinary(&'a (XhpChild<'a>, XhpChild<'a>)),
78 impl<'a> TrivialDrop for XhpChild<'a> {}
80 pub use oxidized::aast_defs::XhpChildOp;
95 pub struct Hint<'a>(pub &'a Pos<'a>, pub &'a Hint_<'a>);
96 impl<'a> TrivialDrop for Hint<'a> {}
98 pub use oxidized::aast_defs::MutableReturn;
100 pub type VariadicHint<'a> = Option<&'a Hint<'a>>;
115 pub struct Contexts<'a>(pub &'a Pos<'a>, pub &'a [&'a Hint<'a>]);
116 impl<'a> TrivialDrop for Contexts<'a> {}
131 pub struct HintFun<'a> {
132 pub reactive_kind: oxidized::aast_defs::FuncReactive,
133 pub param_tys: &'a [&'a Hint<'a>],
134 pub param_kinds: &'a [Option<oxidized::ast_defs::ParamKind>],
135 pub param_mutability: &'a [Option<oxidized::aast_defs::ParamMutability>],
136 pub variadic_ty: &'a VariadicHint<'a>,
137 pub ctxs: Option<&'a Contexts<'a>>,
138 pub return_ty: &'a Hint<'a>,
139 pub is_mutable_return: &'a oxidized::aast_defs::MutableReturn,
141 impl<'a> TrivialDrop for HintFun<'a> {}
158 Hoption(&'a Hint<'a>),
160 Hfun(&'a HintFun<'a>),
161 Htuple(&'a [&'a Hint<'a>]),
162 Happly(&'a (Sid<'a>, &'a [&'a Hint<'a>])),
163 Hshape(&'a NastShapeInfo<'a>),
164 /// This represents the use of a type const. Type consts are accessed like
165 /// regular consts in Hack, i.e.
167 /// [$x | self | static | Class]::TypeConst
169 /// Class => Happly "Class"
170 /// self => Happly of the class of definition
171 /// static => Habstr ("static",
172 /// Habstr ("this", (Constraint_as, Happly of class of definition)))
175 /// Type const access can be chained such as
177 /// Class::TC1::TC2::TC3
179 /// We resolve the root of the type access chain as a type as follows.
181 /// This will result in the following representation
183 /// Haccess (Happly "Class", ["TC1", "TC2", "TC3"])
184 Haccess(&'a (&'a Hint<'a>, &'a [Sid<'a>])),
190 Habstr(&'a (&'a str, &'a [&'a Hint<'a>])),
191 Hdarray(&'a (&'a Hint<'a>, &'a Hint<'a>)),
192 Hvarray(&'a Hint<'a>),
193 HvarrayOrDarray(&'a (Option<&'a Hint<'a>>, &'a Hint<'a>)),
198 Hunion(&'a [&'a Hint<'a>]),
199 Hintersection(&'a [&'a Hint<'a>]),
200 HfunContext(&'a str),
203 impl<'a> TrivialDrop for Hint_<'a> {}
205 /// AST types such as Happly("int", []) are resolved to Hprim values
233 impl TrivialDrop for Tprim {}
248 pub struct ShapeFieldInfo<'a> {
250 pub hint: &'a Hint<'a>,
251 pub name: ast_defs::ShapeFieldName<'a>,
253 impl<'a> TrivialDrop for ShapeFieldInfo<'a> {}
268 pub struct NastShapeInfo<'a> {
269 pub allows_unknown_fields: bool,
270 pub field_map: &'a [&'a ShapeFieldInfo<'a>],
272 impl<'a> TrivialDrop for NastShapeInfo<'a> {}
274 pub use oxidized::aast_defs::KvcKind;
276 pub use oxidized::aast_defs::VcKind;
278 pub use oxidized::aast_defs::UseAsVisibility;
280 pub use oxidized::aast_defs::TypedefVisibility;
295 pub struct Enum_<'a> {
296 pub base: &'a Hint<'a>,
297 pub constraint: Option<&'a Hint<'a>>,
298 pub includes: &'a [&'a Hint<'a>],
299 pub enum_class: bool,
301 impl<'a> TrivialDrop for Enum_<'a> {}
316 pub struct WhereConstraintHint<'a>(
318 pub oxidized::ast_defs::ConstraintKind,
321 impl<'a> TrivialDrop for WhereConstraintHint<'a> {}
323 pub use oxidized::aast_defs::ReifyKind;