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

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

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

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

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

error: overlapping field number ranges
  --> testdata/tags/reserved.proto:27:17
   |
26 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
27 |     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:28:14
   |
28 |     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:30:20
   |
30 |     optional int32 reserved = 100;
   |                    ^^^^^^^^
31 |     reserved "reserved", "unused";
   |              ---------- `reserved` reserved here

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

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

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

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

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

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

error: overlapping enum value ranges
  --> testdata/tags/reserved.proto:42:17
   |
41 |     reserved 2, 3 to 3, 5 to 10;
   |                         ------- overlaps with this one
42 |     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:43:14
   |
43 |     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:45:5
   |
45 |     reserved = 100;
   |     ^^^^^^^^
46 |     reserved "reserved", "unused";
   |              ---------- `reserved` reserved here

error: use of reserved enum value `100`
  --> testdata/tags/reserved.proto:45:16
   |
42 |     reserved 7, 8 to max;
   |                 -------- enum value reserved here
43 |     reserved max to max;
44 |
45 |     reserved = 100;
   |                ^^^ used here

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

encountered 17 errors and 2 warnings
