// RUN: %target-swift-ide-test -print-ast-typechecked -source-filename=%s -print-implicit-attrs -disable-objc-attr-requires-foundation-module | FileCheck %s

@objc class Super {
  func baseFoo() {}
}

// CHECK: extension Super {
extension Super {
  // CHECK:  @objc dynamic func foo
  func foo() { }

  // CHECK: @objc dynamic var prop: Super
  var prop: Super {
    // CHECK: @objc dynamic get
    get { return Super() }
    // CHECK: @objc dynamic set
    set { }
  }

  // CHECK: @objc dynamic subscript(sup: Super) -> Super
  subscript(sup: Super) -> Super {
    // CHECK: @objc dynamic get
    get { return sup }
    // CHECK: @objc dynamic set
    set { }
  }
}


@objc class Sub : Super { }

// CHECK: extension Sub
extension Sub {
  // CHECK: @objc override dynamic func foo
  override func foo() { }

  // CHECK: @objc override dynamic var prop: Super
  override var prop: Super {
    // CHECK: @objc override dynamic get
    get { return Super() }
    // CHECK: @objc override dynamic set
    set { }
  }

  // CHECK: @objc override dynamic subscript(sup: Super) -> Super
  override subscript(sup: Super) -> Super {
    // CHECK: @objc override dynamic get
    get { return sup }
    // CHECK: @objc override dynamic set
    set { }
  }

  // CHECK: @objc override dynamic func baseFoo
  override func baseFoo() {
  }
}
