Skip to content

Commit d95ec7a

Browse files
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.
1 parent aa033d6 commit d95ec7a

File tree

6 files changed

+51
-12
lines changed

6 files changed

+51
-12
lines changed

Sources/GRPCCodeGen/Internal/Renderer/TextBasedRenderer.swift

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,11 @@ struct TextBasedRenderer: RendererProtocol {
144144
renderImports(imports)
145145
writer.writeLine("")
146146
}
147-
for codeBlock in description.codeBlocks {
147+
for (codeBlock, isLast) in description.codeBlocks.enumeratedWithLastMarker() {
148148
renderCodeBlock(codeBlock)
149-
writer.writeLine("")
149+
if !isLast {
150+
writer.writeLine("")
151+
}
150152
}
151153
}
152154

@@ -556,8 +558,13 @@ struct TextBasedRenderer: RendererProtocol {
556558
writer.nextLineAppendsToLastLine()
557559
}
558560
writer.writeLine(" {")
559-
for declaration in extensionDescription.declarations {
560-
writer.withNestedLevel { renderDeclaration(declaration) }
561+
for (declaration, isLast) in extensionDescription.declarations.enumeratedWithLastMarker() {
562+
writer.withNestedLevel {
563+
renderDeclaration(declaration)
564+
if !isLast {
565+
writer.writeLine("")
566+
}
567+
}
561568
}
562569
writer.writeLine("}")
563570
}
@@ -701,7 +708,14 @@ struct TextBasedRenderer: RendererProtocol {
701708
}
702709
writer.writeLine(" {")
703710
if !structDesc.members.isEmpty {
704-
writer.withNestedLevel { for member in structDesc.members { renderDeclaration(member) } }
711+
writer.withNestedLevel {
712+
for (member, isLast) in structDesc.members.enumeratedWithLastMarker() {
713+
renderDeclaration(member)
714+
if !isLast {
715+
writer.writeLine("")
716+
}
717+
}
718+
}
705719
} else {
706720
writer.nextLineAppendsToLastLine()
707721
}
@@ -723,7 +737,14 @@ struct TextBasedRenderer: RendererProtocol {
723737
}
724738
writer.writeLine(" {")
725739
if !protocolDesc.members.isEmpty {
726-
writer.withNestedLevel { for member in protocolDesc.members { renderDeclaration(member) } }
740+
writer.withNestedLevel {
741+
for (member, isLast) in protocolDesc.members.enumeratedWithLastMarker() {
742+
renderDeclaration(member)
743+
if !isLast {
744+
writer.writeLine("")
745+
}
746+
}
747+
}
727748
} else {
728749
writer.nextLineAppendsToLastLine()
729750
}

Tests/GRPCCodeGenTests/Internal/Renderer/TextBasedRendererTests.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -845,7 +845,6 @@ final class Test_TextBasedRenderer: XCTestCase {
845845
import Foo
846846

847847
struct Bar {}
848-
849848
"""#
850849
)
851850
}
@@ -871,7 +870,6 @@ final class Test_TextBasedRenderer: XCTestCase {
871870
struct Bar {
872871
struct Baz {}
873872
}
874-
875873
"""#,
876874
indentation: 2
877875
)

Tests/GRPCCodeGenTests/Internal/Translator/ClientCodeTranslatorSnippetBasedTests.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
6868
/// Documentation for ServiceA
6969
public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
7070
private let client: GRPCCore.GRPCClient
71+
7172
public init(client: GRPCCore.GRPCClient) {
7273
self.client = client
7374
}
75+
7476
/// Documentation for MethodA
7577
public func methodA<R>(
7678
request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -139,9 +141,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
139141
/// Documentation for ServiceA
140142
public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
141143
private let client: GRPCCore.GRPCClient
144+
142145
public init(client: GRPCCore.GRPCClient) {
143146
self.client = client
144147
}
148+
145149
/// Documentation for MethodA
146150
public func methodA<R>(
147151
request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -210,9 +214,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
210214
/// Documentation for ServiceA
211215
public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
212216
private let client: GRPCCore.GRPCClient
217+
213218
public init(client: GRPCCore.GRPCClient) {
214219
self.client = client
215220
}
221+
216222
/// Documentation for MethodA
217223
public func methodA<R>(
218224
request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -281,9 +287,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
281287
/// Documentation for ServiceA
282288
public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
283289
private let client: GRPCCore.GRPCClient
290+
284291
public init(client: GRPCCore.GRPCClient) {
285292
self.client = client
286293
}
294+
287295
/// Documentation for MethodA
288296
public func methodA<R>(
289297
request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -343,6 +351,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
343351
deserializer: some MessageDeserializer<NamespaceA.ServiceA.Methods.MethodA.Output>,
344352
_ body: @Sendable @escaping (ClientResponse.Single<NamespaceA.ServiceA.Methods.MethodA.Output>) async throws -> R
345353
) async throws -> R where R: Sendable
354+
346355
/// Documentation for MethodB
347356
func methodB<R>(
348357
request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
@@ -363,6 +372,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
363372
body
364373
)
365374
}
375+
366376
package func methodB<R>(
367377
request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
368378
_ body: @Sendable @escaping (ClientResponse.Stream<NamespaceA.ServiceA.Methods.MethodB.Output>) async throws -> R
@@ -378,9 +388,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
378388
/// Documentation for ServiceA
379389
package struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
380390
private let client: GRPCCore.GRPCClient
391+
381392
package init(client: GRPCCore.GRPCClient) {
382393
self.client = client
383394
}
395+
384396
/// Documentation for MethodA
385397
package func methodA<R>(
386398
request: ClientRequest.Stream<NamespaceA.ServiceA.Methods.MethodA.Input>,
@@ -396,6 +408,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
396408
handler: body
397409
)
398410
}
411+
399412
/// Documentation for MethodB
400413
package func methodB<R>(
401414
request: ClientRequest.Single<NamespaceA.ServiceA.Methods.MethodB.Input>,
@@ -464,9 +477,11 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
464477
/// Documentation for ServiceA
465478
internal struct ServiceAClient: ServiceA.ClientProtocol {
466479
private let client: GRPCCore.GRPCClient
480+
467481
internal init(client: GRPCCore.GRPCClient) {
468482
self.client = client
469483
}
484+
470485
/// Documentation for MethodA
471486
internal func methodA<R>(
472487
request: ClientRequest.Single<ServiceA.Methods.MethodA.Input>,
@@ -522,6 +537,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
522537
/// Documentation for ServiceA
523538
public struct NamespaceA_ServiceAClient: NamespaceA.ServiceA.ClientProtocol {
524539
private let client: GRPCCore.GRPCClient
540+
525541
public init(client: GRPCCore.GRPCClient) {
526542
self.client = client
527543
}
@@ -537,6 +553,7 @@ final class ClientCodeTranslatorSnippetBasedTests: XCTestCase {
537553
/// Line 2
538554
public struct ServiceBClient: ServiceB.ClientProtocol {
539555
private let client: GRPCCore.GRPCClient
556+
540557
public init(client: GRPCCore.GRPCClient) {
541558
self.client = client
542559
}

Tests/GRPCCodeGenTests/Internal/Translator/IDLToStructuredSwiftTranslatorSnippetBasedTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ final class IDLToStructuredSwiftTranslatorSnippetBasedTests: XCTestCase {
193193
/// Partial conformance to `NamespaceA_ServiceAStreamingServiceProtocol`.
194194
extension NamespaceA.ServiceA.ServiceProtocol {
195195
}
196-
197196
"""
198197
try self.assertIDLToStructuredSwiftTranslation(
199198
codeGenerationRequest: makeCodeGenerationRequest(

Tests/GRPCCodeGenTests/Internal/Translator/ServerCodeTranslatorSnippetBasedTests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase {
330330
internal protocol NamespaceA_ServiceAStreamingServiceProtocol: GRPCCore.RegistrableRPCService {
331331
/// Documentation for inputStreamingMethod
332332
func inputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.InputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.InputStreaming.Output>
333+
333334
/// Documentation for outputStreamingMethod
334335
func outputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output>
335336
}
@@ -358,6 +359,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase {
358359
internal protocol NamespaceA_ServiceAServiceProtocol: NamespaceA.ServiceA.StreamingServiceProtocol {
359360
/// Documentation for inputStreamingMethod
360361
func inputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.InputStreaming.Input>) async throws -> ServerResponse.Single<NamespaceA.ServiceA.Methods.InputStreaming.Output>
362+
361363
/// Documentation for outputStreamingMethod
362364
func outputStreaming(request: ServerRequest.Single<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output>
363365
}
@@ -367,6 +369,7 @@ final class ServerCodeTranslatorSnippetBasedTests: XCTestCase {
367369
let response = try await self.inputStreaming(request: request)
368370
return ServerResponse.Stream(single: response)
369371
}
372+
370373
internal func outputStreaming(request: ServerRequest.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Input>) async throws -> ServerResponse.Stream<NamespaceA.ServiceA.Methods.OutputStreaming.Output> {
371374
let response = try await self.outputStreaming(request: ServerRequest.Single(stream: request))
372375
return response

Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
104104
/// The greeting service definition.
105105
internal struct Helloworld_GreeterClient: Helloworld.Greeter.ClientProtocol {
106106
private let client: GRPCCore.GRPCClient
107+
107108
internal init(client: GRPCCore.GRPCClient) {
108109
self.client = client
109110
}
111+
110112
/// Sends a greeting.
111113
internal func sayHello<R>(
112114
request: ClientRequest.Single<Helloworld.Greeter.Methods.SayHello.Input>,
@@ -123,7 +125,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
123125
)
124126
}
125127
}
126-
127128
"""
128129
)
129130

@@ -212,7 +213,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
212213
return ServerResponse.Stream(single: response)
213214
}
214215
}
215-
216216
"""
217217
)
218218
try testCodeGeneration(
@@ -331,9 +331,11 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
331331
/// The greeting service definition.
332332
package struct Helloworld_GreeterClient: Helloworld.Greeter.ClientProtocol {
333333
private let client: GRPCCore.GRPCClient
334+
334335
package init(client: GRPCCore.GRPCClient) {
335336
self.client = client
336337
}
338+
337339
/// Sends a greeting.
338340
package func sayHello<R>(
339341
request: ClientRequest.Single<Helloworld.Greeter.Methods.SayHello.Input>,
@@ -350,7 +352,6 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
350352
)
351353
}
352354
}
353-
354355
"""
355356
)
356357
}

0 commit comments

Comments
 (0)