Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions Sources/GRPCCodeGen/Internal/Translator/TypealiasTranslator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
/// ```swift
/// public enum Echo {
/// public enum Echo {
/// public enum Methods {
/// public enum Method {
/// public enum Get {
/// public typealias Input = Echo_EchoRequest
/// public typealias Output = Echo_EchoResponse
Expand All @@ -36,12 +36,13 @@
/// public static let descriptor = MethodDescriptor(service: "echo.Echo", method: "Collect")
/// }
/// // ...
///
/// public static let descriptors: [MethodDescriptor] = [
/// echo.Echo.Get.descriptor,
/// echo.Echo.Collect.descriptor,
/// // ...
/// ]
/// }
/// public static let methods: [MethodDescriptor] = [
/// echo.Echo.Get.descriptor,
/// echo.Echo.Collect.descriptor,
/// // ...
/// ]
///
/// public typealias StreamingServiceProtocol = echo_EchoServiceStreamingProtocol
/// public typealias ServiceProtocol = echo_EchoServiceProtocol
Expand Down Expand Up @@ -119,19 +120,20 @@ extension TypealiasTranslator {
accessModifier: self.accessModifier,
name: service.name.generatedUpperCase
)
var methodsEnum = EnumDescription(accessModifier: self.accessModifier, name: "Methods")
var methodsEnum = EnumDescription(accessModifier: self.accessModifier, name: "Method")
let methods = service.methods

// Create the method specific enums.
for method in methods {
let methodEnum = self.makeMethodEnum(from: method, in: service)
methodsEnum.members.append(methodEnum)
}
serviceEnum.members.append(.enum(methodsEnum))

// Create the method descriptor array.
let methodDescriptorsDeclaration = self.makeMethodDescriptors(for: service)
serviceEnum.members.append(methodDescriptorsDeclaration)
methodsEnum.members.append(methodDescriptorsDeclaration)

serviceEnum.members.append(.enum(methodsEnum))

if self.server {
// Create the streaming and non-streaming service protocol type aliases.
Expand Down Expand Up @@ -231,7 +233,7 @@ extension TypealiasTranslator {
accessModifier: self.accessModifier,
isStatic: true,
kind: .let,
left: .identifier(.pattern("methods")),
left: .identifier(.pattern("descriptors")),
type: .array(.member("MethodDescriptor")),
right: .literal(.array(methodDescriptors))
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,9 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {

public enum NamespaceA {
public enum ServiceA {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {
public enum Method {
public enum MethodA {
public typealias Input = NamespaceA_ServiceARequest
public typealias Output = NamespaceA_ServiceAResponse
Expand All @@ -57,10 +57,10 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
method: "MethodA"
)
}
public static let descriptors: [MethodDescriptor] = [
Methods.MethodA.descriptor
]
}
public static let methods: [MethodDescriptor] = [
Methods.MethodA.descriptor
]
public typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
public typealias ClientProtocol = NamespaceA_ServiceAClientProtocol
Expand Down Expand Up @@ -93,8 +93,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
public typealias ClientProtocol = NamespaceA_ServiceAClientProtocol
Expand Down Expand Up @@ -127,8 +128,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
}
Expand Down Expand Up @@ -159,8 +161,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias ClientProtocol = NamespaceA_ServiceAClientProtocol
public typealias Client = NamespaceA_ServiceAClient
}
Expand Down Expand Up @@ -191,8 +194,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
}
}
"""
Expand Down Expand Up @@ -224,7 +228,7 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
let expectedSwift =
"""
public enum ServiceA {
public enum Methods {
public enum Method {
public enum MethodA {
public typealias Input = ServiceARequest
public typealias Output = ServiceAResponse
Expand All @@ -233,10 +237,10 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
method: "MethodA"
)
}
public static let descriptors: [MethodDescriptor] = [
Methods.MethodA.descriptor
]
}
public static let methods: [MethodDescriptor] = [
Methods.MethodA.descriptor
]
public typealias StreamingServiceProtocol = ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = ServiceAServiceProtocol
public typealias ClientProtocol = ServiceAClientProtocol
Expand Down Expand Up @@ -284,7 +288,7 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum ServiceA {
public enum Methods {
public enum Method {
public enum MethodA {
public typealias Input = NamespaceA_ServiceARequest
public typealias Output = NamespaceA_ServiceAResponse
Expand All @@ -301,11 +305,11 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
method: "MethodB"
)
}
public static let descriptors: [MethodDescriptor] = [
Methods.MethodA.descriptor,
Methods.MethodB.descriptor
]
}
public static let methods: [MethodDescriptor] = [
Methods.MethodA.descriptor,
Methods.MethodB.descriptor
]
public typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
public typealias ClientProtocol = NamespaceA_ServiceAClientProtocol
Expand Down Expand Up @@ -338,8 +342,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
package enum NamespaceA {
package enum ServiceA {
package enum Methods {}
package static let methods: [MethodDescriptor] = []
package enum Method {
package static let descriptors: [MethodDescriptor] = []
}
package typealias StreamingServiceProtocol = NamespaceA_ServiceAServiceStreamingProtocol
package typealias ServiceProtocol = NamespaceA_ServiceAServiceProtocol
package typealias ClientProtocol = NamespaceA_ServiceAClientProtocol
Expand Down Expand Up @@ -384,16 +389,18 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
public enum NamespaceA {
public enum Aservice {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = NamespaceA_AserviceServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_AserviceServiceProtocol
public typealias ClientProtocol = NamespaceA_AserviceClientProtocol
public typealias Client = NamespaceA_AserviceClient
}
public enum Bservice {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = NamespaceA_BserviceServiceStreamingProtocol
public typealias ServiceProtocol = NamespaceA_BserviceServiceProtocol
public typealias ClientProtocol = NamespaceA_BserviceClientProtocol
Expand Down Expand Up @@ -429,16 +436,18 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
let expectedSwift =
"""
package enum AService {
package enum Methods {}
package static let methods: [MethodDescriptor] = []
package enum Method {
package static let descriptors: [MethodDescriptor] = []
}
package typealias StreamingServiceProtocol = AServiceServiceStreamingProtocol
package typealias ServiceProtocol = AServiceServiceProtocol
package typealias ClientProtocol = AServiceClientProtocol
package typealias Client = AServiceClient
}
package enum BService {
package enum Methods {}
package static let methods: [MethodDescriptor] = []
package enum Method {
package static let descriptors: [MethodDescriptor] = []
}
package typealias StreamingServiceProtocol = BServiceServiceStreamingProtocol
package typealias ServiceProtocol = BServiceServiceProtocol
package typealias ClientProtocol = BServiceClientProtocol
Expand Down Expand Up @@ -482,8 +491,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
"""
internal enum Anamespace {
internal enum AService {
internal enum Methods {}
internal static let methods: [MethodDescriptor] = []
internal enum Method {
internal static let descriptors: [MethodDescriptor] = []
}
internal typealias StreamingServiceProtocol = Anamespace_AServiceServiceStreamingProtocol
internal typealias ServiceProtocol = Anamespace_AServiceServiceProtocol
internal typealias ClientProtocol = Anamespace_AServiceClientProtocol
Expand All @@ -492,8 +502,9 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
}
internal enum Bnamespace {
internal enum BService {
internal enum Methods {}
internal static let methods: [MethodDescriptor] = []
internal enum Method {
internal static let descriptors: [MethodDescriptor] = []
}
internal typealias StreamingServiceProtocol = Bnamespace_BServiceServiceStreamingProtocol
internal typealias ServiceProtocol = Bnamespace_BServiceServiceProtocol
internal typealias ClientProtocol = Bnamespace_BServiceClientProtocol
Expand Down Expand Up @@ -531,17 +542,19 @@ final class TypealiasTranslatorSnippetBasedTests: XCTestCase {
let expectedSwift =
"""
public enum BService {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = BServiceServiceStreamingProtocol
public typealias ServiceProtocol = BServiceServiceProtocol
public typealias ClientProtocol = BServiceClientProtocol
public typealias Client = BServiceClient
}
public enum Anamespace {
public enum AService {
public enum Methods {}
public static let methods: [MethodDescriptor] = []
public enum Method {
public static let descriptors: [MethodDescriptor] = []
}
public typealias StreamingServiceProtocol = Anamespace_AServiceServiceStreamingProtocol
public typealias ServiceProtocol = Anamespace_AServiceServiceProtocol
public typealias ClientProtocol = Anamespace_AServiceClientProtocol
Expand Down
24 changes: 12 additions & 12 deletions Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {

internal enum Helloworld {
internal enum Greeter {
internal enum Methods {
internal enum Method {
internal enum SayHello {
internal typealias Input = HelloRequest
internal typealias Output = HelloReply
Expand All @@ -67,10 +67,10 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
method: "SayHello"
)
}
internal static let descriptors: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
}
internal static let methods: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
internal typealias ClientProtocol = Helloworld_GreeterClientProtocol
internal typealias Client = Helloworld_GreeterClient
}
Expand Down Expand Up @@ -162,7 +162,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {

public enum Helloworld {
public enum Greeter {
public enum Methods {
public enum Method {
public enum SayHello {
public typealias Input = HelloRequest
public typealias Output = HelloReply
Expand All @@ -171,10 +171,10 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
method: "SayHello"
)
}
public static let descriptors: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
}
public static let methods: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
public typealias StreamingServiceProtocol = Helloworld_GreeterServiceStreamingProtocol
public typealias ServiceProtocol = Helloworld_GreeterServiceProtocol
}
Expand Down Expand Up @@ -249,7 +249,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {

package enum Helloworld {
package enum Greeter {
package enum Methods {
package enum Method {
package enum SayHello {
package typealias Input = HelloRequest
package typealias Output = HelloReply
Expand All @@ -258,10 +258,10 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
method: "SayHello"
)
}
package static let descriptors: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
}
package static let methods: [MethodDescriptor] = [
Methods.SayHello.descriptor
]
package typealias StreamingServiceProtocol = Helloworld_GreeterServiceStreamingProtocol
package typealias ServiceProtocol = Helloworld_GreeterServiceProtocol
package typealias ClientProtocol = Helloworld_GreeterClientProtocol
Expand Down