Skip to content

Commit d2e4eec

Browse files
committed
Move the internals of EnumGenerator over to ValueAliasInfo
1 parent 0af94f3 commit d2e4eec

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

Sources/protoc-gen-swift/EnumGenerator.swift

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ class EnumGenerator {
2626
private let generatorOptions: GeneratorOptions
2727
private let namer: SwiftProtobufNamer
2828

29-
/// The values that aren't aliases, as ordered in the .proto.
30-
private let mainEnumValueDescriptors: [EnumValueDescriptor]
29+
/// The aliasInfo for the values.
30+
private let aliasInfo: EnumDescriptor.ValueAliasInfo
3131
/// The values that aren't aliases, sorted by number.
3232
private let mainEnumValueDescriptorsSorted: [EnumValueDescriptor]
3333

@@ -41,11 +41,9 @@ class EnumGenerator {
4141
self.enumDescriptor = descriptor
4242
self.generatorOptions = generatorOptions
4343
self.namer = namer
44+
aliasInfo = EnumDescriptor.ValueAliasInfo(enumDescriptor: descriptor)
4445

45-
mainEnumValueDescriptors = descriptor.values.filter({
46-
return $0.aliasOf == nil
47-
})
48-
mainEnumValueDescriptorsSorted = mainEnumValueDescriptors.sorted(by: {
46+
mainEnumValueDescriptorsSorted = aliasInfo.mainValues.sorted(by: {
4947
return $0.number < $1.number
5048
})
5149

@@ -95,7 +93,7 @@ class EnumGenerator {
9593
"// The compiler won't synthesize support with the \(unrecognizedCaseName) case.",
9694
"\(visibility)static let allCases: [\(swiftFullName)] = [")
9795
p.withIndentation { p in
98-
for v in mainEnumValueDescriptors {
96+
for v in aliasInfo.mainValues {
9997
let dottedName = namer.dottedRelativeName(enumValue: v)
10098
p.print("\(dottedName),")
10199
}
@@ -124,7 +122,7 @@ class EnumGenerator {
124122
p.print()
125123
}
126124
let relativeName = namer.relativeName(enumValue: enumValueDescriptor)
127-
if let aliasOf = enumValueDescriptor.aliasOf {
125+
if let aliasOf = aliasInfo.original(of: enumValueDescriptor) {
128126
let aliasOfName = namer.relativeName(enumValue: aliasOf)
129127
p.print("\(comments)\(visibility)static let \(relativeName) = \(aliasOfName)")
130128
} else {
@@ -145,11 +143,11 @@ class EnumGenerator {
145143
p.print("\(visibility)static let _protobuf_nameMap: \(namer.swiftProtobufModuleName)._NameMap = [")
146144
p.withIndentation { p in
147145
for v in mainEnumValueDescriptorsSorted {
148-
if v.aliases.isEmpty {
149-
p.print("\(v.number): .same(proto: \"\(v.name)\"),")
150-
} else {
151-
let aliasNames = v.aliases.map({ "\"\($0.name)\"" }).joined(separator: ", ")
146+
if let aliases = aliasInfo.aliases(v) {
147+
let aliasNames = aliases.map({ "\"\($0.name)\"" }).joined(separator: ", ")
152148
p.print("\(v.number): .aliased(proto: \"\(v.name)\", aliases: [\(aliasNames)]),")
149+
} else {
150+
p.print("\(v.number): .same(proto: \"\(v.name)\"),")
153151
}
154152
}
155153
}

0 commit comments

Comments
 (0)