Very odd tuple restructure of two elements: both get the string value of the first element triggered by just adding a let property

I can reproduce with minimal command line code:

struct Foo {
    let value: Int

    let (aaa, bbb) = ("aaa", "bbb")     // bbb is wrong! it's "aaa" but should be "bbb"

        // uncomment this to make the compiler fail with non-zero exit
//    let (z1, z2, z3) = ("one", 1, Double.pi)


    func tellMe() {
        print(foo.aaa)
        print(foo.bbb)          // output:  aaa


        assert(aaa == "aaa")
        assert(bbb == "bbb", "bbb should be bbb but it's \(bbb)")
    }

}


let foo = Foo(value: 1)


foo.tellMe()




print("Hello")

I'm not sure if incorrect tuple destructure and the compiler non-zero exit are related so I filed two bugs:

FB13224203 compiler non-zero exit

FB13224237 incorrect tuple destructure

Bug report doesn't ask which version of Xcode. I'm on Xcode Version 15.0 (15A240d)

Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1)