syntax = "proto3";

import "custom.proto";

message Foo {
  string name = 1 [
    (custom.float_field_option) = /* Before */ 42.2 /* After */, // Trailing
    (custom.double_field_option) = /* Before */ 42.2424 /* After */, // Trailing
    (custom.int32_field_option) = /* Before */ 32 /* After */, // Trailing
    (custom.int64_field_option) = /* Before */ 64 /* After */, // Trailing
    (custom.uint32_field_option) = /* Before */ 3200 /* After */, // Trailing
    (custom.uint64_field_option) = /* Before */ 6400 /* After */, // Trailing
    (custom.sint32_field_option) = - /* The '-' can be detached. */ 32 /* After 32 */, // Trailing
    (custom.sint64_field_option) = - /* Again */ 64 /* After 64 */, // Trailing
    (custom.fixed32_field_option) = /* Before */ 3232 /* After */, // Trailing
    (custom.fixed64_field_option) = /* Before */ 6464 /* After */, // Trailing
    (custom.sfixed32_field_option) = - /* Again */ 3232 /* After */, // Trailing
    (custom.sfixed64_field_option) = - /* Finally */ 6464 /* After */, // Trailing
    (custom.bool_field_option) = /* Before */ true /* After */, // Trailing
    (custom.bytes_field_option) = /* Before */ "bytes" /* After */, // Trailing
    (custom.string_field_option) =
      /* One */
      "this"
      /* Two */
      "is a"
      /* Three */
      "compound string", // Trailing
    (custom.message_literal_field_option) = /* Before */ {
      /* interior comment */
      rule: "rule"
    }, // Trailing
    (custom.message_literal_no_interior_comment_field_option) = /* Before */ {rule: "rule"}, // Trailing
    (custom.nested_message_literal_field_option) = {
      // Comment on nested message
      nested: {
        nested_nested: {
          /* interior comment on nested_nested message */
          inner_most: "value"
        }
      } /* Trailing */
      // Before
      other_nested: /* Before */ {once: "value"} /* Trailing */
    },
    (custom.message_literal_with_array_literals) = {
      additional_rules: [] /* comment on , */
      additional_rules: [] /* comment on [ */
      additional_rules: [] /* multi-line comment on , */
      additional_rules: [
        /* Before */ {}, // Trailing
        /* Before */ {rule: "child"}, /* child node */
        {
          rule: "another_child"
          additional_rules: [] /* Trailing */
        }
      ]
      rule: "parent" // but this one is
    }
  ];
}
