«Equatable» не может быть автоматически синтезирован в расширении - PullRequest
0 голосов
/ 19 мая 2018

Это работает:

// Conformance to protocol correctly synthesized by compiler 
struct MyStruct: Equatable { 
}

Это не:

struct MyStruct { 
}
// Doesn't work, even though the extension is in the same file
extension MyStruct: Equatable {
}

Ошибка очень ясна:

реализация 'Equatable' не можетбыть автоматически синтезированными в расширении

Меня беспокоит, что согласно предложению Swift SE-0185 это должно быть разрешено:

SE-0185: Синтезирование Equatable и Hashable соответствия

Пользователи должны включить автоматический синтез, объявив свой тип как Equatable или Hashable без выполнения каких-либо своих требований.Это соответствие должно быть частью первоначального объявления типа или расширения в том же файле (чтобы обеспечить доступ к закрытым и частным элементам из расширения).

Itговорит, что это было реализовано в Swift 4.1 ( apple / swift # 9619 ).

Однако при попытке компиляции я получаю ошибку, показанную ранее.Я использую Ubuntu 16.04, он не работает с этими двумя версиями swift, которые у меня есть:

  • Swift version 4.1-dev (LLVM 260a172ffb, Clang cd84be6c42, Swift 05b1b2be7c)
  • Swift version 4.2-dev (LLVM d30879863e, Clang 041fd44ebe, Swift b08fb12358)

Я что-то упустил?

1 Ответ

0 голосов
/ 06 июня 2018

Хорошие новости

Самые последние разработки.Снимок с 5 июня 2018 года работает как положено:


Плохие новости

Последняя версия -release- 4.1.2 не работает.

...