Skip to content

Commit

Permalink
gofeatures: allow setting legacy_unmarshal_json_enum feature at file …
Browse files Browse the repository at this point in the history
…level

All of the other features, including custom features for C++ and Java,
allow setting a file-wide default. This makes it easier to migrate
proto2 files, so that the feature can be set at the file level instead
of needing to manually annotate each enum element. This adds the same
convenience to the (pb.go).legacy_unmarshal_json_enum feature that is
defined in this repo.

Change-Id: If3a925674a9daeed464b589747b7f78a0200118b
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/589336
Auto-Submit: Lasse Folger <[email protected]>
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Lasse Folger <[email protected]>
Reviewed-by: Michael Stapelberg <[email protected]>
  • Loading branch information
jhump authored and gopherbot committed Jun 11, 2024
1 parent 3b8611b commit 971c712
Show file tree
Hide file tree
Showing 4 changed files with 379 additions and 20 deletions.
320 changes: 320 additions & 0 deletions cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

edition = "2023";

package goproto.protoc.protoeditions;

import "google/protobuf/go_features.proto";

option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/protoeditions";
option features.(pb.go).legacy_unmarshal_json_enum = true;

// EnumTypeWithLegacyUnmarshalJSON comment.
enum EnumTypeWithLegacyUnmarshalJSON {
option features.enum_type = CLOSED;

// EnumTypeWithLegacyUnmarshalJSON_ONE comment.
FIRST = 1;
// EnumTypeWithLegacyUnmarshalJSON_TWO comment.
SECOND = 2;
}

message ContainerForNestedEnum {
// NestedEnumType1A comment.
enum NestedEnum {
// NestedEnum_VALUE comment.
VALUE = 0;
}
}

enum EnumWithoutUnmarshalJSON {
option features.(pb.go).legacy_unmarshal_json_enum = false;

WITHOUT_UNMARSHAL_JSON_FOO = 0;
WITHOUT_UNMARSHAL_JSON_BAR = 1;
WITHOUT_UNMARSHAL_JSON_BAZ = 2;
}
1 change: 1 addition & 0 deletions src/google/protobuf/go_features.proto
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ message GoFeatures {
optional bool legacy_unmarshal_json_enum = 1 [
retention = RETENTION_RUNTIME,
targets = TARGET_TYPE_ENUM,
targets = TARGET_TYPE_FILE,
feature_support = {
edition_introduced: EDITION_2023,
edition_deprecated: EDITION_2023,
Expand Down
Loading

0 comments on commit 971c712

Please sign in to comment.