Skip to content

Commit 42e0fa9

Browse files
committed
all: split flags.ProtoLegacyWeak out of flags.ProtoLegacy
This is a no-op change in preparation of removing support for weak fields. It allows users to keep enabling ProtoLegacy in general, but also disable weak field support independently. For golang/protobuf#1666 Change-Id: Ic3cb90d937e21a817ddbbb36029274be8b5f2513 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/641635 Reviewed-by: Chressie Himpel <chressie@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
1 parent 5fee2a7 commit 42e0fa9

File tree

11 files changed

+22
-17
lines changed

11 files changed

+22
-17
lines changed

encoding/protojson/decode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) erro
192192
fd = fieldDescs.ByTextName(name)
193193
}
194194
}
195-
if flags.ProtoLegacy {
195+
if flags.ProtoLegacyWeak {
196196
if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
197197
fd = nil // reset since the weak reference is not linked in
198198
}

encoding/protojson/decode_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,13 +2684,13 @@ func TestUnmarshal(t *testing.T) {
26842684
m.SetWeakMessage1(&weakpb.WeakImportMessage1{A: proto.Int32(1)})
26852685
return m
26862686
}(),
2687-
skip: !flags.ProtoLegacy,
2687+
skip: !flags.ProtoLegacyWeak,
26882688
}, {
26892689
desc: "weak fields; unknown field",
26902690
inputMessage: &testpb.TestWeak{},
26912691
inputText: `{"weak_message1":{"a":1}, "weak_message2":{"a":1}}`,
26922692
wantErr: `unknown field "weak_message2"`, // weak_message2 is unknown since the package containing it is not imported
2693-
skip: !flags.ProtoLegacy,
2693+
skip: !flags.ProtoLegacyWeak,
26942694
}, {
26952695
desc: "just at recursion limit: nested messages",
26962696
inputMessage: &testpb.TestAllTypes{},

encoding/prototext/decode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) erro
185185
} else if xtErr != nil && xtErr != protoregistry.NotFound {
186186
return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr)
187187
}
188-
if flags.ProtoLegacy {
188+
if flags.ProtoLegacyWeak {
189189
if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
190190
fd = nil // reset since the weak reference is not linked in
191191
}

encoding/prototext/decode_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,13 +1625,13 @@ type_url: "pb2.Nested"
16251625
m.SetWeakMessage1(&weakpb.WeakImportMessage1{A: proto.Int32(1)})
16261626
return m
16271627
}(),
1628-
skip: !flags.ProtoLegacy,
1628+
skip: !flags.ProtoLegacyWeak,
16291629
}, {
16301630
desc: "weak fields; unknown field",
16311631
inputMessage: &testpb.TestWeak{},
16321632
inputText: `weak_message1:{a:1} weak_message2:{a:1}`,
16331633
wantErr: "unknown field: weak_message2", // weak_message2 is unknown since the package containing it is not imported
1634-
skip: !flags.ProtoLegacy,
1634+
skip: !flags.ProtoLegacyWeak,
16351635
}}
16361636

16371637
for _, msg := range makeMessages(protobuild.Message{},

internal/flags/flags.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,8 @@ const ProtoLegacy = protoLegacy
2222
// extension fields at unmarshal time, but defers creating the message
2323
// structure until the extension is first accessed.
2424
const LazyUnmarshalExtensions = ProtoLegacy
25+
26+
// ProtoLegacyWeak specifies whether to enable support for weak fields.
27+
// This flag was split out of ProtoLegacy in preparation for removing
28+
// support for weak fields (independent of the other protolegacy features).
29+
const ProtoLegacyWeak = ProtoLegacy

internal/impl/message_reflect_field.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
333333
}
334334

335335
func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo {
336-
if !flags.ProtoLegacy {
336+
if !flags.ProtoLegacyWeak {
337337
panic("no support for proto1 weak fields")
338338
}
339339

proto/checkinit_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ func TestCheckInitializedErrors(t *testing.T) {
7373
}, {
7474
m: &testpb.TestWeak{},
7575
want: `<nil>`,
76-
skip: !flags.ProtoLegacy,
76+
skip: !flags.ProtoLegacyWeak,
7777
}, {
7878
m: func() proto.Message {
7979
m := &testpb.TestWeak{}
8080
m.SetWeakMessage1(&weakpb.WeakImportMessage1{})
8181
return m
8282
}(),
8383
want: `goproto.proto.test.weak.WeakImportMessage1.a`,
84-
skip: !flags.ProtoLegacy,
84+
skip: !flags.ProtoLegacyWeak,
8585
}, {
8686
m: func() proto.Message {
8787
m := &testpb.TestWeak{}
@@ -91,7 +91,7 @@ func TestCheckInitializedErrors(t *testing.T) {
9191
return m
9292
}(),
9393
want: `<nil>`,
94-
skip: !flags.ProtoLegacy,
94+
skip: !flags.ProtoLegacyWeak,
9595
}}
9696

9797
for _, tt := range tests {

proto/decode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message)
172172
var err error
173173
if fd == nil {
174174
err = errUnknown
175-
} else if flags.ProtoLegacy {
175+
} else if flags.ProtoLegacyWeak {
176176
if fd.IsWeak() && fd.Message().IsPlaceholder() {
177177
err = errUnknown // weak referent is not linked in
178178
}

proto/weak_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
)
1818

1919
func init() {
20-
if flags.ProtoLegacy {
20+
if flags.ProtoLegacyWeak {
2121
testValidMessages = append(testValidMessages, testWeakValidMessages...)
2222
testInvalidMessages = append(testInvalidMessages, testWeakInvalidMessages...)
2323
testMerges = append(testMerges, testWeakMerges...)
@@ -29,7 +29,7 @@ var testWeakValidMessages = []testProto{
2929
desc: "weak message",
3030
decodeTo: []proto.Message{
3131
func() proto.Message {
32-
if !flags.ProtoLegacy {
32+
if !flags.ProtoLegacyWeak {
3333
return nil
3434
}
3535
m := &testpb.TestWeak{}
@@ -98,7 +98,7 @@ var testWeakMerges = []testMerge{
9898
}
9999

100100
func TestWeakNil(t *testing.T) {
101-
if !flags.ProtoLegacy {
101+
if !flags.ProtoLegacyWeak {
102102
t.SkipNow()
103103
}
104104

@@ -109,7 +109,7 @@ func TestWeakNil(t *testing.T) {
109109
}
110110

111111
func TestWeakMarshalNil(t *testing.T) {
112-
if !flags.ProtoLegacy {
112+
if !flags.ProtoLegacyWeak {
113113
t.SkipNow()
114114
}
115115

reflect/protodesc/desc_validate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds
149149
return errors.New("message field %q under proto3 optional semantics must be within a single element oneof", f.FullName())
150150
}
151151
}
152-
if f.IsWeak() && !flags.ProtoLegacy {
152+
if f.IsWeak() && !flags.ProtoLegacyWeak {
153153
return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName())
154154
}
155155
if f.IsWeak() && (!f.HasPresence() || !isOptionalMessage(f) || f.ContainingOneof() != nil) {

0 commit comments

Comments
 (0)