|
|
@@ -239,6 +239,8 @@ type FileDescriptor struct {
|
|
|
// as a map from the exported object to its symbols.
|
|
|
// This is used for supporting public imports.
|
|
|
exported map[Object][]symbol
|
|
|
+
|
|
|
+ index int // The index of this file in the list of files to generate code for
|
|
|
}
|
|
|
|
|
|
// PackageName is the package name we'll use in the generated code to refer to this file.
|
|
|
@@ -673,6 +675,7 @@ FindFiles:
|
|
|
for _, file := range g.allFiles {
|
|
|
if fileName == file.GetName() {
|
|
|
g.genFiles[i] = file
|
|
|
+ file.index = i
|
|
|
continue FindFiles
|
|
|
}
|
|
|
}
|
|
|
@@ -1028,10 +1031,33 @@ func (g *Generator) generate(file *FileDescriptor) {
|
|
|
// Generate the header, including package definition
|
|
|
func (g *Generator) generateHeader() {
|
|
|
g.P("// Code generated by protoc-gen-go.")
|
|
|
- g.P("// source: ", *g.file.Name)
|
|
|
+ g.P("// source: ", g.file.Name)
|
|
|
g.P("// DO NOT EDIT!")
|
|
|
g.P()
|
|
|
- g.P("package ", g.file.PackageName())
|
|
|
+
|
|
|
+ name := g.file.PackageName()
|
|
|
+
|
|
|
+ if g.file.index == 0 {
|
|
|
+ // Generate package docs for the first file in the package.
|
|
|
+ g.P("/*")
|
|
|
+ g.P("Package ", name, " is a generated protocol buffer package.")
|
|
|
+ g.P()
|
|
|
+ g.P("It is generated from these files:")
|
|
|
+ for _, f := range g.genFiles {
|
|
|
+ g.P("\t", f.Name)
|
|
|
+ }
|
|
|
+ g.P()
|
|
|
+ g.P("It has these top-level messages:")
|
|
|
+ for _, msg := range g.file.desc {
|
|
|
+ if msg.parent != nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ g.P("\t", CamelCaseSlice(msg.TypeName()))
|
|
|
+ }
|
|
|
+ g.P("*/")
|
|
|
+ }
|
|
|
+
|
|
|
+ g.P("package ", name)
|
|
|
g.P()
|
|
|
}
|
|
|
|