Sfoglia il codice sorgente

improve error message for duplicate oneof in text parsing
PiperOrigin-RevId: 138128520

Googler 9 anni fa
parent
commit
2bc9827a78

+ 1 - 1
proto/text_parser.go

@@ -594,7 +594,7 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
 			dst = nv.Elem().Field(0)
 			field := sv.Field(oop.Field)
 			if !field.IsNil() {
-				return p.errorf("oneof field '%s' is already set", name)
+				return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, sv.Type().Field(oop.Field).Name)
 			}
 			field.Set(nv)
 		}

+ 1 - 1
proto/text_parser_test.go

@@ -638,7 +638,7 @@ func TestOneofParsing(t *testing.T) {
 
 	const inOverwrite = `name:"Shrek" number:42`
 	m = new(Communique)
-	testErr := "line 1.13: oneof field 'number' is already set"
+	testErr := "line 1.13: field 'number' would overwrite already parsed oneof 'Union'"
 	if err := UnmarshalText(inOverwrite, m); err == nil {
 		t.Errorf("TestOneofParsing: Didn't get expected error: %v", testErr)
 	} else if err.Error() != testErr {

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

@@ -626,7 +626,6 @@ func (g *Generator) CommandLineParameters(parameter string) {
 			}
 		}
 	}
-
 	if pluginList != "" {
 		// Amend the set of plugins.
 		enabled := make(map[string]bool)
@@ -1181,7 +1180,6 @@ func (g *Generator) generate(file *FileDescriptor) {
 		g.P("const _ = ", g.Pkg["proto"], ".ProtoPackageIsVersion", generatedCodeVersion, " // please upgrade the proto package")
 		g.P()
 	}
-
 	for _, td := range g.file.imp {
 		g.generateImported(td)
 	}