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
    }
  ];
}
