Просмотр исходного кода

Generate a XXX_WellKnownType method for NullValue.

David Symonds 10 лет назад
Родитель
Сommit
45760678a2
2 измененных файлов с 4 добавлено и 0 удалено
  1. 3 0
      protoc-gen-go/generator/generator.go
  2. 1 0
      ptypes/struct/struct.pb.go

+ 3 - 0
protoc-gen-go/generator/generator.go

@@ -1426,6 +1426,9 @@ func (g *Generator) generateEnum(enum *EnumDescriptor) {
 	}
 	indexes = append(indexes, strconv.Itoa(enum.index))
 	g.P("func (", ccTypeName, ") EnumDescriptor() ([]byte, []int) { return fileDescriptor", g.file.index, ", []int{", strings.Join(indexes, ", "), "} }")
+	if enum.file.GetPackage() == "google.protobuf" && enum.GetName() == "NullValue" {
+		g.P("func (", ccTypeName, `) XXX_WellKnownType() string { return "`, enum.GetName(), `" }`)
+	}
 
 	g.P()
 }

+ 1 - 0
ptypes/struct/struct.pb.go

@@ -50,6 +50,7 @@ func (x NullValue) String() string {
 	return proto.EnumName(NullValue_name, int32(x))
 }
 func (NullValue) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (NullValue) XXX_WellKnownType() string       { return "NullValue" }
 
 // `Struct` represents a structured data value, consisting of fields
 // which map to dynamically typed values. In some languages, `Struct`