syntax = "proto3";

package example.v1;

// complete_builtin_toplevel
m {}

message User {
  string id = 1;
  // complete_message_field_modifiers
  // complete_message_field_types
}

service UserService {
  rpc GetUser(Get) returns (Get); // complete_rpc_request_type, complete_rpc_response_type
  // complete_builtin_service
}

message GetUserRequest {
  string user_id = 1;
}

message GetUserResponse {
  User user = 1;
}

message ReservedFieldTest {
  reserved 2;
  reserved 3 to 5;
  reserved 7 to 10;

  string blah = 1;
  User user =  // complete_field_number_after_reserved
}

message ReservedFieldTestTwo {
  reserved 2;
  reserved 3 to 5;
  reserved 7 to 10;

  string blah = 1;
  User user = ; // complete_field_number_after_reserved_with_semicolon
}

message ProtobufReservedRangeTest {
  reserved 1 to 18999;

  User user = ; // complete_field_number_skips_protobuf_reserved_range
}

message AbsoluteTypeReferenceTest {
  .goo field_name = 1; // complete_absolute_type_reference
}

enum Status {
  STATUS_UNSPECIFIED = 0;
  STATUS_ACTIVE = 1;
  STATUS_NEW =  // complete_enum_number_basic
}

enum StatusWithGaps {
  STATUS_UNSPECIFIED = 0;
  STATUS_ACTIVE = 1;
  STATUS_PAUSED = 3;
  STATUS_NEW = ; // complete_enum_number_with_gaps
}

enum StatusWithReserved {
  reserved 2;
  reserved 3 to 5;
  reserved 7 to 10;

  STATUS_UNSPECIFIED = 0;
  STATUS_ACTIVE = 1;
  STATUS_NEW = ; // complete_enum_number_with_reserved
}

enum EmptyStatus {
  STATUS_FIRST = ; // complete_enum_number_empty
}
