error: use of reserved field number `2`
  --> testdata/tags/reserved.proto:7:25
   |
 7 |     optional int32 y1 = 2;
   |                         ^ used here
 8 |     optional int32 y2 = 3;
...
12 |     reserved 2, 3 to 3, 5 to 10;
   |              - field number reserved here

error: use of reserved field number `3`
  --> testdata/tags/reserved.proto:8:25
   |
 8 |     optional int32 y2 = 3;
   |                         ^ used here
 9 |     optional int32 y3 = 4;
...
12 |     reserved 2, 3 to 3, 5 to 10;
   |                 ------ field number reserved here

error: use of reserved field number `5`
  --> testdata/tags/reserved.proto:10:25
   |
10 |     optional int32 y4 = 5;
   |                         ^ used here
11 |
12 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- field number reserved here

warning: singleton range can be simplified
  --> testdata/tags/reserved.proto:12:17
   |
12 |     reserved 2, 3 to 3, 5 to 10;
   |                 ^^^^^^
  help: replace with a single number
   |
12 | -     reserved 2, 3 to 3, 5 to 10;
12 | +     reserved 2, 3, 5 to 10;

error: overlapping field number ranges
  --> testdata/tags/reserved.proto:13:14
   |
12 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
13 |     reserved 7, 8 to max;   // Overlapping reserved regions.
   |              ^ this range
   |
   = help: they overlap at `7`

error: overlapping field number ranges
  --> testdata/tags/reserved.proto:13:17
   |
12 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
13 |     reserved 7, 8 to max;   // Overlapping reserved regions.
   |                 ^^^^^^^^ this range
   |
   = help: they overlap in the range `8 to 10`

error: `max` outside of range end
  --> testdata/tags/reserved.proto:14:14
   |
14 |     reserved max to max;    // Only first can be max.
   |              ^^^
   = note: the special `max` expression can only be used at the end of a range

error: use of reserved message field name
  --> testdata/tags/reserved.proto:16:20
   |
16 |     optional int32 reserved = 100;
   |                    ^^^^^^^^
17 |     reserved "reserved", "unused";
   |              ---------- `reserved` reserved here

error: use of reserved field number `100`
  --> testdata/tags/reserved.proto:16:31
   |
13 |     reserved 7, 8 to max;   // Overlapping reserved regions.
   |                 -------- field number reserved here
14 |     reserved max to max;    // Only first can be max.
15 |
16 |     optional int32 reserved = 100;
   |                               ^^^ used here

error: use of reserved enum value `2`
  --> testdata/tags/reserved.proto:22:10
   |
22 |     Y1 = 2;
   |          ^ used here
23 |     Y2 = 3;
...
27 |     reserved 2, 3 to 3, 5 to 10;
   |              - enum value reserved here

error: use of reserved enum value `3`
  --> testdata/tags/reserved.proto:23:10
   |
23 |     Y2 = 3;
   |          ^ used here
24 |     Y3 = 4;
...
27 |     reserved 2, 3 to 3, 5 to 10;
   |                 ------ enum value reserved here

error: use of reserved enum value `5`
  --> testdata/tags/reserved.proto:25:10
   |
25 |     Y4 = 5;
   |          ^ used here
26 |
27 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- enum value reserved here

warning: singleton range can be simplified
  --> testdata/tags/reserved.proto:27:17
   |
27 |     reserved 2, 3 to 3, 5 to 10;
   |                 ^^^^^^
  help: replace with a single number
   |
27 | -     reserved 2, 3 to 3, 5 to 10;
27 | +     reserved 2, 3, 5 to 10;

error: overlapping enum value ranges
  --> testdata/tags/reserved.proto:28:14
   |
27 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
28 |     reserved 7, 8 to max;
   |              ^ this range
   |
   = help: they overlap at `7`

error: overlapping enum value ranges
  --> testdata/tags/reserved.proto:28:17
   |
27 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
28 |     reserved 7, 8 to max;
   |                 ^^^^^^^^ this range
   |
   = help: they overlap in the range `8 to 10`

error: `max` outside of range end
  --> testdata/tags/reserved.proto:29:14
   |
29 |     reserved max to max;
   |              ^^^
   = note: the special `max` expression can only be used at the end of a range

error: use of reserved enum value name
  --> testdata/tags/reserved.proto:31:5
   |
31 |     reserved = 100;
   |     ^^^^^^^^
32 |     reserved "reserved", "unused";
   |              ---------- `reserved` reserved here

error: use of reserved enum value `100`
  --> testdata/tags/reserved.proto:31:16
   |
28 |     reserved 7, 8 to max;
   |                 -------- enum value reserved here
29 |     reserved max to max;
30 |
31 |     reserved = 100;
   |                ^^^ used here

error: use of reserved enum value `0`
  --> testdata/tags/reserved.proto:36:9
   |
36 |     K = 0;
   |         ^ used here
37 |     reserved 0;
   |              - enum value reserved here

encountered 17 errors and 2 warnings
