diff --git a/Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift b/Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift index c4ca5b0..e0a0667 100644 --- a/Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift +++ b/Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift @@ -92,24 +92,20 @@ package struct ProtobufCodeGenParser { } extension ProtobufCodeGenParser { - fileprivate func codeDependencies( - file: FileDescriptor - ) -> [Dependency] { + fileprivate func codeDependencies(file: FileDescriptor) -> [Dependency] { var codeDependencies: [Dependency] = [ Dependency(module: "GRPCProtobuf", accessLevel: .internal) ] - // If any services in the file depend on well-known Protobuf types then also import - // SwiftProtobuf. Importing SwiftProtobuf unconditionally results in warnings in the generated - // code if access-levels are used on imports and no well-known types are used. - let usesAnyWellKnownTypesInServices = file.services.contains { service in - service.methods.contains { method in - let inputIsWellKnown = method.inputType.wellKnownType != nil - let outputIsWellKnown = method.outputType.wellKnownType != nil - return inputIsWellKnown || outputIsWellKnown - } + // If there's a dependency on a bundled proto then add the SwiftProtobuf import. + // + // Importing SwiftProtobuf unconditionally results in warnings in the generated + // code if access-levels are used on imports and no bundled protos are used. + let dependsOnBundledProto = file.dependencies.contains { descriptor in + SwiftProtobufInfo.isBundledProto(file: descriptor) } - if usesAnyWellKnownTypesInServices { + + if dependsOnBundledProto { codeDependencies.append(Dependency(module: "SwiftProtobuf", accessLevel: self.accessLevel)) }