packages feed

wireform-proto-0.1.0.0: test-conformance/protos/test_messages_proto3.proto

// Vendored (subset) from
// https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/test_messages_proto3.proto
//
// We carry the full structural shape of TestAllTypesProto3
// including the Well-Known-Types arms (Timestamp, Duration, Any,
// Struct, Wrappers, FieldMask, Empty, Value, ListValue,
// NullValue). 'loadProto' doesn't follow proto @import@s, so we
// can't @import "google/protobuf/timestamp.proto"@ here; instead
// the bridge has a hard-coded WKT registry (see
// 'Proto.TH.lookupWkt') that resolves any @FTNamed
// "google.protobuf.X"@ reference to the corresponding pre-
// generated 'Proto.Google.Protobuf.X' type.
//
// To avoid duplicating the WKT type names in this file (the
// parser doesn't know they're WKTs), we cite them by their
// fully-qualified proto names. The bridge's WKT registry then
// maps each FQN to the right Haskell type.

syntax = "proto3";

package protobuf_test_messages.proto3;

message TestAllTypesProto3 {
  message NestedMessage {
    int32 a = 1;
    TestAllTypesProto3 corecursive = 2;
  }

  enum NestedEnum {
    FOO = 0;
    BAR = 1;
    BAZ = 2;
    NEG = -1;
  }

  // Mirrors upstream test_messages_proto3 — multiple proto-side
  // names share wire number 2 (allow_alias). The conformance
  // EnumFieldWithAlias{*} tests fire on this enum.
  enum AliasedEnum {
    option allow_alias = true;

    ALIAS_FOO = 0;
    ALIAS_BAR = 1;
    ALIAS_BAZ = 2;
    MOO = 2;
    moo = 2;
    bAz = 2;
  }

  // Singular scalars.
  int32    optional_int32    = 1;
  int64    optional_int64    = 2;
  uint32   optional_uint32   = 3;
  uint64   optional_uint64   = 4;
  sint32   optional_sint32   = 5;
  sint64   optional_sint64   = 6;
  fixed32  optional_fixed32  = 7;
  fixed64  optional_fixed64  = 8;
  sfixed32 optional_sfixed32 = 9;
  sfixed64 optional_sfixed64 = 10;
  float    optional_float    = 11;
  double   optional_double   = 12;
  bool     optional_bool     = 13;
  string   optional_string   = 14;
  bytes    optional_bytes    = 15;

  NestedMessage  optional_nested_message  = 18;
  ForeignMessage optional_foreign_message = 19;

  NestedEnum  optional_nested_enum  = 21;
  ForeignEnum optional_foreign_enum = 22;
  AliasedEnum optional_aliased_enum = 23;

  TestAllTypesProto3 recursive_message = 27;

  // Repeated scalars (default proto3 = packed).
  repeated int32    repeated_int32    = 31;
  repeated int64    repeated_int64    = 32;
  repeated uint32   repeated_uint32   = 33;
  repeated uint64   repeated_uint64   = 34;
  repeated sint32   repeated_sint32   = 35;
  repeated sint64   repeated_sint64   = 36;
  repeated fixed32  repeated_fixed32  = 37;
  repeated fixed64  repeated_fixed64  = 38;
  repeated sfixed32 repeated_sfixed32 = 39;
  repeated sfixed64 repeated_sfixed64 = 40;
  repeated float    repeated_float    = 41;
  repeated double   repeated_double   = 42;
  repeated bool     repeated_bool     = 43;
  repeated string   repeated_string   = 44;
  repeated bytes    repeated_bytes    = 45;

  repeated NestedMessage  repeated_nested_message  = 48;
  repeated ForeignMessage repeated_foreign_message = 49;

  repeated NestedEnum  repeated_nested_enum  = 51;
  repeated ForeignEnum repeated_foreign_enum = 52;

  // Packed (explicit) — same wire format as proto3 default
  // for packable scalars; exercised separately to make sure the
  // packed encoder path is hit when the user writes [packed = true].
  repeated int32    packed_int32    = 75 [packed = true];
  repeated int64    packed_int64    = 76 [packed = true];
  repeated uint32   packed_uint32   = 77 [packed = true];
  repeated uint64   packed_uint64   = 78 [packed = true];
  repeated sint32   packed_sint32   = 79 [packed = true];
  repeated sint64   packed_sint64   = 80 [packed = true];
  repeated fixed32  packed_fixed32  = 81 [packed = true];
  repeated fixed64  packed_fixed64  = 82 [packed = true];
  repeated sfixed32 packed_sfixed32 = 83 [packed = true];
  repeated sfixed64 packed_sfixed64 = 84 [packed = true];
  repeated float    packed_float    = 85 [packed = true];
  repeated double   packed_double   = 86 [packed = true];
  repeated bool     packed_bool     = 87 [packed = true];
  repeated NestedEnum packed_nested_enum = 88 [packed = true];

  // Unpacked (explicit).
  repeated int32    unpacked_int32    = 89  [packed = false];
  repeated int64    unpacked_int64    = 90  [packed = false];
  repeated uint32   unpacked_uint32   = 91  [packed = false];
  repeated uint64   unpacked_uint64   = 92  [packed = false];
  repeated sint32   unpacked_sint32   = 93  [packed = false];
  repeated sint64   unpacked_sint64   = 94  [packed = false];
  repeated fixed32  unpacked_fixed32  = 95  [packed = false];
  repeated fixed64  unpacked_fixed64  = 96  [packed = false];
  repeated sfixed32 unpacked_sfixed32 = 97  [packed = false];
  repeated sfixed64 unpacked_sfixed64 = 98  [packed = false];
  repeated float    unpacked_float    = 99  [packed = false];
  repeated double   unpacked_double   = 100 [packed = false];
  repeated bool     unpacked_bool     = 101 [packed = false];
  repeated NestedEnum unpacked_nested_enum = 102 [packed = false];

  // Maps. Submessage / enum-valued maps come through as proto
  // sub-messages whose value type is one of the FTNamed shapes;
  // loadProto currently treats those as opaque submessages on
  // the value side, which is enough for wire-format round-trip.
  map<int32,    int32>          map_int32_int32          = 56;
  map<int64,    int64>          map_int64_int64          = 57;
  map<uint32,   uint32>         map_uint32_uint32        = 58;
  map<uint64,   uint64>         map_uint64_uint64        = 59;
  map<sint32,   sint32>         map_sint32_sint32        = 60;
  map<sint64,   sint64>         map_sint64_sint64        = 61;
  map<fixed32,  fixed32>        map_fixed32_fixed32      = 62;
  map<fixed64,  fixed64>        map_fixed64_fixed64      = 63;
  map<sfixed32, sfixed32>       map_sfixed32_sfixed32    = 64;
  map<sfixed64, sfixed64>       map_sfixed64_sfixed64    = 65;
  map<int32,    float>          map_int32_float          = 66;
  map<int32,    double>         map_int32_double         = 67;
  map<bool,     bool>           map_bool_bool            = 68;
  map<string,   string>         map_string_string        = 69;
  map<string,   bytes>          map_string_bytes         = 70;
  // Submessage / enum-valued maps. The wire form is a repeated
  // MapEntry message; the JSON form is a JSON object whose
  // values are recursively the inner message / enum's JSON
  // shape. Conformance MessageMapField.* exercises the message
  // case; IgnoreUnknownEnumStringValueInMap*, etc. exercise the
  // enum case.
  map<string,   NestedMessage>  map_string_nested_message = 71;
  map<string,   NestedEnum>     map_string_nested_enum    = 73;

  // Oneof.
  oneof oneof_field {
    uint32        oneof_uint32         = 111;
    NestedMessage oneof_nested_message = 112;
    string        oneof_string         = 113;
    bytes         oneof_bytes          = 114;
    bool          oneof_bool           = 115;
    uint64        oneof_uint64         = 116;
    float         oneof_float          = 117;
    double        oneof_double         = 118;
    NestedEnum    oneof_enum           = 119;
    google.protobuf.NullValue oneof_null_value = 120;
  }

  // FieldName1..18 stress test: exercises proto3's spec for
  // converting between snake_case proto names and the JSON
  // canonical camelCase form. The bridge handles both keys (the
  // 'parseBindStmt' fallback in 'Proto.TH.Metadata') and the
  // proto3-canonical-JSON output writes the camelCase form.
  int32 fieldname1     = 401;
  int32 field_name2    = 402;
  int32 _field_name3   = 403;
  int32 field__name4_  = 404;
  int32 field0name5    = 405;
  int32 field_0_name6  = 406;
  int32 fieldName7     = 407;
  int32 FieldName8     = 408;
  int32 field_Name9    = 409;
  int32 Field_Name10   = 410;
  int32 FIELD_NAME11   = 411;
  int32 FIELD_name12   = 412;
  int32 __field_name13 = 413;
  int32 __Field_name14 = 414;
  int32 field__name15  = 415;
  int32 field__Name16  = 416;
  int32 field_name17__ = 417;
  int32 Field_name18__ = 418;

  // Well-known-types: routed through the WKT registry in
  // 'Proto.TH'. The proto AST sees these as FTNamed types; the
  // bridge resolves each FQN to the corresponding pre-generated
  // 'Proto.Google.Protobuf.X' Haskell type.
  google.protobuf.BoolValue   optional_bool_wrapper   = 201;
  google.protobuf.Int32Value  optional_int32_wrapper  = 202;
  google.protobuf.Int64Value  optional_int64_wrapper  = 203;
  google.protobuf.UInt32Value optional_uint32_wrapper = 204;
  google.protobuf.UInt64Value optional_uint64_wrapper = 205;
  google.protobuf.FloatValue  optional_float_wrapper  = 206;
  google.protobuf.DoubleValue optional_double_wrapper = 207;
  google.protobuf.StringValue optional_string_wrapper = 208;
  google.protobuf.BytesValue  optional_bytes_wrapper  = 209;

  repeated google.protobuf.BoolValue   repeated_bool_wrapper   = 211;
  repeated google.protobuf.Int32Value  repeated_int32_wrapper  = 212;
  repeated google.protobuf.Int64Value  repeated_int64_wrapper  = 213;
  repeated google.protobuf.UInt32Value repeated_uint32_wrapper = 214;
  repeated google.protobuf.UInt64Value repeated_uint64_wrapper = 215;
  repeated google.protobuf.FloatValue  repeated_float_wrapper  = 216;
  repeated google.protobuf.DoubleValue repeated_double_wrapper = 217;
  repeated google.protobuf.StringValue repeated_string_wrapper = 218;
  repeated google.protobuf.BytesValue  repeated_bytes_wrapper  = 219;

  google.protobuf.Duration   optional_duration   = 301;
  google.protobuf.Timestamp  optional_timestamp  = 302;
  google.protobuf.FieldMask  optional_field_mask = 303;
  google.protobuf.Struct     optional_struct     = 304;
  google.protobuf.Any        optional_any        = 305;
  google.protobuf.Value      optional_value      = 306;
  google.protobuf.NullValue  optional_null_value = 307;
  google.protobuf.Empty      optional_empty      = 308;

  repeated google.protobuf.Duration  repeated_duration  = 311;
  repeated google.protobuf.Timestamp repeated_timestamp = 312;
  repeated google.protobuf.FieldMask repeated_fieldmask = 313;
  repeated google.protobuf.Struct    repeated_struct    = 324;
  repeated google.protobuf.Any       repeated_any       = 315;
  repeated google.protobuf.Value     repeated_value     = 316;
  repeated google.protobuf.ListValue repeated_list_value = 317;
  repeated google.protobuf.Empty     repeated_empty     = 318;

  reserved 501 to 510;
  reserved 999999;
}

message ForeignMessage {
  int32 c = 1;
}

enum ForeignEnum {
  FOREIGN_FOO = 0;
  FOREIGN_BAR = 1;
  FOREIGN_BAZ = 2;
}