diff --git a/.github/workflows/test_php.yml b/.github/workflows/test_php.yml index 7f9536e2ce6b3..3d170cad05fc0 100644 --- a/.github/workflows/test_php.yml +++ b/.github/workflows/test_php.yml @@ -189,7 +189,7 @@ jobs: fail-fast: false # Don't cancel all jobs if one fails. matrix: include: - - version: '8.3' + - version: 'pre-installed' name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} MacOS PHP ${{ matrix.version }} # noop @@ -201,24 +201,16 @@ jobs: with: ref: ${{ inputs.safe-checkout }} - - name: Uninstall problematic libgd - if: ${{ !matrix.continuous-only || inputs.continuous-run }} - run: brew uninstall --ignore-dependencies gd - - name: Install dependencies if: ${{ !matrix.continuous-only || inputs.continuous-run }} run: brew install coreutils gd - name: Pin PHP version if: ${{ !matrix.continuous-only || inputs.continuous-run }} - uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # 2.31.1 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5 with: php-version: ${{ matrix.version }} - - name: Check PHP version - if: ${{ !matrix.continuous-only || inputs.continuous-run }} - run: php --version | grep ${{ matrix.version }} || (echo "Invalid PHP version - $(php --version)" && exit 1) - - name: Setup composer if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/composer-setup@v4 diff --git a/src/google/protobuf/any.pb.h b/src/google/protobuf/any.pb.h index 60989f4a0eefe..d7aefcbffe498 100644 --- a/src/google/protobuf/any.pb.h +++ b/src/google/protobuf/any.pb.h @@ -130,15 +130,14 @@ class PROTOBUF_EXPORT Any final : public ::google::protobuf::Message bool PackFrom(const ::google::protobuf::Message& message) { ABSL_DCHECK_NE(&message, this); - return ::google::protobuf::internal::InternalPackFrom(message, mutable_type_url(), - _internal_mutable_value()); + return ::google::protobuf::internal::InternalPackFrom(message, mutable_type_url(), mutable_value()); } bool PackFrom(const ::google::protobuf::Message& message, ::absl::string_view type_url_prefix) { ABSL_DCHECK_NE(&message, this); return ::google::protobuf::internal::InternalPackFrom(message, type_url_prefix, mutable_type_url(), - _internal_mutable_value()); + mutable_value()); } bool UnpackTo(::google::protobuf::Message* PROTOBUF_NONNULL message) const { return ::google::protobuf::internal::InternalUnpackTo(_internal_type_url(), @@ -156,7 +155,7 @@ class PROTOBUF_EXPORT Any final : public ::google::protobuf::Message T, const ::google::protobuf::Message&>::value>::type> bool PackFrom(const T& message) { return ::google::protobuf::internal::InternalPackFrom( - message, mutable_type_url(), _internal_mutable_value()); + message, mutable_type_url(), mutable_value()); } template < typename T, @@ -164,9 +163,9 @@ class PROTOBUF_EXPORT Any final : public ::google::protobuf::Message T, const ::google::protobuf::Message&>::value>::type> bool PackFrom(const T& message, ::absl::string_view type_url_prefix) { - return ::google::protobuf::internal::InternalPackFrom( - message, type_url_prefix, mutable_type_url(), - _internal_mutable_value()); + return ::google::protobuf::internal::InternalPackFrom(message, type_url_prefix, + mutable_type_url(), + mutable_value()); } template < typename T, diff --git a/src/google/protobuf/any_test.cc b/src/google/protobuf/any_test.cc index 85f0e17b66ad7..aafd16a305e58 100644 --- a/src/google/protobuf/any_test.cc +++ b/src/google/protobuf/any_test.cc @@ -26,16 +26,20 @@ namespace protobuf { namespace { TEST(AnyTest, TestPackAndUnpack) { - proto2_unittest::TestAny submessage; - submessage.set_int32_value(12345); - proto2_unittest::TestAny message; - ASSERT_TRUE(message.mutable_any_value()->PackFrom(submessage)); - - std::string data = message.SerializeAsString(); + std::string data; + { + proto2_unittest::TestAny submessage; + submessage.set_int32_value(12345); + proto2_unittest::TestAny message; + ASSERT_TRUE(message.mutable_any_value()->PackFrom(submessage)); + + data = message.SerializeAsString(); + } + proto2_unittest::TestAny message; ASSERT_TRUE(message.ParseFromString(data)); EXPECT_TRUE(message.has_any_value()); - submessage.Clear(); + proto2_unittest::TestAny submessage; ASSERT_TRUE(message.any_value().UnpackTo(&submessage)); EXPECT_EQ(12345, submessage.int32_value()); } @@ -62,41 +66,47 @@ TEST(AnyTest, TestUnpackWithTypeMismatch) { } TEST(AnyTest, TestPackAndUnpackAny) { - // We can pack a Any message inside another Any message. - proto2_unittest::TestAny submessage; - submessage.set_int32_value(12345); - google::protobuf::Any any; - any.PackFrom(submessage); - proto2_unittest::TestAny message; - message.mutable_any_value()->PackFrom(any); - - std::string data = message.SerializeAsString(); + std::string data; + { + // We can pack an Any message inside another Any message. + proto2_unittest::TestAny submessage; + submessage.set_int32_value(12345); + google::protobuf::Any any; + any.PackFrom(submessage); + proto2_unittest::TestAny message; + message.mutable_any_value()->PackFrom(any); + + data = message.SerializeAsString(); + } + proto2_unittest::TestAny message; ASSERT_TRUE(message.ParseFromString(data)); EXPECT_TRUE(message.has_any_value()); - any.Clear(); - submessage.Clear(); + google::protobuf::Any any; ASSERT_TRUE(message.any_value().UnpackTo(&any)); + proto2_unittest::TestAny submessage; ASSERT_TRUE(any.UnpackTo(&submessage)); EXPECT_EQ(12345, submessage.int32_value()); } TEST(AnyTest, TestPackWithCustomTypeUrl) { - proto2_unittest::TestAny submessage; - submessage.set_int32_value(12345); google::protobuf::Any any; - // Pack with a custom type URL prefix. - any.PackFrom(submessage, "type.myservice.com"); - EXPECT_EQ("type.myservice.com/proto2_unittest.TestAny", any.type_url()); - // Pack with a custom type URL prefix ending with '/'. - any.PackFrom(submessage, "type.myservice.com/"); - EXPECT_EQ("type.myservice.com/proto2_unittest.TestAny", any.type_url()); - // Pack with an empty type URL prefix. - any.PackFrom(submessage, ""); - EXPECT_EQ("/proto2_unittest.TestAny", any.type_url()); + { + proto2_unittest::TestAny submessage; + submessage.set_int32_value(12345); + // Pack with a custom type URL prefix. + any.PackFrom(submessage, "type.myservice.com"); + EXPECT_EQ("type.myservice.com/proto2_unittest.TestAny", any.type_url()); + // Pack with a custom type URL prefix ending with '/'. + any.PackFrom(submessage, "type.myservice.com/"); + EXPECT_EQ("type.myservice.com/proto2_unittest.TestAny", any.type_url()); + // Pack with an empty type URL prefix. + any.PackFrom(submessage, ""); + EXPECT_EQ("/proto2_unittest.TestAny", any.type_url()); + } // Test unpacking the type. - submessage.Clear(); + proto2_unittest::TestAny submessage; EXPECT_TRUE(any.UnpackTo(&submessage)); EXPECT_EQ(12345, submessage.int32_value()); } @@ -127,34 +137,36 @@ TEST(AnyTest, TestIs) { } TEST(AnyTest, MoveConstructor) { - proto2_unittest::TestAny payload; - payload.set_int32_value(12345); - google::protobuf::Any src; - src.PackFrom(payload); + { + proto2_unittest::TestAny payload; + payload.set_int32_value(12345); + src.PackFrom(payload); + } const char* type_url = src.type_url().data(); google::protobuf::Any dst(std::move(src)); EXPECT_EQ(type_url, dst.type_url().data()); - payload.Clear(); + proto2_unittest::TestAny payload; ASSERT_TRUE(dst.UnpackTo(&payload)); EXPECT_EQ(12345, payload.int32_value()); } TEST(AnyTest, MoveAssignment) { - proto2_unittest::TestAny payload; - payload.set_int32_value(12345); - google::protobuf::Any src; - src.PackFrom(payload); + { + proto2_unittest::TestAny payload; + payload.set_int32_value(12345); + src.PackFrom(payload); + } const char* type_url = src.type_url().data(); google::protobuf::Any dst; dst = std::move(src); EXPECT_EQ(type_url, dst.type_url().data()); - payload.Clear(); + proto2_unittest::TestAny payload; ASSERT_TRUE(dst.UnpackTo(&payload)); EXPECT_EQ(12345, payload.int32_value()); } diff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc index 8b2b1ea944a77..7410295753336 100644 --- a/src/google/protobuf/compiler/cpp/message.cc +++ b/src/google/protobuf/compiler/cpp/message.cc @@ -1770,15 +1770,14 @@ void MessageGenerator::GenerateAnyMethodDefinition(io::Printer* p) { R"cc( bool PackFrom(const $pb$::Message& message) { $DCHK$_NE(&message, this); - return $pbi$::InternalPackFrom(message, mutable_type_url(), - _internal_mutable_value()); + return $pbi$::InternalPackFrom(message, mutable_type_url(), mutable_value()); } bool PackFrom(const $pb$::Message& message, ::absl::string_view type_url_prefix) { $DCHK$_NE(&message, this); return $pbi$::InternalPackFrom(message, type_url_prefix, mutable_type_url(), - _internal_mutable_value()); + mutable_value()); } bool UnpackTo($pb$::Message* $nonnull$ message) const { return $pbi$::InternalUnpackTo(_internal_type_url(), @@ -1796,7 +1795,7 @@ void MessageGenerator::GenerateAnyMethodDefinition(io::Printer* p) { T, const $pb$::Message&>::value>::type> bool PackFrom(const T& message) { return $pbi$::InternalPackFrom( - message, mutable_type_url(), _internal_mutable_value()); + message, mutable_type_url(), mutable_value()); } template < typename T, @@ -1804,9 +1803,9 @@ void MessageGenerator::GenerateAnyMethodDefinition(io::Printer* p) { T, const $pb$::Message&>::value>::type> bool PackFrom(const T& message, ::absl::string_view type_url_prefix) { - return $pbi$::InternalPackFrom( - message, type_url_prefix, mutable_type_url(), - _internal_mutable_value()); + return $pbi$::InternalPackFrom(message, type_url_prefix, + mutable_type_url(), + mutable_value()); } template < typename T, @@ -1822,15 +1821,14 @@ void MessageGenerator::GenerateAnyMethodDefinition(io::Printer* p) { R"cc( template bool PackFrom(const T& message) { - return $pbi$::InternalPackFrom(message, mutable_type_url(), - _internal_mutable_value()); + return $pbi$::InternalPackFrom(message, mutable_type_url(), mutable_value()); } template bool PackFrom(const T& message, ::absl::string_view type_url_prefix) { return $pbi$::InternalPackFrom(message, type_url_prefix, mutable_type_url(), - _internal_mutable_value()); + mutable_value()); } template bool UnpackTo(T* $nonnull$ message) const {