From 76396130e5006d667d6537f2adbedc80b92374bc Mon Sep 17 00:00:00 2001 From: Stefana Dranca Date: Thu, 1 Feb 2024 14:52:15 +0000 Subject: [PATCH] Formatting changes in the generated code Motivation: Blank lines between code blocks make the code clearer - we want this for the generated code. Modifications: - changed the rendering functions for protocols, extensions and structs to add blank lines between their functions and properties - changed the tests accordingly Result: The generated code is clearer. --- .../Internal/Renderer/TextBasedRenderer.swift | 33 +++++++++++++++---- .../Renderer/TextBasedRendererTests.swift | 2 -- ...lientCodeTranslatorSnippetBasedTests.swift | 17 ++++++++++ ...uredSwiftTranslatorSnippetBasedTests.swift | 1 - ...erverCodeTranslatorSnippetBasedTests.swift | 3 ++ .../ProtobufCodeGeneratorTests.swift | 7 ++-- 6 files changed, 51 insertions(+), 12 deletions(-) diff --git a/Sources/GRPCCodeGen/Internal/Renderer/TextBasedRenderer.swift b/Sources/GRPCCodeGen/Internal/Renderer/TextBasedRenderer.swift index 3c9b1845c..2b701f34d 100644 --- a/Sources/GRPCCodeGen/Internal/Renderer/TextBasedRenderer.swift +++ b/Sources/GRPCCodeGen/Internal/Renderer/TextBasedRenderer.swift @@ -144,9 +144,11 @@ struct TextBasedRenderer: RendererProtocol { renderImports(imports) writer.writeLine("") } - for codeBlock in description.codeBlocks { + for (codeBlock, isLast) in description.codeBlocks.enumeratedWithLastMarker() { renderCodeBlock(codeBlock) - writer.writeLine("") + if !isLast { + writer.writeLine("") + } } } @@ -556,8 +558,13 @@ struct TextBasedRenderer: RendererProtocol { writer.nextLineAppendsToLastLine() } writer.writeLine(" {") - for declaration in extensionDescription.declarations { - writer.withNestedLevel { renderDeclaration(declaration) } + for (declaration, isLast) in extensionDescription.declarations.enumeratedWithLastMarker() { + writer.withNestedLevel { + renderDeclaration(declaration) + if !isLast { + writer.writeLine("") + } + } } writer.writeLine("}") } @@ -701,7 +708,14 @@ struct TextBasedRenderer: RendererProtocol { } writer.writeLine(" {") if !structDesc.members.isEmpty { - writer.withNestedLevel { for member in structDesc.members { renderDeclaration(member) } } + writer.withNestedLevel { + for (member, isLast) in structDesc.members.enumeratedWithLastMarker() { + renderDeclaration(member) + if !isLast { + writer.writeLine("") + } + } + } } else { writer.nextLineAppendsToLastLine() } @@ -723,7 +737,14 @@ struct TextBasedRenderer: RendererProtocol { } writer.writeLine(" {") if !protocolDesc.members.isEmpty { - writer.withNestedLevel { for member in protocolDesc.members { renderDeclaration(member) } } + writer.withNestedLevel { + for (member, isLast) in protocolDesc.members.enumeratedWithLastMarker() { + renderDeclaration(member) + if !isLast { + writer.writeLine("") + } + } + } } else { writer.nextLineAppendsToLastLine() } diff --git a/Tests/GRPCCodeGenTests/Internal/Renderer/TextBasedRendererTests.swift b/Tests/GRPCCodeGenTests/Internal/Renderer/TextBasedRendererTests.swift index 6d40aa56e..5a56d12fa 100644 --- a/Tests/GRPCCodeGenTests/Internal/Renderer/TextBasedRendererTests.swift +++ b/Tests/GRPCCodeGenTests/Internal/Renderer/TextBasedRendererTests.swift @@ -845,7 +845,6 @@ final class Test_TextBasedRenderer: XCTestCase { import Foo struct Bar {} - """# ) } @@ -871,7 +870,6 @@ final class Test_TextBasedRenderer: XCTestCase { struct Bar { struct Baz {} } - """#, indentation: 2 ) diff --git a/Tests/GRPCCodeGenTests/Internal/Translator/ClientCodeTranslatorSnippetBasedTests.swift b/Tests/GRPCCodeGenTests/Internal/Translator/ClientCodeTranslatorSnippetBasedTests.swift index 20045e7f2..8bf9fb58a 100644 --- a/Tests/GRPCCodeGenTests/Internal/Translator/ClientCodeTranslatorSnippetBasedTests.swift +++ b/Tests/GRPCCodeGenTests/Internal/Translator/ClientCodeTranslatorSnippetBasedTests.swift @@ -68,9 +68,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA public func methodA( request: ClientRequest.Single, @@ -139,9 +141,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA public func methodA( request: ClientRequest.Stream, @@ -210,9 +214,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA public func methodA( request: ClientRequest.Single, @@ -281,9 +287,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA public func methodA( request: ClientRequest.Stream, @@ -343,6 +351,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { deserializer: some MessageDeserializer, _ body: @Sendable @escaping (ClientResponse.Single) async throws -> R ) async throws -> R where R: Sendable + /// Documentation for MethodB func methodB( request: ClientRequest.Single, @@ -363,6 +372,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { body ) } + package func methodB( request: ClientRequest.Single, _ body: @Sendable @escaping (ClientResponse.Stream) async throws -> R @@ -378,9 +388,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA package struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + package init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA package func methodA( request: ClientRequest.Stream, @@ -396,6 +408,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { handler: body ) } + /// Documentation for MethodB package func methodB( request: ClientRequest.Single, @@ -464,9 +477,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA internal struct ServiceAClient: ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + internal init(client: GRPCCore.GRPCClient) { self.client = client } + /// Documentation for MethodA internal func methodA( request: ClientRequest.Single, @@ -522,6 +537,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Documentation for ServiceA public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } @@ -537,6 +553,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase { /// Line 2 public struct ServiceBClient: ServiceB.ClientProtocol { private let client: GRPCCore.GRPCClient + public init(client: GRPCCore.GRPCClient) { self.client = client } diff --git a/Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift b/Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift index 58a10cb3d..4ddd3f612 100644 --- a/Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift +++ b/Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift @@ -193,7 +193,6 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase { /// Partial conformance to `NamespaceA_ServiceAStreamingServiceProtocol`. extension NamespaceA.ServiceA.ServiceProtocol { } - """ try self.assertIDLToStructuredSwiftTranslation( codeGenerationRequest: makeCodeGenerationRequest( diff --git a/Tests/GRPCCodeGenTests/Internal/Translator/ServerCodeTranslatorSnippetBasedTests.swift b/Tests/GRPCCodeGenTests/Internal/Translator/ServerCodeTranslatorSnippetBasedTests.swift index 3f13ec0c6..e8b21c7f1 100644 --- a/Tests/GRPCCodeGenTests/Internal/Translator/ServerCodeTranslatorSnippetBasedTests.swift +++ b/Tests/GRPCCodeGenTests/Internal/Translator/ServerCodeTranslatorSnippetBasedTests.swift @@ -330,6 +330,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase { internal protocol NamespaceA_ServiceAStreamingServiceProtocol: GRPCCore.RegistrableRPCService { /// Documentation for inputStreamingMethod func inputStreaming(request: ServerRequest.Stream) async throws -> ServerResponse.Stream + /// Documentation for outputStreamingMethod func outputStreaming(request: ServerRequest.Stream) async throws -> ServerResponse.Stream } @@ -358,6 +359,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase { internal protocol NamespaceA_ServiceAServiceProtocol: NamespaceA.ServiceA.StreamingServiceProtocol { /// Documentation for inputStreamingMethod func inputStreaming(request: ServerRequest.Stream) async throws -> ServerResponse.Single + /// Documentation for outputStreamingMethod func outputStreaming(request: ServerRequest.Single) async throws -> ServerResponse.Stream } @@ -367,6 +369,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase { let response = try await self.inputStreaming(request: request) return ServerResponse.Stream(single: response) } + internal func outputStreaming(request: ServerRequest.Stream) async throws -> ServerResponse.Stream { let response = try await self.outputStreaming(request: ServerRequest.Single(stream: request)) return response diff --git a/Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift b/Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift index 88c113106..91bc4556a 100644 --- a/Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift +++ b/Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift @@ -104,9 +104,11 @@ final class ProtobufCodeGeneratorTests: XCTestCase { /// The greeting service definition. internal struct Helloworld_GreeterClient: Helloworld.Greeter.ClientProtocol { private let client: GRPCCore.GRPCClient + internal init(client: GRPCCore.GRPCClient) { self.client = client } + /// Sends a greeting. internal func sayHello( request: ClientRequest.Single, @@ -123,7 +125,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase { ) } } - """ ) @@ -212,7 +213,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase { return ServerResponse.Stream(single: response) } } - """ ) try testCodeGeneration( @@ -331,9 +331,11 @@ final class ProtobufCodeGeneratorTests: XCTestCase { /// The greeting service definition. package struct Helloworld_GreeterClient: Helloworld.Greeter.ClientProtocol { private let client: GRPCCore.GRPCClient + package init(client: GRPCCore.GRPCClient) { self.client = client } + /// Sends a greeting. package func sayHello( request: ClientRequest.Single, @@ -350,7 +352,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase { ) } } - """ ) }