TL; DR
Я нашел ошибку в компиляторе Swift с вложенными перечислениями и соответствием протокола. Прокрутите вниз до Edit 3
.
Оригинальный пост:
Я действительно расстроен ... Xcode 10 просто сломался на днях. Не уверен, что вызвало это. Я работал 10.14.0 и Xcode 10.0, и это работало до вчерашнего дня. Затем внезапно вентилятор кулера на моем Macbook Pro (2016 г., полностью работающий на пределе) начал сходить с ума, не останавливаясь, и я увидел экстремальную загрузку процессора в Activity Monitor .
Я попытался перезапустить XCode, и компьютер не помог. Поэтому я подумал, что не мешало бы установить Mojave 10.14.1. Это не помогло. Потом скачал Xcode 10.1, не помогло.
Я пытался удалить производные данные, перезапустить Xcode, многократно перезагружать Macbook, ничего не помогает. Мой проект XCode (это (с открытым исходным кодом и довольно маленький) [https://github.com/OpenZesame/Zupreme]), использующий Карфаген. Он зависает при сборке, задача 221 из 256.
В Activity Monitor Я вижу множество процессов с именем swift , о которых я не помню ранее.
Кто-нибудь еще испытывал эти проблемы? Я понимаю, что на самом деле я не даю вам ничего, чтобы продолжить здесь, так как я почти уверен, что случайное начало появляться в Mojave 10.14.0 и Xcode 10.0, который работает уже довольно давно ...
Прямо сейчас я загружаю файл Xcode_10.1.xip
с портала разработчика, чтобы выполнить чистую установку. Я также пытаюсь удалить все проекты, созданные с помощью Carthage, из папки Carthage/Build/
и построить их заново. Я сообщу результаты немного позже.
Редактировать 1:
Чтобы дать больше подробностей, я обнаружил, что это Compile Sources
фаза сборки, которая никогда не заканчивается.
Кроме того, удаление и перестройка моих зависимостей в Карфагене не помогли. Все еще жду, когда мой Mac распакует Xcode_10.1.xip
, скачанный с портала разработчика. Я сообщу, когда попробую эту чистую установку.
Редактировать 2:
Я работал над веткой функций, когда у меня была эта проблема. Все мои изменения компилировались во время моей разработки. Я не получил никаких ошибок компиляции. Теперь я попытался вернуться в свою ветку develop
, и вуаля, она снова работает. Таким образом, быстрый компилятор никогда не заканчивал ни успехом, ни неудачей. Я открыл PR, содержащий изменения, которые я сделал в моей базе кода, и буду искать их, чтобы увидеть, что приводит к сбою компилятора swift. PR является публичным и может быть найден здесь, если кому-то интересно
Редактировать 3:
Я нашел ошибку, это действительно ошибка с быстрым компилятором, как это предлагается в комментариях. Так что это была красная сельдь, она не имела ничего общего с Xcode 10, я смог воспроизвести ту же ошибку в Xcode 9.4.1.
Несколько строк кода ниже приводят к тому, что компилятор swift никогда не завершает работу, даже с ошибкой компиляции:
protocol EmptyProtocol {}
class AbstractFoobar<Foo> {}
// This kills the swift compiler
final class SomeFoobar: AbstractFoobar<SomeFoobar.Foo> {
enum Foo: EmptyProtocol {}
}
Пока что я решил это, переместив соответствие в EmptyProtocol
в расширение, которое решает ошибку!
// But this works, moving the protocol conformance out to an extension
final class SomeFoobar2: AbstractFoobar<SomeFoobar2.Foo> {
enum Foo {}
}
extension SomeFoobar2.Foo: EmptyProtocol {}
Отслеживайте статус ошибки здесь: https://bugs.swift.org/browse/SR-9160