// RUN: %target-run-simple-swift | FileCheck %s
// REQUIRES: executable_test

struct Foo {
  var _x : (Int, UnicodeScalar, String)

  var x : (Int, String, UnicodeScalar) {
    get {
      var (a, b, c) = _x
      return (a, c, b)
    }

    mutating
    set {
      var (a, b, c) = newValue
      _x = (a, c, b)
    }
  }

  init(a:Int, b:String, c:UnicodeScalar) {
    _x = (a, c, b)
  }
}

var foo = Foo(a: 1, b: "two", c: "3")

foo.x.0 = 4
foo.x.1 = "five"
foo.x.2 = "6"

// CHECK: 4
// CHECK: five
// CHECK: 6
print(foo.x.0)
print(foo.x.1)
print(foo.x.2)

struct Bar {
  var _foo : Foo

  var foo : Foo {
    get {
      return _foo
    }

    mutating
    set {
      _foo = newValue
    }
  }
}

var bar = Bar(_foo: Foo(a: 1, b: "two", c: "3"))

bar.foo.x.0 = 7
bar.foo.x.1 = "eight"
bar.foo.x.2 = "9"

// CHECK: 7
// CHECK: eight
// CHECK: 9
print(bar.foo.x.0)
print(bar.foo.x.1)
print(bar.foo.x.2)

(foo, bar.foo) = (bar.foo, foo)

// CHECK: 4
// CHECK: five
// CHECK: 6
print(bar.foo.x.0)
print(bar.foo.x.1)
print(bar.foo.x.2)

(foo.x, bar.foo.x) = (bar.foo.x, foo.x)

// CHECK: 7
// CHECK: eight
// CHECK: 9
print(bar.foo.x.0)
print(bar.foo.x.1)
print(bar.foo.x.2)

(foo.x.0, bar.foo.x.0) = (bar.foo.x.0, foo.x.0)

// CHECK: 4
// CHECK: eight
// CHECK: 9
print(bar.foo.x.0)
print(bar.foo.x.1)
print(bar.foo.x.2)

