From a976158b1cf345da7bf335e33d7a85ddf75ea5d5 Mon Sep 17 00:00:00 2001 From: Sydney Acksman Date: Sat, 23 Mar 2019 06:40:22 -0500 Subject: [PATCH] Fix incorrect code gen for string fields with default values --- .../TestProtos/Unittest.cs | 36 +++++++++---------- .../compiler/csharp/csharp_field_base.cc | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/Unittest.cs b/csharp/src/Google.Protobuf.Test/TestProtos/Unittest.cs index 217e2d29ed..97c909b659 100644 --- a/csharp/src/Google.Protobuf.Test/TestProtos/Unittest.cs +++ b/csharp/src/Google.Protobuf.Test/TestProtos/Unittest.cs @@ -882,7 +882,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { public static readonly pb::Extension DefaultBoolExtension = new pb::Extension(73, pb::FieldCodec.ForBool(584, true)); public static readonly pb::Extension DefaultStringExtension = - new pb::Extension(74, pb::FieldCodec.ForString(594, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +aGVsbG8= +")))); + new pb::Extension(74, pb::FieldCodec.ForString(594, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("aGVsbG8=")))); public static readonly pb::Extension DefaultBytesExtension = new pb::Extension(75, pb::FieldCodec.ForBytes(602, pb::ByteString.FromBase64("d29ybGQ="))); public static readonly pb::Extension DefaultNestedEnumExtension = @@ -892,9 +892,9 @@ namespace Google.Protobuf.TestProtos.Proto2 { public static readonly pb::Extension DefaultImportEnumExtension = new pb::Extension(83, pb::FieldCodec.ForEnum(664, x => (int) x, x => (global::Google.Protobuf.TestProtos.Proto2.ImportEnum) x, global::Google.Protobuf.TestProtos.Proto2.ImportEnum.ImportBar)); public static readonly pb::Extension DefaultStringPieceExtension = - new pb::Extension(84, pb::FieldCodec.ForString(674, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +YWJj +")))); + new pb::Extension(84, pb::FieldCodec.ForString(674, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("YWJj")))); public static readonly pb::Extension DefaultCordExtension = - new pb::Extension(85, pb::FieldCodec.ForString(682, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +MTIz +")))); + new pb::Extension(85, pb::FieldCodec.ForString(682, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("MTIz")))); /// /// For oneof test /// @@ -2415,7 +2415,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "default_string" field. public const int DefaultStringFieldNumber = 74; - private readonly static string DefaultStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +aGVsbG8= +")); + private readonly static string DefaultStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("aGVsbG8=")); private string defaultString_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2533,7 +2533,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "default_string_piece" field. public const int DefaultStringPieceFieldNumber = 84; - private readonly static string DefaultStringPieceDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +YWJj +")); + private readonly static string DefaultStringPieceDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("YWJj")); private string defaultStringPiece_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2556,7 +2556,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "default_cord" field. public const int DefaultCordFieldNumber = 85; - private readonly static string DefaultCordDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +MTIz +")); + private readonly static string DefaultCordDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("MTIz")); private string defaultCord_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6292,7 +6292,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// compile. /// public static readonly pb::Extension Test = - new pb::Extension(1002, pb::FieldCodec.ForString(8018, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +dGVzdA== +")))); + new pb::Extension(1002, pb::FieldCodec.ForString(8018, global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("dGVzdA==")))); /// /// Used to test if generated extension name is correct when there are /// underscores. @@ -13094,7 +13094,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "utf8_string" field. public const int Utf8StringFieldNumber = 6; - private readonly static string Utf8StringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +4Yi0 +")); + private readonly static string Utf8StringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("4Yi0")); private string utf8String_; /// @@ -13443,7 +13443,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "cpp_trigraph" field. public const int CppTrigraphFieldNumber = 20; - private readonly static string CppTrigraphDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +PyA/ID8/ID8/ID8/PyA/Py8gPz8t +")); + private readonly static string CppTrigraphDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("PyA/ID8/ID8/ID8/PyA/Py8gPz8t")); private string cppTrigraph_; /// @@ -13473,7 +13473,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "string_with_zero" field. public const int StringWithZeroFieldNumber = 23; - private readonly static string StringWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +aGVsAGxv +")); + private readonly static string StringWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("aGVsAGxv")); private string stringWithZero_; /// @@ -13522,7 +13522,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "string_piece_with_zero" field. public const int StringPieceWithZeroFieldNumber = 25; - private readonly static string StringPieceWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +YWIAYw== +")); + private readonly static string StringPieceWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("YWIAYw==")); private string stringPieceWithZero_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13545,7 +13545,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "cord_with_zero" field. public const int CordWithZeroFieldNumber = 26; - private readonly static string CordWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +MTIAMw== +")); + private readonly static string CordWithZeroDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("MTIAMw==")); private string cordWithZero_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13568,7 +13568,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "replacement_string" field. public const int ReplacementStringFieldNumber = 27; - private readonly static string ReplacementStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +JHt1bmtub3dufQ== +")); + private readonly static string ReplacementStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("JHt1bmtub3dufQ==")); private string replacementString_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16784,7 +16784,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { public const int BarStringFieldNumber = 13; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public string BarString { - get { return HasBarString ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +U1RSSU5H +")); } + get { return HasBarString ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("U1RSSU5H")); } set { bar_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); barCase_ = BarOneofCase.BarString; @@ -16807,7 +16807,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { public const int BarCordFieldNumber = 14; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public string BarCord { - get { return HasBarCord ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +Q09SRA== +")); } + get { return HasBarCord ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("Q09SRA==")); } set { bar_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); barCase_ = BarOneofCase.BarCord; @@ -16830,7 +16830,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { public const int BarStringPieceFieldNumber = 15; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public string BarStringPiece { - get { return HasBarStringPiece ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +U1BJRUNF +")); } + get { return HasBarStringPiece ? (string) bar_ : global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("U1BJRUNF")); } set { bar_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); barCase_ = BarOneofCase.BarStringPiece; @@ -16921,7 +16921,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "baz_string" field. public const int BazStringFieldNumber = 19; - private readonly static string BazStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +QkFa +")); + private readonly static string BazStringDefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("QkFa")); private string bazString_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21185,7 +21185,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { /// Field number for the "a" field. public const int AFieldNumber = 1; - private readonly static string ADefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(" +Ki8gPC0gTmVpdGhlciBzaG91bGQgdGhpcy4= +")); + private readonly static string ADefaultValue = global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String("Ki8gPC0gTmVpdGhlciBzaG91bGQgdGhpcy4=")); private string a_; /// diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.cc b/src/google/protobuf/compiler/csharp/csharp_field_base.cc index c5c2f382d3..765bb0e317 100644 --- a/src/google/protobuf/compiler/csharp/csharp_field_base.cc +++ b/src/google/protobuf/compiler/csharp/csharp_field_base.cc @@ -306,7 +306,7 @@ std::string FieldGeneratorBase::GetStringDefaultValueInternal(const FieldDescrip if (descriptor->default_value_string().empty()) return "\"\""; else - return "global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(\" +" + StringToBase64(descriptor->default_value_string()) + " +\"))"; + return "global::System.Text.Encoding.UTF8.GetString(global::System.Convert.FromBase64String(\"" + StringToBase64(descriptor->default_value_string()) + "\"))"; } std::string FieldGeneratorBase::GetBytesDefaultValueInternal(const FieldDescriptor* descriptor) {