@@ -22,9 +22,19 @@ import struct GRPCCodeGen.CodeGenerationRequest
22
22
23
23
/// Parses a ``FileDescriptor`` object into a ``CodeGenerationRequest`` object.
24
24
internal struct ProtobufCodeGenParser {
25
- internal init ( ) { }
26
- internal func parse( input: FileDescriptor ) throws -> CodeGenerationRequest {
27
- var header = input. header
25
+ let input : FileDescriptor
26
+ let namer : SwiftProtobufNamer
27
+
28
+ internal init ( input: FileDescriptor , protoFileModuleMappings: ProtoFileToModuleMappings ) {
29
+ self . input = input
30
+ self . namer = SwiftProtobufNamer (
31
+ currentFile: input,
32
+ protoFileToModuleMappings: protoFileModuleMappings
33
+ )
34
+ }
35
+
36
+ internal func parse( ) throws -> CodeGenerationRequest {
37
+ var header = self . input. header
28
38
// Ensuring there is a blank line after the header.
29
39
if !header. isEmpty && !header. hasSuffix ( " \n \n " ) {
30
40
header. append ( " \n " )
@@ -34,13 +44,13 @@ internal struct ProtobufCodeGenParser {
34
44
// swift-format-ignore-file
35
45
//
36
46
// Generated by the gRPC Swift generator plugin for the protocol buffer compiler.
37
- // Source: \( input. name)
47
+ // Source: \( self . input. name)
38
48
//
39
49
// For information on using the generated types, please see the documentation:
40
50
// https://github.com/grpc/grpc-swift
41
51
42
52
"""
43
- var dependencies = input. dependencies. map {
53
+ var dependencies = self . input. dependencies. map {
44
54
CodeGenerationRequest . Dependency ( module: $0. name)
45
55
}
46
56
dependencies. append ( CodeGenerationRequest . Dependency ( module: " GRPCProtobuf " ) )
@@ -50,12 +60,16 @@ internal struct ProtobufCodeGenParser {
50
60
let lookupDeserializer : ( String ) -> String = { messageType in
51
61
" ProtobufDeserializer< \( messageType) >() "
52
62
}
53
- let services = input. services. map {
54
- CodeGenerationRequest . ServiceDescriptor ( descriptor: $0, package : input. package )
63
+ let services = self . input. services. map {
64
+ CodeGenerationRequest . ServiceDescriptor (
65
+ descriptor: $0,
66
+ package : input. package ,
67
+ protobufNamer: self . namer
68
+ )
55
69
}
56
70
57
71
return CodeGenerationRequest (
58
- fileName: input. name,
72
+ fileName: self . input. name,
59
73
leadingTrivia: header + leadingTrivia,
60
74
dependencies: dependencies,
61
75
services: services,
@@ -66,9 +80,16 @@ internal struct ProtobufCodeGenParser {
66
80
}
67
81
68
82
extension CodeGenerationRequest . ServiceDescriptor {
69
- fileprivate init ( descriptor: ServiceDescriptor , package : String ) {
83
+ fileprivate init (
84
+ descriptor: ServiceDescriptor ,
85
+ package : String ,
86
+ protobufNamer: SwiftProtobufNamer
87
+ ) {
70
88
let methods = descriptor. methods. map {
71
- CodeGenerationRequest . ServiceDescriptor. MethodDescriptor ( descriptor: $0)
89
+ CodeGenerationRequest . ServiceDescriptor. MethodDescriptor (
90
+ descriptor: $0,
91
+ protobufNamer: protobufNamer
92
+ )
72
93
}
73
94
let name = CodeGenerationRequest . Name (
74
95
base: descriptor. name,
@@ -86,7 +107,7 @@ extension CodeGenerationRequest.ServiceDescriptor {
86
107
}
87
108
88
109
extension CodeGenerationRequest . ServiceDescriptor . MethodDescriptor {
89
- fileprivate init ( descriptor: MethodDescriptor ) {
110
+ fileprivate init ( descriptor: MethodDescriptor , protobufNamer : SwiftProtobufNamer ) {
90
111
let name = CodeGenerationRequest . Name (
91
112
base: descriptor. name,
92
113
generatedUpperCase: NamingUtils . toUpperCamelCase ( descriptor. name) ,
@@ -98,8 +119,8 @@ extension CodeGenerationRequest.ServiceDescriptor.MethodDescriptor {
98
119
name: name,
99
120
isInputStreaming: descriptor. clientStreaming,
100
121
isOutputStreaming: descriptor. serverStreaming,
101
- inputType: descriptor. inputType. name ,
102
- outputType: descriptor. outputType. name
122
+ inputType: protobufNamer . fullName ( message : descriptor. inputType) ,
123
+ outputType: protobufNamer . fullName ( message : descriptor. outputType)
103
124
)
104
125
}
105
126
}
0 commit comments