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<<a2d5c262affb20acb440bc2460e1460e>>
8 // To regenerate this file, run:
9 // hphp/hack/src/oxidized_regen.sh
11 use arena_trait::TrivialDrop;
12 use eq_modulo_pos::EqModuloPos;
13 use eq_modulo_pos::EqModuloPosAndReason;
14 use no_pos_hash::NoPosHash;
15 use ocamlrep_derive::FromOcamlRep;
16 use ocamlrep_derive::FromOcamlRepIn;
17 use ocamlrep_derive::ToOcamlRep;
19 use serde::Deserialize;
22 pub use crate::shape_map;
23 #[allow(unused_imports)]
26 pub type Id_ = String;
45 pub struct Id(pub Pos, pub Id_);
47 pub type Pstring = (Pos, String);
49 pub type ByteString = String;
51 pub type PositionedByteString = (Pos, bstr::BString);
70 pub enum ShapeFieldName {
71 #[rust_to_ocaml(name = "SFlit_int")]
73 #[rust_to_ocaml(name = "SFlit_str")]
74 SFlitStr(PositionedByteString),
75 #[rust_to_ocaml(name = "SFclass_const")]
76 SFclassConst(Id, Pstring),
103 impl TrivialDrop for Variance {}
104 arena_deserializer::impl_deserialize_in_arena!(Variance);
113 EqModuloPosAndReason,
125 pub enum ConstraintKind {
126 #[rust_to_ocaml(name = "Constraint_as")]
128 #[rust_to_ocaml(name = "Constraint_eq")]
130 #[rust_to_ocaml(name = "Constraint_super")]
133 impl TrivialDrop for ConstraintKind {}
134 arena_deserializer::impl_deserialize_in_arena!(ConstraintKind);
136 pub type Reified = bool;
145 EqModuloPosAndReason,
157 pub enum Abstraction {
161 impl TrivialDrop for Abstraction {}
162 arena_deserializer::impl_deserialize_in_arena!(Abstraction);
171 EqModuloPosAndReason,
183 pub enum ClassishKind {
184 /// Kind for `class` and `abstract class`
186 /// Kind for `interface`
192 /// Kind for `enum class` and `abstract enum class`.
193 /// See https://docs.hhvm.com/hack/built-in-types/enum-class
194 #[rust_to_ocaml(name = "Cenum_class")]
195 CenumClass(Abstraction),
204 EqModuloPosAndReason,
216 /// Contains the position for an entire `inout` annotated expression, e.g.:
231 EqModuloPosAndReason,
243 pub enum ReadonlyKind {
246 impl TrivialDrop for ReadonlyKind {}
247 arena_deserializer::impl_deserialize_in_arena!(ReadonlyKind);
256 EqModuloPosAndReason,
268 pub enum OgNullFlavor {
269 #[rust_to_ocaml(name = "OG_nullthrows")]
271 #[rust_to_ocaml(name = "OG_nullsafe")]
274 impl TrivialDrop for OgNullFlavor {}
275 arena_deserializer::impl_deserialize_in_arena!(OgNullFlavor);
284 EqModuloPosAndReason,
296 pub enum PropOrMethod {
297 #[rust_to_ocaml(name = "Is_prop")]
299 #[rust_to_ocaml(name = "Is_method")]
302 impl TrivialDrop for PropOrMethod {}
303 arena_deserializer::impl_deserialize_in_arena!(PropOrMethod);
312 EqModuloPosAndReason,
330 impl TrivialDrop for FunKind {}
331 arena_deserializer::impl_deserialize_in_arena!(FunKind);
339 EqModuloPosAndReason,
353 /// Subtraction: x - y
355 /// Multiplication: x * y
359 /// Value/coercing equality: x == y
361 /// Same-type-and-value equality: x === y
365 /// Value inquality: x != y
367 /// Not-same-type-and-value-equality: x !== y
369 /// Logical AND: x && y
371 /// Logical OR: x || y
375 /// Less than or equal to: x <= y
377 /// Greater than: x > y
379 /// Greater than or equal to: x >= y
381 /// String concatenation: x . y
383 /// Bitwise AND: x & y
385 /// Bitwise OR: x | y
387 /// Bitwise left shift: x << y
389 /// Bitwise right shift: x >> y
393 /// Bitwise XOR: x ^ y
395 /// Spaceship operator: x <=> y
400 Eq(Option<Box<Bop>>),
410 EqModuloPosAndReason,
423 /// Bitwise negation: ~x
431 /// Unary increment: ++i
433 /// Unary decrement: --i
435 /// Unary postfix increment: i++
437 /// Unary postfix decrement: i--
439 /// Error control/Silence (ignore) expections: @e
442 impl TrivialDrop for Uop {}
443 arena_deserializer::impl_deserialize_in_arena!(Uop);
452 EqModuloPosAndReason,
464 pub enum Visibility {
465 #[rust_to_ocaml(attr = r#"visitors.name "visibility_Private""#)]
467 #[rust_to_ocaml(attr = r#"visitors.name "visibility_Public""#)]
469 #[rust_to_ocaml(attr = r#"visitors.name "visibility_Protected""#)]
471 #[rust_to_ocaml(attr = r#"visitors.name "visibility_Internal""#)]
474 impl TrivialDrop for Visibility {}
475 arena_deserializer::impl_deserialize_in_arena!(Visibility);
477 /// Literal values that can occur in XHP enum properties.
479 /// class :my-xhp-class {
480 /// attribute enum {'big', 'small'} my-prop;
488 EqModuloPosAndReason,
499 pub enum XhpEnumValue {
500 #[rust_to_ocaml(name = "XEV_Int")]
502 #[rust_to_ocaml(name = "XEV_String")]
506 /// Hack's primitive types (as the typechecker understands them).
508 /// Used in the AST of typehints (Aast_defs.Hprim) and in the representation of
509 /// types (Typing_defs.Tprim).
517 EqModuloPosAndReason,
541 impl TrivialDrop for Tprim {}
542 arena_deserializer::impl_deserialize_in_arena!(Tprim);
551 EqModuloPosAndReason,
563 pub enum TypedefVisibility {
568 impl TrivialDrop for TypedefVisibility {}
569 arena_deserializer::impl_deserialize_in_arena!(TypedefVisibility);
578 EqModuloPosAndReason,
589 #[rust_to_ocaml(attr = r#"deriving ((show { with_path = false }), eq, ord,
594 visit_prefix = "on_";
595 ancestors = ["Visitors_runtime.iter_base"]
601 visit_prefix = "on_";
602 ancestors = ["Visitors_runtime.endo_base"]
608 visit_prefix = "on_";
609 ancestors = ["Visitors_runtime.reduce_base"]
615 visit_prefix = "on_";
616 ancestors = ["Visitors_runtime.map_base"]
624 impl TrivialDrop for ReifyKind {}
625 arena_deserializer::impl_deserialize_in_arena!(ReifyKind);