From e6726e2150d027f1cf4000f264adc8c7ec045f00 Mon Sep 17 00:00:00 2001 From: "jieluo@google.com" Date: Wed, 23 Jul 2014 23:37:26 +0000 Subject: [PATCH] use decimal constants to avoid casting error with visual c /W4 "unary minus operator applied to unsigned type, result still unsigned" --- src/google/protobuf/compiler/cpp/cpp_helpers.cc | 4 ++-- src/google/protobuf/compiler/cpp/cpp_unittest.cc | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc index 2c94b3a9b8..9ee8b6ed8f 100644 --- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc +++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc @@ -270,9 +270,9 @@ string Int64ToString(int64 number) { // gcc rejects the decimal form of kint64min if (number == kint64min) { // Make sure we are in a 2's complement system. - GOOGLE_COMPILE_ASSERT(kint64min == GOOGLE_LONGLONG(-0x8000000000000000), + GOOGLE_COMPILE_ASSERT(kint64min == GOOGLE_LONGLONG(~0x7fffffffffffffff), kint64min_value_error); - return "GOOGLE_LONGLONG(-0x8000000000000000)"; + return "GOOGLE_LONGLONG(~0x7fffffffffffffff)"; } return "GOOGLE_LONGLONG(" + SimpleItoa(number) + ")"; } diff --git a/src/google/protobuf/compiler/cpp/cpp_unittest.cc b/src/google/protobuf/compiler/cpp/cpp_unittest.cc index 4ef1da1ebd..3420137f71 100644 --- a/src/google/protobuf/compiler/cpp/cpp_unittest.cc +++ b/src/google/protobuf/compiler/cpp/cpp_unittest.cc @@ -159,7 +159,7 @@ TEST(GeneratedMessageTest, Int32StringConversion) { TEST(GeneratedMessageTest, Int64StringConversion) { EXPECT_EQ("GOOGLE_LONGLONG(971)", Int64ToString(971)); EXPECT_EQ("GOOGLE_LONGLONG(-2147483648)", Int64ToString(kint32min)); - EXPECT_EQ("GOOGLE_LONGLONG(-0x8000000000000000)", Int64ToString(kint64min)); + EXPECT_EQ("GOOGLE_LONGLONG(~0x7fffffffffffffff)", Int64ToString(kint64min)); EXPECT_EQ("GOOGLE_LONGLONG(9223372036854775807)", Int64ToString(kint64max)); } @@ -196,8 +196,8 @@ TEST(GeneratedMessageTest, Trigraph) { TEST(GeneratedMessageTest, ExtremeSmallIntegerDefault) { const unittest::TestExtremeDefaultValues& extreme_default = unittest::TestExtremeDefaultValues::default_instance(); - EXPECT_EQ(-0x80000000, kint32min); - EXPECT_EQ(GOOGLE_LONGLONG(-0x8000000000000000), kint64min); + EXPECT_EQ(~0x7fffffff, kint32min); + EXPECT_EQ(GOOGLE_LONGLONG(~0x7fffffffffffffff), kint64min); EXPECT_EQ(kint32min, extreme_default.really_small_int32()); EXPECT_EQ(kint64min, extreme_default.really_small_int64()); }