protocol PureEnumProtocol { func test() } enum PureEnum: PureEnumProtocol { static var v = 1 // Still possible //var v = 1 // Enums must not contain stored properties func test() { //v = 2 // Impossible print("PureTest", PureEnum.v) } // Redundant stub initializer is needed case pure init() { self = .pure } } let pureEnum: PureEnumProtocol = PureEnum() pureEnum.test()