Use ValueDecl::isDynamic() instead of getAttrs().hasAttribute<DynamicAttr>()

This commit is contained in:
Slava Pestov
2017-03-29 00:14:45 -07:00
parent 96db387ad3
commit 53759f7126
9 changed files with 35 additions and 36 deletions

View File

@@ -3790,8 +3790,7 @@ bool AbstractStorageDecl::requiresForeignGetterAndSetter() const {
return true;
// Otherwise, we only dispatch by @objc if the declaration is dynamic or
// NSManaged.
return getAttrs().hasAttribute<DynamicAttr>() ||
getAttrs().hasAttribute<NSManagedAttr>();
return isDynamic() || getAttrs().hasAttribute<NSManagedAttr>();
}

View File

@@ -54,7 +54,7 @@ swift::getMethodDispatch(AbstractFunctionDecl *method) {
if (fd->isAccessor() && fd->getAccessorStorageDecl()->hasClangNode())
return MethodDispatch::Class;
}
if (method->getAttrs().hasAttribute<DynamicAttr>())
if (method->isDynamic())
return MethodDispatch::Class;
}
@@ -96,20 +96,20 @@ bool swift::requiresForeignEntryPoint(ValueDecl *vd) {
if (fd->isGetterOrSetter())
return requiresForeignEntryPoint(fd->getAccessorStorageDecl());
return fd->getAttrs().hasAttribute<DynamicAttr>();
return fd->isDynamic();
}
if (auto *cd = dyn_cast<ConstructorDecl>(vd)) {
if (cd->hasClangNode())
return true;
return cd->getAttrs().hasAttribute<DynamicAttr>();
return cd->isDynamic();
}
if (auto *asd = dyn_cast<AbstractStorageDecl>(vd))
return asd->requiresForeignGetterAndSetter();
return vd->getAttrs().hasAttribute<DynamicAttr>();
return vd->isDynamic();
}
/// TODO: We should consult the cached LoweredLocalCaptures the SIL

View File

@@ -136,7 +136,7 @@ SILGenFunction::emitSiblingMethodRef(SILLocation loc,
// If the method is dynamic, access it through runtime-hookable virtual
// dispatch (viz. objc_msgSend for now).
if (methodConstant.hasDecl()
&& methodConstant.getDecl()->getAttrs().hasAttribute<DynamicAttr>())
&& methodConstant.getDecl()->isDynamic())
methodValue = emitDynamicMethodRef(loc, methodConstant,
SGM.Types.getConstantInfo(methodConstant));
else

View File

@@ -720,7 +720,7 @@ namespace {
return false;
// If the declaration is dynamic, there's no materializeForSet.
if (decl->getAttrs().hasAttribute<DynamicAttr>())
if (decl->isDynamic())
return false;
// If the declaration was imported from C, we won't gain anything

View File

@@ -3164,7 +3164,7 @@ getWitnessDispatchKind(Type selfType, SILDeclRef witness, bool isFree) {
auto *decl = witness.getDecl();
// If the witness is dynamic, go through dynamic dispatch.
if (decl->getAttrs().hasAttribute<DynamicAttr>())
if (decl->isDynamic())
return WitnessDispatchKind::Dynamic;
bool isFinal = (decl->isFinal() || C->isFinal());

View File

@@ -6016,7 +6016,7 @@ public:
}
void visitDynamicAttr(DynamicAttr *attr) {
if (!Override->getAttrs().hasAttribute<DynamicAttr>())
if (!Override->isDynamic())
// Dynamic is inherited.
Override->getAttrs().add(
new (TC.Context) DynamicAttr(/*implicit*/true));

View File

@@ -2,11 +2,11 @@
@_exported import CoreGraphics
@_exported import Foundation
@_silgen_name("swift_StringToNSString") internal
func _convertStringToNSString(_ string: String) -> NSString
@_silgen_name("swift_StringToNSString")
public func _convertStringToNSString(_ string: String) -> NSString
@_silgen_name("swift_NSStringToString") internal
func _convertNSStringToString(_ nsstring: NSString?) -> String
@_silgen_name("swift_NSStringToString")
public func _convertNSStringToString(_ nsstring: NSString?) -> String
public func == (lhs: NSObject, rhs: NSObject) -> Bool {
return lhs.isEqual(rhs)
@@ -15,33 +15,33 @@ public func == (lhs: NSObject, rhs: NSObject) -> Bool {
public let NSUTF8StringEncoding: UInt = 8
// NSArray bridging entry points
func _convertNSArrayToArray<T>(_ nsarr: NSArray?) -> [T] {
public func _convertNSArrayToArray<T>(_ nsarr: NSArray?) -> [T] {
return [T]()
}
func _convertArrayToNSArray<T>(_ arr: [T]) -> NSArray {
public func _convertArrayToNSArray<T>(_ arr: [T]) -> NSArray {
return NSArray()
}
// NSDictionary bridging entry points
internal func _convertDictionaryToNSDictionary<Key, Value>(
public func _convertDictionaryToNSDictionary<Key, Value>(
_ d: Dictionary<Key, Value>
) -> NSDictionary {
return NSDictionary()
}
internal func _convertNSDictionaryToDictionary<K: NSObject, V: AnyObject>(
public func _convertNSDictionaryToDictionary<K: NSObject, V: AnyObject>(
_ d: NSDictionary?
) -> Dictionary<K, V> {
return Dictionary<K, V>()
}
// NSSet bridging entry points
internal func _convertSetToNSSet<T : Hashable>(_ s: Set<T>) -> NSSet {
public func _convertSetToNSSet<T>(_ s: Set<T>) -> NSSet {
return NSSet()
}
internal func _convertNSSetToSet<T : Hashable>(_ s: NSSet?) -> Set<T> {
public func _convertNSSetToSet<T>(_ s: NSSet?) -> Set<T> {
return Set<T>()
}
@@ -207,7 +207,7 @@ extension NSError : Error {
}
@_silgen_name("swift_convertNSErrorToError")
func _convertNSErrorToError(_ string: NSError?) -> Error
public func _convertNSErrorToError(_ string: NSError?) -> Error
@_silgen_name("swift_convertErrorToNSError")
func _convertErrorToNSError(_ string: Error) -> NSError
public func _convertErrorToNSError(_ string: Error) -> NSError

View File

@@ -2,11 +2,11 @@
@_exported import CoreGraphics
@_exported import Foundation
@_silgen_name("swift_StringToNSString") internal
func _convertStringToNSString(_ string: String) -> NSString
@_silgen_name("swift_StringToNSString")
public func _convertStringToNSString(_ string: String) -> NSString
@_silgen_name("swift_NSStringToString") internal
func _convertNSStringToString(_ nsstring: NSString?) -> String
@_silgen_name("swift_NSStringToString")
public func _convertNSStringToString(_ nsstring: NSString?) -> String
public func == (lhs: NSObject, rhs: NSObject) -> Bool {
return lhs.isEqual(rhs)
@@ -15,33 +15,33 @@ public func == (lhs: NSObject, rhs: NSObject) -> Bool {
public let NSUTF8StringEncoding: UInt = 8
// NSArray bridging entry points
func _convertNSArrayToArray<T>(_ nsarr: NSArray?) -> [T] {
public func _convertNSArrayToArray<T>(_ nsarr: NSArray?) -> [T] {
return [T]()
}
func _convertArrayToNSArray<T>(_ arr: [T]) -> NSArray {
public func _convertArrayToNSArray<T>(_ arr: [T]) -> NSArray {
return NSArray()
}
// NSDictionary bridging entry points
internal func _convertDictionaryToNSDictionary<Key, Value>(
public func _convertDictionaryToNSDictionary<Key, Value>(
_ d: Dictionary<Key, Value>
) -> NSDictionary {
return NSDictionary()
}
internal func _convertNSDictionaryToDictionary<K: NSObject, V: AnyObject>(
public func _convertNSDictionaryToDictionary<K: NSObject, V: AnyObject>(
_ d: NSDictionary?
) -> Dictionary<K, V> {
return Dictionary<K, V>()
}
// NSSet bridging entry points
internal func _convertSetToNSSet<T>(_ s: Set<T>) -> NSSet {
public func _convertSetToNSSet<T>(_ s: Set<T>) -> NSSet {
return NSSet()
}
internal func _convertNSSetToSet<T>(_ s: NSSet?) -> Set<T> {
public func _convertNSSetToSet<T>(_ s: NSSet?) -> Set<T> {
return Set<T>()
}
@@ -272,10 +272,10 @@ extension NSArray {
}
@_silgen_name("swift_convertNSErrorToError")
func _convertNSErrorToError(_ string: NSError?) -> Error
public func _convertNSErrorToError(_ string: NSError?) -> Error
@_silgen_name("swift_convertErrorToNSError")
func _convertErrorToNSError(_ string: Error) -> NSError
public func _convertErrorToNSError(_ string: Error) -> NSError
/// An internal protocol to represent Swift error enums that map to standard
/// Cocoa NSError domains.

View File

@@ -32,11 +32,11 @@ func _convertNSDictionaryToDictionary<K: NSObject, V: AnyObject>(
}
// NSSet bridging entry points
func _convertSetToNSSet<T: Hashable>(s: Set<T>) -> NSSet {
func _convertSetToNSSet<T>(s: Set<T>) -> NSSet {
return NSSet()
}
func _convertNSSetToSet<T: NSObject>(s: NSSet?) -> Set<T> {
func _convertNSSetToSet<T>(s: NSSet?) -> Set<T> {
return Set<T>()
}