Fixes #23. R=r CC=golang-dev http://codereview.appspot.com/5477071
@@ -1279,7 +1279,7 @@ func TestSetDefaultsWithSubMessage(t *testing.T) {
}
SetDefaults(m)
if !Equal(m, expected) {
- t.Errorf(" got %v\nwant %v", m, expected)
+ t.Errorf("\n got %v\nwant %v", m, expected)
@@ -657,7 +657,11 @@ func setDefaults(v reflect.Value, recur, zeros bool) {
for _, ni := range dm.nested {
- setDefaults(v.Field(ni), recur, zeros)
+ f := v.Field(ni)
+ if f.IsNil() {
+ continue
+ }
+ setDefaults(f, recur, zeros)
@@ -288,6 +288,13 @@ message Defaults {
optional float F_Pinf = 15 [default=inf];
optional float F_Ninf = 16 [default=-inf];
optional float F_Nan = 17 [default=nan];
+
+ // Sub-message.
+ optional SubDefaults sub = 18;
+}
+message SubDefaults {
+ optional int64 n = 1 [default=7];
message RepeatedEnum {