mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
39 lines
1.3 KiB
Swift
39 lines
1.3 KiB
Swift
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -typecheck -verify
|
|
|
|
// REQUIRES: objc_interop
|
|
|
|
import Foundation
|
|
|
|
class NotCopyable {}
|
|
class CopyableClass : NSCopying {
|
|
@objc(copyWithZone:) func copy(with zone: NSZone?) -> Any {
|
|
return self
|
|
}
|
|
}
|
|
|
|
@NSCopying // expected-error {{@NSCopying may only be used on 'var' declarations}}
|
|
func copyFunction() {}
|
|
|
|
@NSCopying // expected-error {{@NSCopying may only be used on 'var' declarations}}
|
|
struct CopyingStruct {
|
|
@NSCopying var x : CopyableClass // expected-error {{'@NSCopying' may only be used on properties in classes}}
|
|
}
|
|
|
|
class CopyingClassTest {
|
|
// These are ok.
|
|
@NSCopying var p1 : CopyableClass
|
|
@NSCopying var p1o : CopyableClass?
|
|
@NSCopying var p1uo : CopyableClass!
|
|
@NSCopying weak var p1w : CopyableClass?
|
|
|
|
// These are not.
|
|
@NSCopying let invalidLet : CopyableClass // expected-error {{'@NSCopying' requires property to be mutable}}
|
|
@NSCopying var computed : CopyableClass { get {} set {} } // expected-error {{'@NSCopying' is only valid on stored properties}}
|
|
|
|
@NSCopying var notClass : Int // expected-error {{'@NSCopying' is only valid with types that conform to the NSCopying protocol}}
|
|
@NSCopying var x : NotCopyable // expected-error {{'@NSCopying' is only valid with types that conform to the NSCopying protocol}}
|
|
|
|
init() {}
|
|
|
|
}
|