forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccessibility_warnings.swift
145 lines (113 loc) · 6.55 KB
/
accessibility_warnings.swift
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// RUN: %target-typecheck-verify-swift
// RUN: %target-swift-frontend -emit-silgen %s | %FileCheck %s
// This file tests that the AST produced after fixing accessibility warnings
// is valid according to SILGen and the verifiers.
public struct PublicStruct {
// CHECK-DAG: sil{{( \[.+\])*}} @_TFV22accessibility_warnings12PublicStructg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings12PublicStructCfT_S0_
}
internal struct InternalStruct {
public var publicVar = 0
public private(set) var publicVarPrivateSet = 0
public public(set) var publicVarPublicSet = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg16publicVarGetOnlySi
public var publicVarGetOnly: Int { return 0 }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg15publicVarGetSetSi
public var publicVarGetSet: Int { get { return 0 } set {} }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructCfT_S0_
}
private struct PrivateStruct {
public var publicVar = 0
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructCfT_S0_
}
extension PublicStruct {
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
extension InternalStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
extension PrivateStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
public extension PublicStruct {
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStruct15extMemberPublicfT_T_
public func extMemberPublic() {}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0213extImplPublicfT_T_
private func extImplPublic() {}
}
internal extension PublicStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings12PublicStruct17extMemberInternalfT_T_
public func extMemberInternal() {} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0215extImplInternalfT_T_
private func extImplInternal() {}
}
private extension PublicStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0216extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0214extImplPrivatefT_T_
private func extImplPrivate() {}
}
internal extension InternalStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStruct17extMemberInternalfT_T_
public func extMemberInternal() {} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0215extImplInternalfT_T_
private func extImplInternal() {}
}
private extension InternalStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0216extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0214extImplPrivatefT_T_
private func extImplPrivate() {}
}
private extension PrivateStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStruct16extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStruct14extImplPrivatefT_T_
private func extImplPrivate() {}
}
public protocol PublicReadOnlyOperations {
var size: Int { get }
subscript (_: Int) -> Int { get }
}
internal struct PrivateSettersForReadOnlyInternal : PublicReadOnlyOperations {
// CHECK-DAG: sil hidden{{( \[.+\])*}} @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternalg4sizeSi
public private(set) var size = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternalg9subscriptFSiSi
// CHECK-DAG: sil private @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternals9subscriptFSiSi
internal private(set) subscript (_: Int) -> Int { // no-warning
get { return 42 }
set {}
}
}
public class PublicClass {
// CHECK-DAG: sil{{( \[.+\])*}} @_TFC22accessibility_warnings11PublicClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings11PublicClasscfT_S0_
}
internal class InternalClass {
// CHECK-DAG: sil hidden{{( \[.+\])*}} @_TFC22accessibility_warnings13InternalClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden [transparent] @_TFC22accessibility_warnings13InternalClassg19publicVarPrivateSetSi
public private(set) var publicVarPrivateSet = 0
public public(set) var publicVarPublicSet = 0
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClassg16publicVarGetOnlySi
public var publicVarGetOnly: Int { return 0 }
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClassg15publicVarGetSetSi
public var publicVarGetSet: Int { get { return 0 } set {} }
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClasscfT_S0_
}
private class PrivateClass {
// CHECK-DAG: sil private{{( \[.+\])*}} @_TFC22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0212PrivateClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil private @_TFC22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0212PrivateClasscfT_S0_
}