Browse Source

Generate conformance when message are nested (#879)

Motivation:

Protobuf message definitions may be nested yet we only generated payload
conformance for the top-level message.

Modifications:

- Generate conformance for messages defined within of other messages
- Update test

Result:

Messages which are defined within another message will have conformance
for GRPCProtobufPalyoad generated.
George Barnett 5 years ago
parent
commit
cc1c9f72f6
1 changed files with 11 additions and 2 deletions
  1. 11 2
      Sources/protoc-gen-grpc-swift/Generator-Conformance.swift

+ 11 - 2
Sources/protoc-gen-grpc-swift/Generator-Conformance.swift

@@ -23,8 +23,17 @@ extension Generator {
     }
     println("// Provides conformance to `GRPCPayload`")
     for message in self.file.messages {
-      let name = self.protobufNamer.fullName(message: message)
-      self.println("extension \(name): GRPCProtobufPayload {}")
+      self.printProtobufExtensions(for: message)
+    }
+  }
+
+  internal func printProtobufExtensions(for message: Descriptor) {
+    let name = self.protobufNamer.fullName(message: message)
+    self.println("extension \(name): GRPCProtobufPayload {}")
+
+    // Messages may be nested.
+    for message in message.messages {
+      self.printProtobufExtensions(for: message)
     }
   }
 }