error: nested message type marked as exported --> testdata/strict_visibility.proto:7:5 | 6 | / export message Complete { 7 | | export message M {} | | ^^^^^^ nested type exported here 8 | | export enum E { Z = 0; } 9 | | reserved 1 to max; 10 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nested message types cannot be marked as exported, even if all the field numbers of its parent are reserved error: nested message type marked as exported --> testdata/strict_visibility.proto:13:5 | 12 | / export message Complete2 { 13 | | export message M {} | | ^^^^^^ nested type exported here 14 | | export enum E { Z = 0; } 15 | | reserved 1 to 536870911; 16 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nested message types cannot be marked as exported, even if all the field numbers of its parent are reserved error: expected exactly one reserved range --> testdata/strict_visibility.proto:19:5 | 18 | / export message Split { 19 | | export message M {} | | ^^^^^^ nested type exported here 20 | | export enum E { Z = 0; } 21 | | reserved 1 to 5, 6 to max; | | ------ -------- another here | | | | | one here 22 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type declare `reserved 1 to max;`, even if all of its field numbers are `reserved` = help: protoc erroneously rejects this, despite being equivalent error: expected exactly one reserved range --> testdata/strict_visibility.proto:20:5 | 18 | / export message Split { 19 | | export message M {} 20 | | export enum E { Z = 0; } | | ^^^^^^ nested type exported here 21 | | reserved 1 to 5, 6 to max; | | ------ -------- another here | | | | | one here 22 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type declare `reserved 1 to max;`, even if all of its field numbers are `reserved` = help: protoc erroneously rejects this, despite being equivalent warning: message type `buf.test.Incomplete1` does not reserve all field numbers --> testdata/strict_visibility.proto:25:5 | 24 | / export message Incomplete1 { 25 | | export message M {} | | ^^^^^^ nested type exported here 26 | | export enum E { Z = 0; } 27 | | reserved 1 to 5; 28 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 6 = help: protoc erroneously accepts this code due to a bug: it only checks that there is exactly one reserved range warning: message type `buf.test.Incomplete1` does not reserve all field numbers --> testdata/strict_visibility.proto:26:5 | 24 | / export message Incomplete1 { 25 | | export message M {} 26 | | export enum E { Z = 0; } | | ^^^^^^ nested type exported here 27 | | reserved 1 to 5; 28 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 6 = help: protoc erroneously accepts this code due to a bug: it only checks that there is exactly one reserved range warning: message type `buf.test.Incomplete2` does not reserve all field numbers --> testdata/strict_visibility.proto:31:5 | 30 | / export message Incomplete2 { 31 | | export message M {} | | ^^^^^^ nested type exported here 32 | | export enum E { Z = 0; } 33 | | reserved 6 to max; 34 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 1 = help: protoc erroneously accepts this code due to a bug: it only checks that there is exactly one reserved range warning: message type `buf.test.Incomplete2` does not reserve all field numbers --> testdata/strict_visibility.proto:32:5 | 30 | / export message Incomplete2 { 31 | | export message M {} 32 | | export enum E { Z = 0; } | | ^^^^^^ nested type exported here 33 | | reserved 6 to max; 34 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 1 = help: protoc erroneously accepts this code due to a bug: it only checks that there is exactly one reserved range error: message type `buf.test.Incomplete3` does not reserve all field numbers --> testdata/strict_visibility.proto:37:5 | 36 | / export message Incomplete3 { 37 | | export message M {} | | ^^^^^^ nested type exported here 38 | | export enum E { Z = 0; } 39 | | reserved 1 to 5, 6 to 10; 40 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 11 error: message type `buf.test.Incomplete3` does not reserve all field numbers --> testdata/strict_visibility.proto:38:5 | 36 | / export message Incomplete3 { 37 | | export message M {} 38 | | export enum E { Z = 0; } | | ^^^^^^ nested type exported here 39 | | reserved 1 to 5, 6 to 10; 40 | | } | \_- ... within this type | ::: testdata/strict_visibility.proto:4:45 | 4 | option features.default_symbol_visibility = STRICT; | ------ `STRICT` specified here | = help: in strict mode, nesting an exported type within another type requires that that type reserve every field number (the "C++ namespace exception"), but this type does not reserve the field number 11 encountered 6 errors and 4 warnings