Ça marche :
// Conformance to protocol correctly synthesized by compiler
struct MyStruct: Equatable {
}
Ce n'est pas le cas :
struct MyStruct {
}
// Doesn't work, even though the extension is in the same file
extension MyStruct: Equatable {
}
L'erreur est très claire :
L'implémentation de 'Equatable' ne peut pas être automatiquement synthétisée dans une extension.
Ma préoccupation est que selon la proposition de Swift SE-0185 cela devrait être autorisé :
SE-0185 : Synthèse
Equatable
yHashable
conformitéLes utilisateurs doivent opter pour la synthèse automatique en déclarant leur type en tant que
Equatable
oHashable
sans mettre en œuvre aucune de leurs exigences. Cette conformité doit faire partie de la déclaration de type originale. ou dans une extension dans le même fichier (pour s'assurer que les membres privés et fileprivate sont accessibles depuis l'extension).
Il est dit que cela a été implémenté dans Swift 4.1 ( pomme/swift#9619 ).
Cependant, lorsque j'essaie de compiler, j'obtiens l'erreur indiquée précédemment. J'utilise Ubuntu 16.04, il échoue avec les deux versions de swift que j'ai :
Swift version 4.1-dev (LLVM 260a172ffb, Clang cd84be6c42, Swift 05b1b2be7c)
Swift version 4.2-dev (LLVM d30879863e, Clang 041fd44ebe, Swift b08fb12358)
Est-ce que j'ai manqué quelque chose ?