You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Sema] Warn when redundant access-level modifier is added in an extension.
This patch adds warning for redundant access-level modifiers
used in an extension. It also refines the diagnostics of
access_control_ext_member_more issues, in case the fixit
could suggest redundant modifiers.
Resolves: SR-8453.
Copy file name to clipboardExpand all lines: test/Compatibility/accessibility.swift
+17-17Lines changed: 17 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -74,18 +74,18 @@ extension PrivateStruct {
74
74
}
75
75
76
76
publicextensionPublicStruct{
77
-
publicfunc extMemberPublic(){}
77
+
publicfunc extMemberPublic(){} // expected-warning {{'public' modifier is redundant for instance method declared in a public extension}} {{3-10=}}
78
78
fileprivatefunc extFuncPublic(){}
79
79
privatefunc extImplPublic(){}
80
80
}
81
81
internalextensionPublicStruct{
82
-
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
82
+
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-10=}}
83
83
fileprivatefunc extFuncInternal(){}
84
84
privatefunc extImplInternal(){}
85
85
}
86
86
fileprivateextensionPublicStruct{
87
-
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-9=fileprivate}}
88
-
fileprivatefunc extFuncFilePrivate(){}
87
+
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-10=}}
88
+
fileprivatefunc extFuncFilePrivate(){} // expected-warning {{'fileprivate' modifier is redundant for instance method declared in a fileprivate extension}} {{3-15=}}
publicextensionInternalStruct{ // expected-error {{extension of internal struct cannot be declared public}} {{1-8=}}
97
-
publicfunc extMemberPublic(){}
97
+
publicfunc extMemberPublic(){} // expected-warning {{'public' modifier is redundant for instance method declared in a public extension}} {{3-10=}}
98
98
fileprivatefunc extFuncPublic(){}
99
99
privatefunc extImplPublic(){}
100
100
}
101
101
internalextensionInternalStruct{
102
-
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
102
+
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-10=}}
103
103
fileprivatefunc extFuncInternal(){}
104
104
privatefunc extImplInternal(){}
105
105
}
106
106
fileprivateextensionInternalStruct{
107
-
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-9=fileprivate}}
108
-
fileprivatefunc extFuncFilePrivate(){}
107
+
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-10=}}
108
+
fileprivatefunc extFuncFilePrivate(){} // expected-warning {{'fileprivate' modifier is redundant for instance method declared in a fileprivate extension}} {{3-15=}}
publicextensionFilePrivateStruct{ // expected-error {{extension of fileprivate struct cannot be declared public}} {{1-8=}}
117
-
publicfunc extMemberPublic(){}
117
+
publicfunc extMemberPublic(){} // expected-warning {{'public' modifier is redundant for instance method declared in a public extension}} {{3-10=}}
118
118
fileprivatefunc extFuncPublic(){}
119
119
privatefunc extImplPublic(){}
120
120
}
121
121
internalextensionFilePrivateStruct{ // expected-error {{extension of fileprivate struct cannot be declared internal}} {{1-10=}}
122
-
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
122
+
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-10=}}
123
123
fileprivatefunc extFuncInternal(){}
124
124
privatefunc extImplInternal(){}
125
125
}
126
126
fileprivateextensionFilePrivateStruct{
127
-
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-9=fileprivate}}
128
-
fileprivatefunc extFuncFilePrivate(){}
127
+
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-10=}}
128
+
fileprivatefunc extFuncFilePrivate(){} // expected-warning {{'fileprivate' modifier is redundant for instance method declared in a fileprivate extension}} {{3-15=}}
publicextensionPrivateStruct{ // expected-error {{extension of private struct cannot be declared public}} {{1-8=}}
137
-
publicfunc extMemberPublic(){}
137
+
publicfunc extMemberPublic(){} // expected-warning {{'public' modifier is redundant for instance method declared in a public extension}} {{3-10=}}
138
138
fileprivatefunc extFuncPublic(){}
139
139
privatefunc extImplPublic(){}
140
140
}
141
141
internalextensionPrivateStruct{ // expected-error {{extension of private struct cannot be declared internal}} {{1-10=}}
142
-
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
142
+
publicfunc extMemberInternal(){} // expected-warning {{declaring a public instance method in an internal extension}} {{3-10=}}
143
143
fileprivatefunc extFuncInternal(){}
144
144
privatefunc extImplInternal(){}
145
145
}
146
146
fileprivateextensionPrivateStruct{ // expected-error {{extension of private struct cannot be declared fileprivate}} {{1-13=}}
147
-
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-9=fileprivate}}
148
-
fileprivatefunc extFuncFilePrivate(){}
147
+
publicfunc extMemberFilePrivate(){} // expected-warning {{declaring a public instance method in a fileprivate extension}} {{3-10=}}
148
+
fileprivatefunc extFuncFilePrivate(){} // expected-warning {{'fileprivate' modifier is redundant for instance method declared in a fileprivate extension}} {{3-15=}}
149
149
privatefunc extImplFilePrivate(){}
150
150
}
151
151
privateextensionPrivateStruct{
@@ -174,7 +174,7 @@ public class Base {
174
174
175
175
176
176
publicextensionBase{
177
-
openfunc extMemberPublic(){} // expected-warning {{declaring open instance method in public extension}}
177
+
openfunc extMemberPublic(){} // expected-warning {{declaring open instance method in a public extension}}
178
178
}
179
179
internalextensionBase{
180
180
openfunc extMemberInternal(){} // expected-warning {{declaring open instance method in an internal extension}}
0 commit comments