ソースを参照

Merge pull request #6292 from TeBoring/3.8.x-merge

3.8.x merge
Paul Yang 6 年 前
コミット
b7a5772caf

+ 1 - 1
BUILD

@@ -219,7 +219,7 @@ cc_library(
 # TODO(keveman): Remove this target once the support gets added to Bazel.
 # TODO(keveman): Remove this target once the support gets added to Bazel.
 cc_library(
 cc_library(
     name = "protobuf_headers",
     name = "protobuf_headers",
-    hdrs = glob(["src/**/*.h"]),
+    hdrs = glob(["src/**/*.h", "src/**/*.inc"]),
     includes = ["src/"],
     includes = ["src/"],
     visibility = ["//visibility:public"],
     visibility = ["//visibility:public"],
 )
 )

+ 1 - 0
Makefile.am

@@ -1230,6 +1230,7 @@ EXTRA_DIST = $(@DIST_LANG@_EXTRA_DIST)   \
   examples/pubspec.yaml                  \
   examples/pubspec.yaml                  \
   examples/third_party/zlib.BUILD        \
   examples/third_party/zlib.BUILD        \
   protobuf.bzl                           \
   protobuf.bzl                           \
+  protobuf_deps.bzl                      \
   python/release/wheel/build_wheel_manylinux.sh  \
   python/release/wheel/build_wheel_manylinux.sh  \
   python/release/wheel/Dockerfile                \
   python/release/wheel/Dockerfile                \
   python/release/wheel/protobuf_optimized_pip.sh \
   python/release/wheel/protobuf_optimized_pip.sh \

+ 0 - 2
conformance/failure_list_php_c.txt

@@ -6,7 +6,6 @@ Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter
 Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter
-Recommended.Proto3.JsonInput.Int64FieldBeString.Validator
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.OneofZeroBytes.JsonOutput
 Recommended.Proto3.JsonInput.OneofZeroBytes.JsonOutput
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
@@ -17,7 +16,6 @@ Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
-Recommended.Proto3.JsonInput.Uint64FieldBeString.Validator
 Recommended.Proto3.ProtobufInput.OneofZeroBytes.JsonOutput
 Recommended.Proto3.ProtobufInput.OneofZeroBytes.JsonOutput
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput

+ 0 - 2
conformance/failure_list_ruby.txt

@@ -6,7 +6,6 @@ Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter
 Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter
-Recommended.Proto3.JsonInput.Int64FieldBeString.Validator
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull
@@ -16,7 +15,6 @@ Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
-Recommended.Proto3.JsonInput.Uint64FieldBeString.Validator
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput
 Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput
 Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput

+ 0 - 2
conformance/failure_list_ruby_mac.txt

@@ -5,7 +5,6 @@ Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput
 Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput
 Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator
-Recommended.Proto3.JsonInput.Int64FieldBeString.Validator
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.MapFieldValueIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull
 Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull
@@ -15,7 +14,6 @@ Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
 Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator
-Recommended.Proto3.JsonInput.Uint64FieldBeString.Validator
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooLarge.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput
 Required.DurationProtoInputTooSmall.JsonOutput
 Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput
 Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput

+ 1 - 1
java/lite/pom.xml

@@ -6,7 +6,7 @@
   <parent>
   <parent>
     <groupId>com.google.protobuf</groupId>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.8.0-rc-1</version>
+    <version>3.8.0</version>
   </parent>
   </parent>
 
 
   <artifactId>protobuf-javalite</artifactId>
   <artifactId>protobuf-javalite</artifactId>

+ 1 - 1
kokoro/linux/dockerfile/release/ruby_rake_compiler/Dockerfile

@@ -1,3 +1,3 @@
 FROM grpctesting/rake-compiler-dock_53c22085d091183c528303791e7771359f699bcf
 FROM grpctesting/rake-compiler-dock_53c22085d091183c528303791e7771359f699bcf
 
 
-RUN /bin/bash -l -c "gem install bundler"
+RUN /bin/bash -l -c "gem update --system '2.7.9' && gem install bundler"

+ 29 - 12
php/ext/google/protobuf/upb.c

@@ -12431,18 +12431,32 @@ static size_t fmt_bool(bool val, char* buf, size_t length) {
   return n;
   return n;
 }
 }
 
 
-static size_t fmt_int64(long val, char* buf, size_t length) {
-  size_t n = _upb_snprintf(buf, length, "%ld", val);
+static size_t fmt_int64_as_number(long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "%lld", val);
   CHKLENGTH(n > 0 && n < length);
   CHKLENGTH(n > 0 && n < length);
   return n;
   return n;
 }
 }
 
 
-static size_t fmt_uint64(unsigned long long val, char* buf, size_t length) {
+static size_t fmt_uint64_as_number(
+    unsigned long long val, char* buf, size_t length) {
   size_t n = _upb_snprintf(buf, length, "%llu", val);
   size_t n = _upb_snprintf(buf, length, "%llu", val);
   CHKLENGTH(n > 0 && n < length);
   CHKLENGTH(n > 0 && n < length);
   return n;
   return n;
 }
 }
 
 
+static size_t fmt_int64_as_string(long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "\"%lld\"", val);
+  CHKLENGTH(n > 0 && n < length);
+  return n;
+}
+
+static size_t fmt_uint64_as_string(
+    unsigned long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "\"%llu\"", val);
+  CHKLENGTH(n > 0 && n < length);
+  return n;
+}
+
 /* Print a map key given a field name. Called by scalar field handlers and by
 /* Print a map key given a field name. Called by scalar field handlers and by
  * startseq for repeated fields. */
  * startseq for repeated fields. */
 static bool putkey(void *closure, const void *handler_data) {
 static bool putkey(void *closure, const void *handler_data) {
@@ -12486,8 +12500,11 @@ static bool putkey(void *closure, const void *handler_data) {
   static bool putmapkey_##type(void *closure, const void *handler_data,      \
   static bool putmapkey_##type(void *closure, const void *handler_data,      \
                             type val) {                                      \
                             type val) {                                      \
     upb_json_printer *p = closure;                                           \
     upb_json_printer *p = closure;                                           \
+    char data[64];                                                           \
+    size_t length = fmt_func(val, data, sizeof(data));                       \
+    UPB_UNUSED(handler_data);                                                \
     print_data(p, "\"", 1);                                                  \
     print_data(p, "\"", 1);                                                  \
-    CHK(put##type(closure, handler_data, val));                              \
+    print_data(p, data, length);                                             \
     print_data(p, "\":", 2);                                                 \
     print_data(p, "\":", 2);                                                 \
     return true;                                                             \
     return true;                                                             \
   }
   }
@@ -12495,17 +12512,17 @@ static bool putkey(void *closure, const void *handler_data) {
 TYPE_HANDLERS(double,   fmt_double)
 TYPE_HANDLERS(double,   fmt_double)
 TYPE_HANDLERS(float,    fmt_float)
 TYPE_HANDLERS(float,    fmt_float)
 TYPE_HANDLERS(bool,     fmt_bool)
 TYPE_HANDLERS(bool,     fmt_bool)
-TYPE_HANDLERS(int32_t,  fmt_int64)
-TYPE_HANDLERS(uint32_t, fmt_int64)
-TYPE_HANDLERS(int64_t,  fmt_int64)
-TYPE_HANDLERS(uint64_t, fmt_uint64)
+TYPE_HANDLERS(int32_t,  fmt_int64_as_number)
+TYPE_HANDLERS(uint32_t, fmt_int64_as_number)
+TYPE_HANDLERS(int64_t,  fmt_int64_as_string)
+TYPE_HANDLERS(uint64_t, fmt_uint64_as_string)
 
 
 /* double and float are not allowed to be map keys. */
 /* double and float are not allowed to be map keys. */
 TYPE_HANDLERS_MAPKEY(bool,     fmt_bool)
 TYPE_HANDLERS_MAPKEY(bool,     fmt_bool)
-TYPE_HANDLERS_MAPKEY(int32_t,  fmt_int64)
-TYPE_HANDLERS_MAPKEY(uint32_t, fmt_int64)
-TYPE_HANDLERS_MAPKEY(int64_t,  fmt_int64)
-TYPE_HANDLERS_MAPKEY(uint64_t, fmt_uint64)
+TYPE_HANDLERS_MAPKEY(int32_t,  fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(uint32_t, fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(int64_t,  fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(uint64_t, fmt_uint64_as_number)
 
 
 #undef TYPE_HANDLERS
 #undef TYPE_HANDLERS
 #undef TYPE_HANDLERS_MAPKEY
 #undef TYPE_HANDLERS_MAPKEY

+ 0 - 11
php/tests/proto/test_wrapper_type_setters.proto

@@ -24,14 +24,3 @@ message TestWrapperSetters {
 
 
   map<string, google.protobuf.StringValue> map_string_value = 13;
   map<string, google.protobuf.StringValue> map_string_value = 13;
 }
 }
-
-message TestWrapperAccessorConflicts {
-  int32 normal_vs_wrapper_value = 1;
-  google.protobuf.Int32Value normal_vs_wrapper = 2;
-
-  int32 normal_vs_normal_value = 3;
-  int32 normal_vs_normal = 4;
-
-  google.protobuf.Int32Value wrapper_vs_wrapper_value = 5;
-  google.protobuf.Int32Value wrapper_vs_wrapper = 6;
-}

+ 0 - 38
php/tests/wrapper_type_setters_test.php

@@ -16,44 +16,6 @@ use Google\Protobuf\UInt64Value;
 
 
 class WrapperTypeSettersTest extends TestBase
 class WrapperTypeSettersTest extends TestBase
 {
 {
-    public function testConflictNormalVsWrapper()
-    {
-        $m = new Foo\TestWrapperAccessorConflicts();
-
-        $m->setNormalVsWrapperValue1(1);
-        $this->assertSame(1, $m->getNormalVsWrapperValue1());
-
-        $m->setNormalVsWrapperValue2(1);
-        $this->assertSame(1, $m->getNormalVsWrapperValue2());
-
-        $wrapper = new Int32Value(["value" => 1]);
-        $m->setNormalVsWrapper($wrapper);
-        $this->assertSame(1, $m->getNormalVsWrapper()->getValue());
-    }
-
-    public function testConflictNormalVsNormal()
-    {
-        $m = new Foo\TestWrapperAccessorConflicts();
-
-        $m->setNormalVsNormalValue(1);
-        $this->assertSame(1, $m->getNormalVsNormalValue());
-
-        $m->setNormalVsNormal(1);
-        $this->assertSame(1, $m->getNormalVsNormal());
-    }
-
-    public function testConflictWrapperVsWrapper()
-    {
-        $m = new Foo\TestWrapperAccessorConflicts();
-
-        $m->setWrapperVsWrapperValueValue(1);
-        $this->assertSame(1, $m->getWrapperVsWrapperValueValue());
-
-        $wrapper = new Int32Value(["value" => 1]);
-        $m->setWrapperVsWrapperValue5($wrapper);
-        $this->assertSame(1, $m->getWrapperVsWrapperValue5()->getValue());
-    }
-
     /**
     /**
      * @dataProvider gettersAndSettersDataProvider
      * @dataProvider gettersAndSettersDataProvider
      */
      */

+ 29 - 12
ruby/ext/google/protobuf_c/upb.c

@@ -16289,18 +16289,32 @@ static size_t fmt_bool(bool val, char* buf, size_t length) {
   return n;
   return n;
 }
 }
 
 
-static size_t fmt_int64(long val, char* buf, size_t length) {
-  size_t n = _upb_snprintf(buf, length, "%ld", val);
+static size_t fmt_int64_as_number(long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "%lld", val);
   CHKLENGTH(n > 0 && n < length);
   CHKLENGTH(n > 0 && n < length);
   return n;
   return n;
 }
 }
 
 
-static size_t fmt_uint64(unsigned long long val, char* buf, size_t length) {
+static size_t fmt_uint64_as_number(
+    unsigned long long val, char* buf, size_t length) {
   size_t n = _upb_snprintf(buf, length, "%llu", val);
   size_t n = _upb_snprintf(buf, length, "%llu", val);
   CHKLENGTH(n > 0 && n < length);
   CHKLENGTH(n > 0 && n < length);
   return n;
   return n;
 }
 }
 
 
+static size_t fmt_int64_as_string(long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "\"%lld\"", val);
+  CHKLENGTH(n > 0 && n < length);
+  return n;
+}
+
+static size_t fmt_uint64_as_string(
+    unsigned long long val, char* buf, size_t length) {
+  size_t n = _upb_snprintf(buf, length, "\"%llu\"", val);
+  CHKLENGTH(n > 0 && n < length);
+  return n;
+}
+
 /* Print a map key given a field name. Called by scalar field handlers and by
 /* Print a map key given a field name. Called by scalar field handlers and by
  * startseq for repeated fields. */
  * startseq for repeated fields. */
 static bool putkey(void *closure, const void *handler_data) {
 static bool putkey(void *closure, const void *handler_data) {
@@ -16344,8 +16358,11 @@ static bool putkey(void *closure, const void *handler_data) {
   static bool putmapkey_##type(void *closure, const void *handler_data,      \
   static bool putmapkey_##type(void *closure, const void *handler_data,      \
                             type val) {                                      \
                             type val) {                                      \
     upb_json_printer *p = closure;                                           \
     upb_json_printer *p = closure;                                           \
+    char data[64];                                                           \
+    size_t length = fmt_func(val, data, sizeof(data));                       \
+    UPB_UNUSED(handler_data);                                                \
     print_data(p, "\"", 1);                                                  \
     print_data(p, "\"", 1);                                                  \
-    CHK(put##type(closure, handler_data, val));                              \
+    print_data(p, data, length);                                             \
     print_data(p, "\":", 2);                                                 \
     print_data(p, "\":", 2);                                                 \
     return true;                                                             \
     return true;                                                             \
   }
   }
@@ -16353,17 +16370,17 @@ static bool putkey(void *closure, const void *handler_data) {
 TYPE_HANDLERS(double,   fmt_double)
 TYPE_HANDLERS(double,   fmt_double)
 TYPE_HANDLERS(float,    fmt_float)
 TYPE_HANDLERS(float,    fmt_float)
 TYPE_HANDLERS(bool,     fmt_bool)
 TYPE_HANDLERS(bool,     fmt_bool)
-TYPE_HANDLERS(int32_t,  fmt_int64)
-TYPE_HANDLERS(uint32_t, fmt_int64)
-TYPE_HANDLERS(int64_t,  fmt_int64)
-TYPE_HANDLERS(uint64_t, fmt_uint64)
+TYPE_HANDLERS(int32_t,  fmt_int64_as_number)
+TYPE_HANDLERS(uint32_t, fmt_int64_as_number)
+TYPE_HANDLERS(int64_t,  fmt_int64_as_string)
+TYPE_HANDLERS(uint64_t, fmt_uint64_as_string)
 
 
 /* double and float are not allowed to be map keys. */
 /* double and float are not allowed to be map keys. */
 TYPE_HANDLERS_MAPKEY(bool,     fmt_bool)
 TYPE_HANDLERS_MAPKEY(bool,     fmt_bool)
-TYPE_HANDLERS_MAPKEY(int32_t,  fmt_int64)
-TYPE_HANDLERS_MAPKEY(uint32_t, fmt_int64)
-TYPE_HANDLERS_MAPKEY(int64_t,  fmt_int64)
-TYPE_HANDLERS_MAPKEY(uint64_t, fmt_uint64)
+TYPE_HANDLERS_MAPKEY(int32_t,  fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(uint32_t, fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(int64_t,  fmt_int64_as_number)
+TYPE_HANDLERS_MAPKEY(uint64_t, fmt_uint64_as_number)
 
 
 #undef TYPE_HANDLERS
 #undef TYPE_HANDLERS
 #undef TYPE_HANDLERS_MAPKEY
 #undef TYPE_HANDLERS_MAPKEY

+ 6 - 6
ruby/tests/common_tests.rb

@@ -1108,9 +1108,9 @@ module CommonTests
 
 
     expected = {
     expected = {
       optionalInt32: 0,
       optionalInt32: 0,
-      optionalInt64: 0,
+      optionalInt64: "0",
       optionalUint32: 0,
       optionalUint32: 0,
-      optionalUint64: 0,
+      optionalUint64: "0",
       optionalBool: false,
       optionalBool: false,
       optionalFloat: 0,
       optionalFloat: 0,
       optionalDouble: 0,
       optionalDouble: 0,
@@ -1142,9 +1142,9 @@ module CommonTests
 
 
     expected = {
     expected = {
       optionalInt32: 0,
       optionalInt32: 0,
-      optionalInt64: 0,
+      optionalInt64: "0",
       optionalUint32: 0,
       optionalUint32: 0,
-      optionalUint64: 0,
+      optionalUint64: "0",
       optionalBool: false,
       optionalBool: false,
       optionalFloat: 0,
       optionalFloat: 0,
       optionalDouble: 0,
       optionalDouble: 0,
@@ -1177,9 +1177,9 @@ module CommonTests
 
 
     expected = {
     expected = {
       optionalInt32: 0,
       optionalInt32: 0,
-      optionalInt64: 0,
+      optionalInt64: "0",
       optionalUint32: 0,
       optionalUint32: 0,
-      optionalUint64: 0,
+      optionalUint64: "0",
       optionalBool: false,
       optionalBool: false,
       optionalFloat: 0,
       optionalFloat: 0,
       optionalDouble: 0,
       optionalDouble: 0,

+ 13 - 55
src/google/protobuf/compiler/php/php_generator.cc

@@ -655,58 +655,27 @@ void GenerateOneofField(const OneofDescriptor* oneof, io::Printer* printer) {
 
 
 void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor,
 void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor,
                            io::Printer* printer) {
                            io::Printer* printer) {
-  bool need_other_name_for_accessor = false;
-  bool need_other_name_for_wrapper_accessor = false;
-  const Descriptor* desc = field->containing_type();
-
-  if (!field->is_repeated() &&
-      field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
-      IsWrapperType(field)) {
-    // Check if there is any field called xxx_value
-    const FieldDescriptor* other =
-        desc->FindFieldByName(StrCat(field->name(), "_value"));
-    if (other != NULL) {
-      need_other_name_for_wrapper_accessor = true;
-    }
-  }
-
-  if (strings::EndsWith(field->name(), "_value")) {
-    std::size_t pos = (field->name()).find("_value");  
-    string name = (field->name()).substr(0, pos);
-    const FieldDescriptor* other = desc->FindFieldByName(name);
-    if (other != NULL &&
-        !other->is_repeated() &&
-        other->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
-        IsWrapperType(other)) {
-      need_other_name_for_accessor = true;
-    }
-  }
-
   const OneofDescriptor* oneof = field->containing_oneof();
   const OneofDescriptor* oneof = field->containing_oneof();
 
 
   // Generate getter.
   // Generate getter.
   if (oneof != NULL) {
   if (oneof != NULL) {
     GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter);
     GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter);
     printer->Print(
     printer->Print(
-        "public function get^camel_name^^field_number^()\n"
+        "public function get^camel_name^()\n"
         "{\n"
         "{\n"
         "    return $this->readOneof(^number^);\n"
         "    return $this->readOneof(^number^);\n"
         "}\n\n",
         "}\n\n",
         "camel_name", UnderscoresToCamelCase(field->name(), true),
         "camel_name", UnderscoresToCamelCase(field->name(), true),
-        "number", IntToString(field->number()),
-        "field_number", need_other_name_for_accessor ?
-            StrCat(field->number()) : "");
+        "number", IntToString(field->number()));
   } else {
   } else {
     GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter);
     GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter);
     printer->Print(
     printer->Print(
-        "public function get^camel_name^^field_number^()\n"
+        "public function get^camel_name^()\n"
         "{\n"
         "{\n"
         "    return $this->^name^;\n"
         "    return $this->^name^;\n"
         "}\n\n",
         "}\n\n",
-        "camel_name", UnderscoresToCamelCase(field->name(), true),
-        "name", field->name(),
-        "field_number", need_other_name_for_accessor ?
-            StrCat(field->number()) : "");
+        "camel_name", UnderscoresToCamelCase(field->name(), true), "name",
+        field->name());
   }
   }
 
 
   // For wrapper types, generate an additional getXXXValue getter
   // For wrapper types, generate an additional getXXXValue getter
@@ -715,28 +684,21 @@ void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor,
       field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
       field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
       IsWrapperType(field)) {
       IsWrapperType(field)) {
     GenerateWrapperFieldGetterDocComment(printer, field);
     GenerateWrapperFieldGetterDocComment(printer, field);
-
     printer->Print(
     printer->Print(
-        "public function get^camel_name^Value^field_number1^()\n"
+        "public function get^camel_name^Value()\n"
         "{\n"
         "{\n"
-        "    $wrapper = $this->get^camel_name^^field_number2^();\n"
+        "    $wrapper = $this->get^camel_name^();\n"
         "    return is_null($wrapper) ? null : $wrapper->getValue();\n"
         "    return is_null($wrapper) ? null : $wrapper->getValue();\n"
         "}\n\n",
         "}\n\n",
-        "camel_name", UnderscoresToCamelCase(field->name(), true),
-        "field_number1", need_other_name_for_wrapper_accessor ?
-            StrCat(field->number()) : "",
-        "field_number2", need_other_name_for_accessor ?
-            StrCat(field->number()) : "");
+        "camel_name", UnderscoresToCamelCase(field->name(), true));
   }
   }
 
 
   // Generate setter.
   // Generate setter.
   GenerateFieldDocComment(printer, field, is_descriptor, kFieldSetter);
   GenerateFieldDocComment(printer, field, is_descriptor, kFieldSetter);
   printer->Print(
   printer->Print(
-      "public function set^camel_name^^field_number^($var)\n"
+      "public function set^camel_name^($var)\n"
       "{\n",
       "{\n",
-      "camel_name", UnderscoresToCamelCase(field->name(), true),
-      "field_number", need_other_name_for_accessor ?
-          StrCat(field->number()) : "");
+      "camel_name", UnderscoresToCamelCase(field->name(), true));
 
 
   Indent(printer);
   Indent(printer);
 
 
@@ -836,17 +798,13 @@ void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor,
       IsWrapperType(field)) {
       IsWrapperType(field)) {
     GenerateWrapperFieldSetterDocComment(printer, field);
     GenerateWrapperFieldSetterDocComment(printer, field);
     printer->Print(
     printer->Print(
-        "public function set^camel_name^Value^field_number1^($var)\n"
+        "public function set^camel_name^Value($var)\n"
         "{\n"
         "{\n"
         "    $wrappedVar = is_null($var) ? null : new \\^wrapper_type^(['value' => $var]);\n"
         "    $wrappedVar = is_null($var) ? null : new \\^wrapper_type^(['value' => $var]);\n"
-        "    return $this->set^camel_name^^field_number2^($wrappedVar);\n"
+        "    return $this->set^camel_name^($wrappedVar);\n"
         "}\n\n",
         "}\n\n",
         "camel_name", UnderscoresToCamelCase(field->name(), true),
         "camel_name", UnderscoresToCamelCase(field->name(), true),
-        "wrapper_type", LegacyFullClassName(field->message_type(), is_descriptor),
-        "field_number1", need_other_name_for_wrapper_accessor ?
-            StrCat(field->number()) : "",
-        "field_number2", need_other_name_for_accessor ?
-            StrCat(field->number()) : "");
+        "wrapper_type", LegacyFullClassName(field->message_type(), is_descriptor));
   }
   }
 
 
   // Generate has method for proto2 only.
   // Generate has method for proto2 only.