0

After updating to Xcode 11.4, I started to get this error

Failed to produce diagnostic for expression please file a bug report

On:

let provider = MoyaProvider<EndPoint>(requestClosure: requestClosure)

I updated Moya but it doesn't look like the issue. Runs fine on previous Xcode versions.

full code:

 let requestClosure: MoyaProvider.RequestClosure = {
            [unowned self] (endpoint: Endpoint, done: @escaping MoyaProvider.RequestResultClosure) in

       guard let request = try? endpoint.urlRequest() else { return }

       self.authenticator.authenticate(request, done: { (request) in
                done(.success(request))
       })
 }
 provider = MoyaProvider<EndPoint>(requestClosure: requestClosure
shim
  • 9,289
  • 12
  • 69
  • 108
Tal Zion
  • 6,308
  • 3
  • 50
  • 73

3 Answers3

1

I found the issue, Xcode 11.4 compile issues are not verbose enough when it comes to optionals and generics.

Moya version and Swift version were not changed.

An issue with generics:

let requestClosure: MoyaProvider<EndPoint>.RequestClosure Had to explicitly define the type in the closure, which makes sense, but was not a requirement pre-Xcode version 11.4

let requestClosure: MoyaProvider<EndPoint>.RequestClosure = {
            [unowned self] (endpoint: Endpoint, done: @escaping MoyaProvider.RequestResultClosure) in

       guard let request = try? endpoint.urlRequest() else { return }

       self.authenticator.authenticate(request, done: { (request) in
          done(.success(request))
      })
}
provider = MoyaProvider<EndPoint>(requestClosure: requestClosure
Tal Zion
  • 6,308
  • 3
  • 50
  • 73
0

For me the I was getting that error because one of my property was of type Error and I was assigning a value of type LocalizedError to it. Changing the property type to LocalizedError fixed the problem.

0

It seems to be an Xcode bug for some cases at least. I renamed a protocol and then renamed it back and the issue was gone.

Abdurrahman Mubeen Ali
  • 1,331
  • 1
  • 13
  • 19