Browse Source

Formatting changes in the generated code (#1786)

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.
Stefana-Ioana Dranca 1 year ago
parent
commit
d95ec7a74c

+ 27 - 6
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()
     }

+ 0 - 2
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
     )

+ 17 - 0
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<R>(
               request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -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<R>(
               request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -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<R>(
               request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -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<R>(
               request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -343,6 +351,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
               deserializer: some MessageDeserializer<NamespaceA.ServiceA.Methods.MethodA.Output>,
               _ body: @Sendable @escaping (ClientResponse.Single<NamespaceA.ServiceA.Methods.MethodA.Output>) async throws -> R
           ) async throws -> R where R: Sendable
+          
           /// Documentation for MethodB
           func methodB<R>(
               request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
@@ -363,6 +372,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
                   body
               )
           }
+          
           package func methodB<R>(
               request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
               _ body: @Sendable @escaping (ClientResponse.Stream<NamespaceA.ServiceA.Methods.MethodB.Output>) 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<R>(
               request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -396,6 +408,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
                   handler: body
               )
           }
+          
           /// Documentation for MethodB
           package func methodB<R>(
               request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
@@ -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<R>(
               request: ClientRequest.Single<ServiceA.Methods.MethodA.Input>,
@@ -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
           }

+ 0 - 1
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(

+ 3 - 0
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<NamespaceA.ServiceA.Methods.InputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.InputStreaming.Output>
+          
           /// Documentation for outputStreamingMethod
           func outputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output>
       }
@@ -358,6 +359,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase {
       internal protocol NamespaceA_ServiceAServiceProtocol: NamespaceA.ServiceA.StreamingServiceProtocol {
           /// Documentation for inputStreamingMethod
           func inputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.InputStreaming.Input>) async throws -> ServerResponse.Single<NamespaceA.ServiceA.Methods.InputStreaming.Output>
+          
           /// Documentation for outputStreamingMethod
           func outputStreaming(request: ServerRequest.Single<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output>
       }
@@ -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<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output> {
               let response = try await self.outputStreaming(request: ServerRequest.Single(stream: request))
               return response

+ 4 - 3
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<R>(
                 request: ClientRequest.Single<Helloworld.Greeter.Methods.SayHello.Input>,
@@ -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<R>(
             request: ClientRequest.Single<Helloworld.Greeter.Methods.SayHello.Input>,
@@ -350,7 +352,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
             )
           }
         }
-
         """
     )
   }