Files
swift-mirror/test/attr/attr_dynamic_infer.swift
Jordan Rose 446a824c53 Don't infer 'dynamic' on accessors in extensions of ObjC classes.
Instead, propagate the decision from the associated storage decl (var
or subscript), using the mechanisms that are already in place.

rdar://problem/29741743
2016-12-20 14:19:53 -08:00

82 lines
1.8 KiB
Swift

// 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() {
}
}
@objc class FinalTests {}
extension FinalTests {
// CHECK: @objc final func foo
final func foo() { }
// CHECK: @objc final var prop: Super
final var prop: Super {
// CHECK: @objc final get
get { return Super() }
// CHECK: @objc final set
set { }
}
// CHECK: @objc final subscript(sup: Super) -> Super
final subscript(sup: Super) -> Super {
// CHECK: @objc final get
get { return sup }
// CHECK: @objc final set
set { }
}
}