Какой эффективный уровень доступа будет иметь свойство, объявленное в общедоступном протоколе и реализованное как общедоступное в расширении внутреннего протокола, которое унаследовано от этого общедоступного протокола?
У меня есть это упрощенное объявление в структуре:
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 и подсветка синтаксиса работает, как и ожидалось, но при завершении кода нетвсе:
Это ошибка, связанная с Xcode, или я что-то не так делаю?Если это ошибка, то чем именно она вызвана: это Swift, позволяющий общедоступному классу принять внутренний протокол, унаследованный от общедоступного протокола, или это просто застрявшее автозаполнение кода Xcode, пытающееся вычислить публичный интерфейс Object
?
Xcode 10.1 (10B61).