Avoid duplicate generation of enum code when the enum is inside a nested message.
        Fixes #2.

R=r
CC=golang-dev
http://codereview.appspot.com/1744041
diff --git a/compiler/generator/generator.go b/compiler/generator/generator.go
index d68d299..5e103d2 100644
--- a/compiler/generator/generator.go
+++ b/compiler/generator/generator.go
@@ -480,22 +480,15 @@
 // Return a slice of all the EnumDescriptors defined within this file
 func wrapEnumDescriptors(file *descriptor.FileDescriptorProto, descs []*Descriptor) []*EnumDescriptor {
 	sl := make([]*EnumDescriptor, 0, len(file.EnumType)+10)
+	// Top-level enums.
 	for _, enum := range file.EnumType {
 		sl = addEnumDescriptor(sl, enum, nil, file)
 	}
+	// Enums within messages. Enums within embedded messages appear in the outer-most message.
 	for _, nested := range descs {
-		sl = wrapEnumDescriptorsInMessage(sl, nested, file)
-	}
-	return sl
-}
-
-// Wrap this EnumDescriptor, recursively
-func wrapEnumDescriptorsInMessage(sl []*EnumDescriptor, desc *Descriptor, file *descriptor.FileDescriptorProto) []*EnumDescriptor {
-	for _, enum := range desc.EnumType {
-		sl = addEnumDescriptor(sl, enum, desc, file)
-	}
-	for _, nested := range desc.nested {
-		sl = wrapEnumDescriptorsInMessage(sl, nested, file)
+		for _, enum := range nested.EnumType {
+			sl = addEnumDescriptor(sl, enum, nested, file)
+		}
 	}
 	return sl
 }