Skip to content

Commit 6422b9d

Browse files
ClaytonKnittelcopybara-github
authored andcommitted
Add a macro to make RepeatedPtrField(Arena*) constructor private in a future release
PiperOrigin-RevId: 812633485
1 parent bce55fb commit 6422b9d

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

src/google/protobuf/port_def.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ static_assert(PROTOBUF_ABSL_MIN(20230125, 3),
161161
// Owner: cknittel@, mkruskal@
162162
#define PROTOBUF_FUTURE_NO_RECURSIVE_MESSAGE_COPY 1
163163

164+
// Removes the public RepeatedPtrField(Arena*) constructor.
165+
// Owner: cknittel@, mkruskal@
166+
#define PROTOBUF_FUTURE_REMOVE_REPEATED_PTR_FIELD_ARENA_CONSTRUCTOR 1
167+
164168
#else
165169

166170
#define PROTOBUF_FUTURE_ADD_NODISCARD

src/google/protobuf/port_undef.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
#undef PROTOBUF_FUTURE_REMOVE_CREATEMESSAGE
7676
#undef PROTOBUF_FUTURE_ADD_NODISCARD
7777
#undef PROTOBUF_FUTURE_NO_RECURSIVE_MESSAGE_COPY
78+
#undef PROTOBUF_FUTURE_REMOVE_REPEATED_PTR_FIELD_ARENA_CONSTRUCTOR
7879
#endif
7980

8081
#include "google/protobuf/os_macros_restore.inc"

src/google/protobuf/repeated_ptr_field.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ namespace protobuf {
5555

5656
class Message;
5757
class Reflection;
58+
class DynamicMessage;
5859

5960
template <typename T>
6061
struct WeakRepeatedPtrField;
@@ -1029,9 +1030,11 @@ class ABSL_ATTRIBUTE_WARN_UNUSED RepeatedPtrField final
10291030
RepeatedPtrField&& rhs)
10301031
: RepeatedPtrField(arena, std::move(rhs)) {}
10311032

1033+
#ifndef PROTOBUF_FUTURE_REMOVE_REPEATED_PTR_FIELD_ARENA_CONSTRUCTOR
10321034
// TODO: make constructor private
10331035
[[deprecated("Use Arena::Create<RepeatedPtrField<...>>(Arena*) instead")]]
10341036
explicit RepeatedPtrField(Arena* arena);
1037+
#endif
10351038

10361039
template <typename Iter,
10371040
typename = typename std::enable_if<std::is_constructible<
@@ -1336,6 +1339,10 @@ class ABSL_ATTRIBUTE_WARN_UNUSED RepeatedPtrField final
13361339

13371340
friend class Arena;
13381341

1342+
#ifdef PROTOBUF_FUTURE_REMOVE_REPEATED_PTR_FIELD_ARENA_CONSTRUCTOR
1343+
friend class DynamicMessage;
1344+
#endif
1345+
13391346
friend class internal::TcParser;
13401347

13411348
template <typename T>
@@ -1351,6 +1358,10 @@ class ABSL_ATTRIBUTE_WARN_UNUSED RepeatedPtrField final
13511358
RepeatedPtrField(Arena* arena, const RepeatedPtrField& rhs);
13521359
RepeatedPtrField(Arena* arena, RepeatedPtrField&& rhs);
13531360

1361+
#ifdef PROTOBUF_FUTURE_REMOVE_REPEATED_PTR_FIELD_ARENA_CONSTRUCTOR
1362+
explicit RepeatedPtrField(Arena* arena);
1363+
#endif
1364+
13541365

13551366
void AddAllocatedForParse(Element* p, Arena* arena) {
13561367
return RepeatedPtrFieldBase::AddAllocatedForParse(p, arena);

0 commit comments

Comments
 (0)