Reactivecocoa: Xcode 7.3 beta 5 неправильно компилирует `SignalProducerType.combineLatestWith` на ARM64

Созданный на 4 мар. 2016  ·  13Комментарии  ·  Источник: ReactiveCocoa/ReactiveCocoa

Ненавижу доставлять вам неудобства, но у нас есть ошибка в бета-версиях 7.3, из-за которой мы неправильно скомпилируем каррирование Signal.combineLatestWith здесь:

    public func combineLatestWith<U>(otherProducer: SignalProducer<U, Error>) -> SignalProducer<(Value, U), Error> {
        return liftRight(Signal.combineLatestWith)(otherProducer)
    }

Я ищу решение прямо сейчас. Если мы не исправим это вовремя для финальной версии 7.3, я рекомендую вручную вставить здесь комбинатор liftRight в качестве обходного пути,

    public func combineLatestWith<U>(otherProducer: SignalProducer<U, Error>) -> SignalProducer<(Value, U), Error> {    
        return SignalProducer { observer, outerDisposable in
            self.startWithSignal { signal, disposable in
                outerDisposable.addDisposable(disposable)

                otherProducer.startWithSignal { otherSignal, otherDisposable in
                    outerDisposable.addDisposable(otherDisposable)

                    signal.combineLatestWith(otherSignal).observe(observer)
                }
            }
        }
    }

Ошибка с нашей стороны - это rdar: // проблема / 24960559 , для справки.

Все 13 Комментарий

Я даже не могу выразить, насколько я рад видеть, как участник Swift открывает проблему, не только объясняющую ошибку, но и предлагающую обходной путь: heart_eyes:

Если это не исправлено GM, мы можем временно внести это изменение в # 2684, так как нам, вероятно, все равно придется изменить другие вещи для Swift 2.2 .

Большое спасибо @jckarter : smile:

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

Да! Спасибо!!! : heart_eyes:

@jckarter Есть ли проблема на bugs.swift.org, за которой мы тоже можем следить?

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

@calebd сообщает, что это все еще проблема с финальной

Заканчиваю закачку. Я сделаю ветку с изменениями Swift 2.2 (возможно, включая этот _надежно_ временный обходной путь) и попытаюсь выпустить релиз с помощью EOD сегодня.

Подтверждено, это вылетает при запуске тестов с -O . Я добавил обходной путь в # 2760: 6f63eb6569772a90f0b4358acb33b93a4f8105b2.

Исправлено # 2760.

Давайте оставим это открытым, чтобы не забыть избавиться от обходного пути, как только это будет исправлено в Swift :)

@jckarter Есть идеи, будет ли это исправлено в вехе 2.2.x ?

Мы хотя бы попробуем. Мы изучаем это.

Похоже, у @eeckstein есть исправление: https://github.com/apple/swift/pull/1916

Кажется, что это исправлено https://github.com/apple/swift/pull/1937, а Xcode 7.3.1 / Swift 2.2.1 содержит исправление.

https://github.com/apple/swift/releases/tag/swift-2.2.1-RELEASE

Для Swift 3 устранены обходные пути!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги