Accessor дает неверное значение только в Swift 1.2 / 2.0 Release build

Я обнаружил очень странную ошибку в моем коде, которая возникает только в сборках Release. Это похоже на ошибку Свифта, но дайте мне знать, что вы думаете.

import Foundation

enum Level : Int {
    case
    Bad     = 0,
    Normal  = 1,
    Good    = 2,
    Superb  = 3
}

struct Attribute : Printable {
    var x : Level = .Normal
    var y : Level = .Normal
    var z : Level = .Normal
    var w : Level = .Normal

    var description : String {
        return "(\(x.rawValue), \(y.rawValue), \(z.rawValue), \(w.rawValue))"
    }

    func toString() -> String {
        return description
    }
}


var AccessorBugTestSingleton : AccessorBugTest!

class AccessorBugTest {

    let index       : Int
    var attributes  : [Attribute] = []
    var todaysAttributes : Attribute {
        get {
            let r = attributes[index]
            println("today: \(r)")
            return r
        }
    }
    var initialText : String = ""
    // selection for key
    var states  : [String:Int] = ["x": 0, "y": 0, "z": 0, "w": 0]
    var descriptions  : [String:Int] = ["a": 0, "b": 0, "c": 0, "d": 0]


    init() {
        index = 10
        for i in 1...31 {
            var att = Attribute(x: .Superb, y: .Superb, z: .Superb, w: .Superb)
            attributes.append(att)
        }

        let attribs = todaysAttributes
        initialText = "\(attribs)"
        println("init: \(attribs), \(self.attributes[index])")
    }

}

Когда создается AccessorBugTest, он должен напечатать

init: (3, 3, 3, 3), (3, 3, 3, 3)

но в сборках Release он печатает,

init: (3, 0, 0, 0), (3, 3, 3, 3)

Если я удалю неиспользуемые свойстваstates а такжеdescriptions, то проблема решена, понятия не имею, почему. Кроме того, если я сделаюx, y, z, w Ints вместо enums, затем снова работает нормально.

Есть идеи о том, что происходит?

Я загрузил программу в:https://github.com/endavid/AccessorBugTest Он содержит контрольный пример, который не будет выполнен, если вы запустите его в конфигурации выпуска (перейдите в «Программа» -> «Схема -> Изменить схему» и измените «Тест на выпуск» вместо «Отладка»).

Я также скачал бета-версию Xcode 7.1, пробовал в Swift 2.0, и проблема все еще существует :(

Ответы на вопрос(1)

Ваш ответ на вопрос