Ошибка: не удалось выразить IRGen, без дополнительной ошибки

Я не могу распечатать отладочную информацию в своих тестах пользовательского интерфейса. Конфигурация: Xcode 10 и SWIFT 4.2.

Когда я пытаюсь распечатать что-то на консоли, я вижу только ошибку:

"error: Couldn't IRGen expression, no additional error" 

У меня не было проблем в более ранних версиях Xcode (8,9 и т.д.), Только в Xcode 10. Я ничего не могу напечатать, когда поставил po XCUIApplication() останова и попытался напечатать например app po XCUIApplication() или что-то в этом роде.

В более ранней версии Xcode, когда я пишу в консоли:

"po XCUIApplication.debugDescription()" Я видел структуру моего приложения.

Мы обнаружили, что проблема возникает, когда внешняя структура добавляется в Target Tests Target. Мы создали пример проекта с включенной RxSwift.framework, который можно использовать для воспроизведения нашей проблемы:

https://drive.google.com/file/d/1BlByFVNaOdDqT4ED9Jwyi1kJ99PTRQen/view?usp=sharing

С уважением.

Ответ 1

У меня была такая же проблема с Карфаген. Однако, глядя более внимательно на консоль, я заметил, что Карфаген вместо того, чтобы строить RxSwift, просто загрузил предварительно созданные двоичные файлы,

*** Downloading RxSwift.framework binary at "Zürich"

которые, в свою очередь, способствуют ошибке IRGen. Таким образом, заставляя Карфаген создавать фреймворк вместо загрузки бинарных файлов.

carthage update --platform iOS --no-use-binaries

Ответ 2

Быстрый формат отладки - это двоичный дамп внутренних объектов Swift, поэтому вы должны скомпилировать свои двоичные файлы с компилятором, который поставляется с отладчиком, который вы используете, или что-то плохое.

Я могу воспроизвести поведение, которое вы видели, используя Xcode 10.0 и проект, который вы предоставили. Но затем я получил источники RxSwift из github и перестроил их с помощью компилятора Xcode 10.0 и заменил ваш RxSwift.framework тем, что я создал локально, и повторил тест, а выражение, которое вы привязали к точке останова, работало правильно. Вы видите, что это также работает на вас?

Отладчик должен был дать лучшее сообщение об ошибке, если вы хотите записать ошибку с репортером быстрой ошибки (http://bugs.swift.org), мы можем посмотреть на улучшение сообщения об ошибке.

Ответ 3

У меня была такая же проблема с Carthage - RxSwift.

Удаление файлов из

Карфаген/Сложение/...

Карфаген/Кассовые/

И вызов обновления Carthage в терминале разрешил мою проблему.

Обновить:

Мы заметили, что эта проблема возникает только при обновлении библиотеки RxSwift до версии 4.3 и выше. Настройка версии 4.2.x работает нормально.

Ответ 4

Проверьте, правильно ли подключены рамки. В моем случае замена фреймворка на POD решила эту проблему.