1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
// RUN: %target-swift-emit-silgen %s -o /dev/null -verify
class C {}
struct S {
var c: C
////////////////////////////////////////////////////////////////////////////////
// Implicitly consuming argument. //
////////////////////////////////////////////////////////////////////////////////
@_effects(readnone) @_effects(releasenone) // ok
init(readnone_releasenone c: C) { self.c = c }
@_effects(releasenone) @_effects(readnone) // ok
init(releasenone_readnone c: C) { self.c = c }
@_effects(readonly) @_effects(releasenone) // ok
init(readonly_releasenone c: C) { self.c = c }
@_effects(releasenone) @_effects(readonly) // ok
init(releasenone_readonly c: C) { self.c = c }
@_effects(releasenone) // ok
init(releasenone c: C) { self.c = c }
////////////////////////////////////////////////////////////////////////////////
// Explicitly consuming argument. //
////////////////////////////////////////////////////////////////////////////////
@_effects(readnone) @_effects(releasenone) // ok
mutating func readnone_releasenoneConsumeParam(_ c: consuming C) {
self.c = c
}
@_effects(releasenone) @_effects(readnone) // ok
mutating func releasenone_readnoneConsumeParam(_ c: consuming C) {
self.c = c
}
@_effects(readonly) @_effects(releasenone) // ok
mutating func reasonly_releasenoneConsumeParam(_ c: consuming C) {
self.c = c
}
@_effects(releasenone) @_effects(readonly) // ok
mutating func releasenone_reasonlyConsumeParam(_ c: consuming C) {
self.c = c
}
@_effects(releasenone) // ok
mutating func releasenoneConsumeParam(_ c: consuming C) {
self.c = c
}
////////////////////////////////////////////////////////////////////////////////
// Explicitly consuming self. //
////////////////////////////////////////////////////////////////////////////////
@_effects(readnone) @_effects(releasenone) // ok
__consuming func readnone_releasenoneConsumeSelf() {}
@_effects(releasenone) @_effects(readnone) // ok
__consuming func readnone_readnoneConsumeSelf() {}
@_effects(readonly) @_effects(releasenone) // ok
__consuming func readonly_releasenoneConsumeSelf() {}
@_effects(releasenone) @_effects(readonly) // ok
__consuming func releasenone_readonlyConsumeSelf() {}
@_effects(releasenone) // ok
__consuming func releasenoneConsumeSelf() {}
}
|