Module Comp.Pattern_object

type t =
  1. | Raw_identifier of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. identifier : Beluga_syntax.Syncom.Identifier.t;
    3. prefixed : Stdlib.Bool.t;
    }
  2. | Raw_qualified_identifier of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. identifier : Beluga_syntax.Syncom.Qualified_identifier.t;
    3. prefixed : Stdlib.Bool.t;
    }
  3. | Raw_box of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. pattern : Synprs__.Synprs_definition.Meta.Thing.t;
    }
  4. | Raw_tuple of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. elements : t Support.List2.t;
    }
  5. | Raw_application of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. patterns : t Support.List2.t;
    }
  6. | Raw_annotated of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. pattern : t;
    3. typ : Sort_object.t;
    }
  7. | Raw_meta_annotated of {
    1. location : Beluga_syntax.Syncom.Location.t;
    2. parameter_identifier : Beluga_syntax.Syncom.Identifier.t Support.Option.t * [ `Plain | `Hash | `Dollar ];
    3. parameter_typ : Synprs__.Synprs_definition.Meta.Thing.t Support.Option.t;
    4. pattern : t;
    }
    (*

    Raw_meta_annotated { paramter_identifier = Option.Some "x"; modifier; parameter_typ = Option.Some t; pattern; _ } is the the pattern { x : t } pattern.

    It is a syntax error to omit the identifier or the type.

    *)
  8. | Raw_wildcard of {
    1. location : Beluga_syntax.Syncom.Location.t;
    }