Отсутствие автозаполнения объекта, соответствующего внутреннему протоколу, унаследованному от открытого протокола - PullRequest
0 голосов
/ 12 ноября 2018

Какой эффективный уровень доступа будет иметь свойство, объявленное в общедоступном протоколе и реализованное как общедоступное в расширении внутреннего протокола, которое унаследовано от этого общедоступного протокола?

У меня есть это упрощенное объявление в структуре:

public protocol PublicProtocol: AnyObject {
    var visible: Int { get }
    func test()
}

protocol InternalProtocol: PublicProtocol {
    var invisible: Int { get }
}

extension InternalProtocol {
    public var visible: Int { return 4 }
    var invisible: Int { return 8 }

    public func test() {
        print("visible: \(self.visible), invisible: \(self.invisible)")
    }
}

public class Object: InternalProtocol {
    public init () {}
}

После импорта этой инфраструктуры в основной модуль, следующий код компилируется и работает очень хорошо:

let o = Object()
o.test() // prints "visible: 4, invisible: 8"

Компиляция Xcode и подсветка синтаксиса работает, как и ожидалось, но при завершении кода нетвсе:

Strange, isn't it?

Это ошибка, связанная с Xcode, или я что-то не так делаю?Если это ошибка, то чем именно она вызвана: это Swift, позволяющий общедоступному классу принять внутренний протокол, унаследованный от общедоступного протокола, или это просто застрявшее автозаполнение кода Xcode, пытающееся вычислить публичный интерфейс Object?

Xcode 10.1 (10B61).

...