I have a fairly large Vapor 3.0/Swift 4.1 project that compiles and runs fine on Mac OS. On Linux (Ubuntu 16.04), however I get the following error:
swift: /home/buildnode/jenkins/workspace/oss-swift-4.1-package-linux-ubuntu-16_04/swift/lib/Serialization/Deserialization.cpp:5079: auto swift::ModuleFile::finishNormalConformance(swift::NormalProtocolConformance *, uint64_t)::(anonymous class)::operator()() const: Assertion `syntheticSig == nullptr && syntheticEnv == nullptr && "opaque witness shouldn't be generic yet. when this is " "possible, it should use forwarding substitutions"' failed.
...
- While reading from 'App'
- While finishing conformance for type 'ArpAssessment'
- While ... to 'QuestionResponseStore' in module 'DMTDBase'
I looked at the compiler and the comment says the following around the assert that is firing:
// We shouldn't yet need to worry about generic requirements, since
// an imported ObjC method should never be generic.
In the code that it mentions (ArpAssessment, QuestionResponseStore), there is no Objective-C code as my project is entirely Swift and the only C code that I know if in any of the libraries that I use comes from Swift-NIO.
There are quite a few generic methods in the protocol 'QuestionResponseStore' which it seems to be checking for conformance.
I would love to log a bug, but I feel that I need to narrow it down a bit first as this assert() only shows up in the final application and not in the library in which QuestionResponseStore is defined and tested.
Thank you!