class ObjCBase {
var foo: Int { return 1 }
}
@objc class ObjCClass : ObjCBase {
override var foo: Int {
return 42
}
@objc var bar = 12, baz = 13
}
class Derived : ObjCBase {
@available(*, unavailable)
override var quux: Int {
@inlinable get { return 0 }
}
subscript(idx: Int) -> Int {
@available(*, unavailable)
get { return 0 }
@available(*, unavailable)
@inlineable
set { }
}
}
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=4:1 -end-pos=9:2 -source-filename %s | %FileCheck %s -check-prefix=CHECK1
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=5:3 -end-pos=7:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK2
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=5:25 -end-pos=7:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK3
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=8:3 -end-pos=8:31 -source-filename %s | %FileCheck %s -check-prefix=CHECK4
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=13:5 -end-pos=13:32 -source-filename %s | %FileCheck %s -check-prefix=CHECK5
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=13:16 -end-pos=13:32 -source-filename %s | %FileCheck %s -check-prefix=CHECK6
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=12:26 -end-pos=14:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK7
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=17:5 -end-pos=18:21 -source-filename %s | %FileCheck %s -check-prefix=CHECK8
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=20:5 -end-pos=22:12 -source-filename %s | %FileCheck %s -check-prefix=CHECK9
// RUN: %target-swift-ide-test -enable-objc-interop -disable-objc-attr-requires-foundation-module -range -pos=21:5 -end-pos=22:12 -source-filename %s | %FileCheck %s -check-prefix=CHECK10
// CHECK1: SingleDecl
// CHECK1-NEXT: @objc class ObjCClass : ObjCBase {
// CHECK1-NEXT: override var foo: Int {
// CHECK1-NEXT: return 42
// CHECK1-NEXT: }
// CHECK1-NEXT: @objc var bar = 12, baz = 13
// CHECK1-NEXT: }
// CHECK1-NEXT: swift_ide_test.(file)
// CHECK1-NEXT: ObjCClassfalse
// CHECK1-NEXT: foofalse
// CHECK1-NEXT: _false
// CHECK1-NEXT: barfalse
// CHECK1-NEXT: bazfalse
// CHECK1-NEXT: 1
// CHECK1-NEXT:
// CHECK2: SingleDecl
// CHECK2-NEXT: override var foo: Int {
// CHECK2-NEXT: return 42
// CHECK2-NEXT: }
// CHECK2-NEXT: swift_ide_test.(file).ObjCClass
// CHECK2-NEXT: foofalse
// CHECK2-NEXT: 1
// CHECK2-NEXT:
// CHECK3: SingleDecl
// CHECK3-NEXT: {
// CHECK3-NEXT: return 42
// CHECK3-NEXT: }
// CHECK3-NEXT: swift_ide_test.(file).ObjCClass
// CHECK3-NEXT: _false
// CHECK3-NEXT: 1
// CHECK3-NEXT:
// CHECK4: SingleDecl
// CHECK4-NEXT: @objc var bar = 12, baz = 13
// CHECK4-NEXT: swift_ide_test.(file).ObjCClass
// CHECK4-NEXT: barfalse
// CHECK4-NEXT: bazfalse
// CHECK4-NEXT: 1
// CHECK4-NEXT:
// CHECK5: SingleDecl
// CHECK5-NEXT: @inlinable get { return 0 }
// CHECK5-NEXT: swift_ide_test.(file).Derived
// CHECK5-NEXT: _false
// CHECK5-NEXT: 1
// CHECK5-NEXT:
// CHECK6: Invalid
// CHECK6-NEXT: get { return 0 }
// CHECK6-NEXT: 0
// CHECK6-NEXT:
// CHECK7: Invalid
// CHECK7-NEXT: {
// CHECK7-NEXT: @inlinable get { return 0 }
// CHECK7-NEXT: }
// CHECK7-NEXT: 0
// CHECK7-NEXT:
// CHECK8: SingleDecl
// CHECK8-NEXT: @available(*, unavailable)
// CHECK8-NEXT: get { return 0 }
// CHECK8-NEXT: swift_ide_test.(file).Derived
// CHECK8-NEXT: _false
// CHECK8-NEXT: 1
// CHECK8-NEXT:
// CHECK9: SingleDecl
// CHECK9-NEXT: @available(*, unavailable)
// CHECK9-NEXT: @inlineable
// CHECK9-NEXT: set { }
// CHECK9-NEXT: swift_ide_test.(file).Derived
// CHECK9-NEXT: _false
// CHECK9-NEXT: 1
// CHECK9-NEXT:
// CHECK10: Invalid
// CHECK10-NEXT: @inlineable
// CHECK10-NEXT: set { }
// CHECK10-NEXT: 0
// CHECK10-NEXT: