Skip to content

Commit 0dafcd3

Browse files
committed
Fix deprecations from codegen changes
Motivation: We renamed a few types/properties in the code gen module and deprecated the old names. Modifications: - Use new APIs Result: No warnings
1 parent 05334bb commit 0dafcd3

File tree

7 files changed

+58
-74
lines changed

7 files changed

+58
-74
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ let products: [Product] = [
3535
let dependencies: [Package.Dependency] = [
3636
.package(
3737
url: "https://github.com/grpc/grpc-swift.git",
38-
exact: "2.0.0-beta.3"
38+
branch: "main"
3939
),
4040
.package(
4141
url: "https://github.com/apple/swift-protobuf.git",

Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ internal import SwiftProtobuf
1818
package import SwiftProtobufPluginLibrary
1919

2020
package import struct GRPCCodeGen.CodeGenerationRequest
21+
package import struct GRPCCodeGen.CodeGenerator
2122
package import struct GRPCCodeGen.Dependency
2223
package import struct GRPCCodeGen.MethodDescriptor
23-
package import struct GRPCCodeGen.Name
24+
package import struct GRPCCodeGen.MethodName
2425
package import struct GRPCCodeGen.ServiceDescriptor
25-
package import struct GRPCCodeGen.SourceGenerator
26+
package import struct GRPCCodeGen.ServiceName
2627

2728
#if canImport(FoundationEssentials)
2829
internal import struct FoundationEssentials.IndexPath
@@ -34,12 +35,12 @@ internal import struct Foundation.IndexPath
3435
package struct ProtobufCodeGenParser {
3536
let extraModuleImports: [String]
3637
let protoToModuleMappings: ProtoFileToModuleMappings
37-
let accessLevel: SourceGenerator.Config.AccessLevel
38+
let accessLevel: CodeGenerator.Config.AccessLevel
3839

3940
package init(
4041
protoFileModuleMappings: ProtoFileToModuleMappings,
4142
extraModuleImports: [String],
42-
accessLevel: SourceGenerator.Config.AccessLevel
43+
accessLevel: CodeGenerator.Config.AccessLevel
4344
) {
4445
self.extraModuleImports = extraModuleImports
4546
self.protoToModuleMappings = protoFileModuleMappings
@@ -69,12 +70,6 @@ package struct ProtobufCodeGenParser {
6970
// https://github.com/grpc/grpc-swift
7071
7172
"""
72-
let lookupSerializer: (String) -> String = { messageType in
73-
"GRPCProtobuf.ProtobufSerializer<\(messageType)>()"
74-
}
75-
let lookupDeserializer: (String) -> String = { messageType in
76-
"GRPCProtobuf.ProtobufDeserializer<\(messageType)>()"
77-
}
7873

7974
let services = descriptor.services.map {
8075
GRPCCodeGen.ServiceDescriptor(
@@ -90,8 +85,12 @@ package struct ProtobufCodeGenParser {
9085
leadingTrivia: header + leadingTrivia,
9186
dependencies: self.codeDependencies(file: descriptor),
9287
services: services,
93-
lookupSerializer: lookupSerializer,
94-
lookupDeserializer: lookupDeserializer
88+
makeSerializerCodeSnippet: { messageType in
89+
"GRPCProtobuf.ProtobufSerializer<\(messageType)>()"
90+
},
91+
makeDeserializerCodeSnippet: { messageType in
92+
"GRPCProtobuf.ProtobufDeserializer<\(messageType)>()"
93+
}
9594
)
9695
}
9796
}
@@ -147,22 +146,17 @@ extension GRPCCodeGen.ServiceDescriptor {
147146
protobufNamer: protobufNamer
148147
)
149148
}
150-
let name = Name(
151-
base: descriptor.name,
149+
150+
let typePrefix = protobufNamer.typePrefix(forFile: file)
151+
let name = ServiceName(
152+
identifyingName: descriptor.fullName,
152153
// The service name from the '.proto' file is expected to be in upper camel case
153-
generatedUpperCase: descriptor.name,
154-
generatedLowerCase: CamelCaser.toLowerCamelCase(descriptor.name)
154+
typeName: typePrefix + descriptor.name,
155+
propertyName: protobufNamer.typePrefixProperty(file: file) + descriptor.name
155156
)
156157

157-
// Packages that are based on the path of the '.proto' file usually
158-
// contain dots. For example: "grpc.test".
159-
let namespace = Name(
160-
base: package,
161-
generatedUpperCase: protobufNamer.formattedUpperCasePackage(file: file),
162-
generatedLowerCase: protobufNamer.formattedLowerCasePackage(file: file)
163-
)
164158
let documentation = descriptor.protoSourceComments()
165-
self.init(documentation: documentation, name: name, namespace: namespace, methods: methods)
159+
self.init(documentation: documentation, name: name, methods: methods)
166160
}
167161
}
168162

@@ -171,11 +165,11 @@ extension GRPCCodeGen.MethodDescriptor {
171165
descriptor: SwiftProtobufPluginLibrary.MethodDescriptor,
172166
protobufNamer: SwiftProtobufNamer
173167
) {
174-
let name = Name(
175-
base: descriptor.name,
168+
let name = MethodName(
169+
identifyingName: descriptor.name,
176170
// The method name from the '.proto' file is expected to be in upper camel case
177-
generatedUpperCase: descriptor.name,
178-
generatedLowerCase: CamelCaser.toLowerCamelCase(descriptor.name)
171+
typeName: descriptor.name,
172+
functionName: CamelCaser.toLowerCamelCase(descriptor.name)
179173
)
180174
let documentation = descriptor.protoSourceComments()
181175
self.init(
@@ -208,17 +202,19 @@ extension FileDescriptor {
208202
}
209203

210204
extension SwiftProtobufNamer {
211-
internal func formattedUpperCasePackage(file: FileDescriptor) -> String {
212-
let unformattedPackage = self.typePrefix(forFile: file)
213-
return unformattedPackage.trimTrailingUnderscores()
214-
}
215-
216-
internal func formattedLowerCasePackage(file: FileDescriptor) -> String {
217-
let upperCasePackage = self.formattedUpperCasePackage(file: file)
218-
let lowerCaseComponents = upperCasePackage.split(separator: "_").map { component in
205+
internal func typePrefixProperty(file: FileDescriptor) -> String {
206+
let typePrefix = self.typePrefix(forFile: file)
207+
let lowercased = typePrefix.split(separator: "_").map { component in
219208
NamingUtils.toLowerCamelCase(String(component))
220209
}
221-
return lowerCaseComponents.joined(separator: "_")
210+
211+
let joined = lowercased.joined(separator: "_")
212+
if typePrefix.hasSuffix("_"), !joined.hasSuffix("_") {
213+
// Add the trailing "_" if it was dropped.
214+
return joined + "_"
215+
} else {
216+
return joined
217+
}
222218
}
223219
}
224220

Sources/GRPCProtobufCodeGen/ProtobufCodeGenerator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ package import GRPCCodeGen
1818
package import SwiftProtobufPluginLibrary
1919

2020
package struct ProtobufCodeGenerator {
21-
internal var config: SourceGenerator.Config
21+
internal var config: GRPCCodeGen.CodeGenerator.Config
2222

2323
package init(
24-
config: SourceGenerator.Config
24+
config: GRPCCodeGen.CodeGenerator.Config
2525
) {
2626
self.config = config
2727
}
@@ -36,10 +36,10 @@ package struct ProtobufCodeGenerator {
3636
extraModuleImports: extraModuleImports,
3737
accessLevel: self.config.accessLevel
3838
)
39-
let sourceGenerator = SourceGenerator(config: self.config)
39+
let codeGenerator = GRPCCodeGen.CodeGenerator(config: self.config)
4040

4141
let codeGenerationRequest = try parser.parse(descriptor: fileDescriptor)
42-
let sourceFile = try sourceGenerator.generate(codeGenerationRequest)
42+
let sourceFile = try codeGenerator.generate(codeGenerationRequest)
4343
return sourceFile.contents
4444
}
4545
}

Sources/protoc-gen-grpc-swift/GenerateGRPC.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import Foundation
2626
#endif
2727

2828
@main
29-
final class GenerateGRPC: CodeGenerator {
29+
final class GenerateGRPC: SwiftProtobufPluginLibrary.CodeGenerator {
3030
var version: String? {
3131
Version.versionString
3232
}
@@ -96,7 +96,7 @@ final class GenerateGRPC: CodeGenerator {
9696
fileNamingOption: options.fileNaming
9797
)
9898

99-
let config = SourceGenerator.Config(options: options)
99+
let config = CodeGenerator.Config(options: options)
100100
let fileGenerator = ProtobufCodeGenerator(config: config)
101101
let contents = try fileGenerator.generateCode(
102102
fileDescriptor: descriptor,
@@ -182,9 +182,9 @@ private func splitPath(pathname: String) -> (dir: String, base: String, suffix:
182182
return (dir: dir, base: base, suffix: suffix)
183183
}
184184

185-
extension SourceGenerator.Config {
185+
extension GRPCCodeGen.CodeGenerator.Config {
186186
init(options: GeneratorOptions) {
187-
let accessLevel: SourceGenerator.Config.AccessLevel
187+
let accessLevel: GRPCCodeGen.CodeGenerator.Config.AccessLevel
188188
switch options.visibility {
189189
case .internal:
190190
accessLevel = .internal

Tests/GRPCProtobufCodeGenTests/ProtobufCodeGenParserTests.swift

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,7 @@ struct ProtobufCodeGenParserTests {
7878

7979
@Test("Name")
8080
func name() {
81-
#expect(self.service.name.base == "TestService")
82-
}
83-
84-
@Test("Namespace")
85-
func namespace() {
86-
#expect(self.service.namespace.base == "test")
81+
#expect(self.service.name.identifyingName == "test.TestService")
8782
}
8883

8984
@Suite("Methods")
@@ -114,10 +109,10 @@ struct ProtobufCodeGenParserTests {
114109

115110
@Test("Name")
116111
func name() {
117-
#expect(self.unary.name.base == "Unary")
118-
#expect(self.clientStreaming.name.base == "ClientStreaming")
119-
#expect(self.serverStreaming.name.base == "ServerStreaming")
120-
#expect(self.bidiStreaming.name.base == "BidirectionalStreaming")
112+
#expect(self.unary.name.identifyingName == "Unary")
113+
#expect(self.clientStreaming.name.identifyingName == "ClientStreaming")
114+
#expect(self.serverStreaming.name.identifyingName == "ServerStreaming")
115+
#expect(self.bidiStreaming.name.identifyingName == "BidirectionalStreaming")
121116
}
122117

123118
@Test("Input")
@@ -181,31 +176,29 @@ struct ProtobufCodeGenParserTests {
181176
@Test("Service1")
182177
func service1() throws {
183178
let service = self.codeGen.services[0]
184-
#expect(service.name.base == "FooService1")
185-
#expect(service.namespace.base == "foo")
179+
#expect(service.name.identifyingName == "foo.FooService1")
186180
#expect(service.methods.count == 1)
187181
}
188182

189183
@Test("Service1.Method")
190184
func service1Method() throws {
191185
let method = self.codeGen.services[0].methods[0]
192-
#expect(method.name.base == "Foo")
186+
#expect(method.name.identifyingName == "Foo")
193187
#expect(method.inputType == "Foo_FooInput")
194188
#expect(method.outputType == "Foo_FooOutput")
195189
}
196190

197191
@Test("Service2")
198192
func service2() throws {
199193
let service = self.codeGen.services[1]
200-
#expect(service.name.base == "FooService2")
201-
#expect(service.namespace.base == "foo")
194+
#expect(service.name.identifyingName == "foo.FooService2")
202195
#expect(service.methods.count == 1)
203196
}
204197

205198
@Test("Service2.Method")
206199
func service2Method() throws {
207200
let method = self.codeGen.services[1].methods[0]
208-
#expect(method.name.base == "Foo")
201+
#expect(method.name.identifyingName == "Foo")
209202
#expect(method.inputType == "Foo_FooInput")
210203
#expect(method.outputType == "Foo_FooOutput")
211204
}
@@ -227,12 +220,7 @@ struct ProtobufCodeGenParserTests {
227220

228221
@Test("Service name")
229222
func serviceName() {
230-
#expect(self.service.name.base == "BarService")
231-
}
232-
233-
@Test("Service namespace")
234-
func serviceNamespace() {
235-
#expect(self.service.namespace.base == "")
223+
#expect(self.service.name.identifyingName == "BarService")
236224
}
237225
}
238226

Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ struct ProtobufCodeGeneratorTests {
2525
static let descriptorSetName = "test-service"
2626
static let fileDescriptorName = "test-service"
2727

28-
@Test("Generate", arguments: [SourceGenerator.Config.AccessLevel.internal, .public, .package])
29-
func generate(accessLevel: SourceGenerator.Config.AccessLevel) throws {
28+
@Test("Generate", arguments: [CodeGenerator.Config.AccessLevel.internal])
29+
func generate(accessLevel: GRPCCodeGen.CodeGenerator.Config.AccessLevel) throws {
3030
let generator = ProtobufCodeGenerator(
31-
config: SourceGenerator.Config(
31+
config: CodeGenerator.Config(
3232
accessLevel: accessLevel,
3333
accessLevelOnImports: false,
3434
client: true,
@@ -1072,7 +1072,7 @@ struct ProtobufCodeGeneratorTests {
10721072
@Test("Generate")
10731073
func generate() throws {
10741074
let generator = ProtobufCodeGenerator(
1075-
config: SourceGenerator.Config(
1075+
config: CodeGenerator.Config(
10761076
accessLevel: .public,
10771077
accessLevelOnImports: false,
10781078
client: true,

Tests/GRPCProtobufCodeGenTests/Utilities.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import SwiftProtobufPluginLibrary
2121
import Testing
2222

2323
import struct GRPCCodeGen.CodeGenerationRequest
24-
import struct GRPCCodeGen.SourceGenerator
24+
import struct GRPCCodeGen.CodeGenerator
2525

2626
protocol UsesDescriptorSet {
2727
static var descriptorSetName: String { get }
@@ -71,7 +71,7 @@ private func loadDescriptorSet(
7171
func parseDescriptor(
7272
_ descriptor: FileDescriptor,
7373
extraModuleImports: [String] = [],
74-
accessLevel: SourceGenerator.Config.AccessLevel = .internal
74+
accessLevel: CodeGenerator.Config.AccessLevel = .internal
7575
) throws -> CodeGenerationRequest {
7676
let parser = ProtobufCodeGenParser(
7777
protoFileModuleMappings: .init(),

0 commit comments

Comments
 (0)