@@ -1110,13 +1110,27 @@ ERROR(pattern_type_access,none,
1110
1110
" because its type uses "
1111
1111
" %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1112
1112
(bool , bool , bool , Accessibility, Accessibility))
1113
+ WARNING(pattern_type_access_warn,none,
1114
+ " %select{%select{variable|constant}0|property}1 "
1115
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}4"
1116
+ " |should not be declared %select{in this context|fileprivate|internal|public}3}2 "
1117
+ " because its type uses "
1118
+ " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1119
+ (bool , bool , bool , Accessibility, Accessibility))
1113
1120
ERROR(pattern_type_access_inferred,none,
1114
1121
" %select{%select{variable|constant}0|property}1 "
1115
1122
" %select{must be declared %select{private|fileprivate|internal|PUBLIC}4"
1116
1123
" |cannot be declared %select{PRIVATE|fileprivate|internal|public}3}2 "
1117
1124
" because its type %5 uses "
1118
1125
" %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1119
1126
(bool , bool , bool , Accessibility, Accessibility, Type))
1127
+ WARNING(pattern_type_access_inferred_warn,none,
1128
+ " %select{%select{variable|constant}0|property}1 "
1129
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}4"
1130
+ " |should not be declared %select{in this context|fileprivate|internal|public}3}2 "
1131
+ " because its type %5 uses "
1132
+ " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1133
+ (bool , bool , bool , Accessibility, Accessibility, Type))
1120
1134
ERROR(pattern_binds_no_variables,none,
1121
1135
" %select{property|global variable}0 declaration does not bind any "
1122
1136
" variables" ,
@@ -1156,6 +1170,13 @@ ERROR(type_alias_underlying_type_access,none,
1156
1170
" because its underlying type uses "
1157
1171
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1158
1172
(bool , Accessibility, Accessibility))
1173
+ WARNING(type_alias_underlying_type_access_warn,none,
1174
+ " type alias %select{should be declared "
1175
+ " %select{private|fileprivate|internal|PUBLIC}2"
1176
+ " |should not be declared %select{PRIVATE|fileprivate|internal|public}1}0 "
1177
+ " because its underlying type uses "
1178
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1179
+ (bool , Accessibility, Accessibility))
1159
1180
1160
1181
// Subscripts
1161
1182
ERROR(subscript_type_access,none,
@@ -1165,6 +1186,13 @@ ERROR(subscript_type_access,none,
1165
1186
" because its %select{index|element type}3 uses "
1166
1187
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1167
1188
(bool , Accessibility, Accessibility, bool ))
1189
+ WARNING(subscript_type_access_warn,none,
1190
+ " subscript %select{should be declared "
1191
+ " %select{private|fileprivate|internal|PUBLIC}2"
1192
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1193
+ " because its %select{index|element type}3 uses "
1194
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1195
+ (bool , Accessibility, Accessibility, bool ))
1168
1196
1169
1197
// Functions
1170
1198
ERROR(function_type_access,none,
@@ -1174,6 +1202,13 @@ ERROR(function_type_access,none,
1174
1202
" because its %select{parameter|result}4 uses "
1175
1203
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1176
1204
(bool , Accessibility, Accessibility, unsigned , bool ))
1205
+ WARNING(function_type_access_warn,none,
1206
+ " %select{function|method|initializer}3 "
1207
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}2"
1208
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1209
+ " because its %select{parameter|result}4 uses "
1210
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1211
+ (bool , Accessibility, Accessibility, unsigned , bool ))
1177
1212
WARNING(non_trailing_closure_before_default_args,none,
1178
1213
" closure parameter prior to parameters with default arguments will "
1179
1214
" not be treated as a trailing closure" , ())
@@ -1304,6 +1339,12 @@ ERROR(protocol_refine_access,none,
1304
1339
" |%select{PRIVATE|fileprivate|internal|public}1 protocol cannot "
1305
1340
" refine}0 %select{a private|a fileprivate|an internal|PUBLIC}2 protocol" ,
1306
1341
(bool , Accessibility, Accessibility))
1342
+ WARNING(protocol_refine_access_warn,none,
1343
+ " %select{protocol should be declared "
1344
+ " %select{private|fileprivate|internal|PUBLIC}2 because it refines"
1345
+ " |%select{in this context|fileprivate|internal|public}1 protocol should not "
1346
+ " refine}0 %select{a private|a fileprivate|an internal|PUBLIC}2 protocol" ,
1347
+ (bool , Accessibility, Accessibility))
1307
1348
ERROR(protocol_property_must_be_computed_var,none,
1308
1349
" immutable property requirement must be declared as 'var' with a "
1309
1350
" '{ get }' specifier" , ())
@@ -1337,6 +1378,12 @@ ERROR(associated_type_access,none,
1337
1378
" %select{a private|a fileprivate|an internal|PUBLIC}1 type in its "
1338
1379
" %select{default definition|requirement}2 " ,
1339
1380
(Accessibility, Accessibility, unsigned ))
1381
+ WARNING(associated_type_access_warn,none,
1382
+ " associated type in "
1383
+ " %select{a private|a fileprivate|an internal|a public}0 protocol uses "
1384
+ " %select{a private|a fileprivate|an internal|PUBLIC}1 type in its "
1385
+ " %select{default definition|requirement}2 " ,
1386
+ (Accessibility, Accessibility, unsigned ))
1340
1387
1341
1388
NOTE(bad_associated_type_deduction,none,
1342
1389
" unable to infer associated type %0 for protocol %1" ,
@@ -1496,6 +1543,13 @@ ERROR(generic_param_access,none,
1496
1543
" because its generic %select{parameter|requirement}4 uses "
1497
1544
" %select{a private|a fileprivate|an internal|PUBLIC}3 type" ,
1498
1545
(DescriptiveDeclKind, bool , Accessibility, Accessibility, bool ))
1546
+ WARNING(generic_param_access_warn,none,
1547
+ " %0 %select{should be declared "
1548
+ " %select{private|fileprivate|internal|PUBLIC}3"
1549
+ " |should not be declared %select{in this context|fileprivate|internal|public}2}1 "
1550
+ " because its generic %select{parameter|requirement}4 uses "
1551
+ " %select{a private|a fileprivate|an internal|PUBLIC}3 type" ,
1552
+ (DescriptiveDeclKind, bool , Accessibility, Accessibility, bool ))
1499
1553
1500
1554
ERROR(override_multiple_decls_base,none,
1501
1555
" declaration %0 cannot override more than one superclass declaration" ,
@@ -1688,6 +1742,10 @@ ERROR(enum_case_access,none,
1688
1742
" enum case in %select{PRIVATE|a fileprivate|an internal|a public}0 enum "
1689
1743
" uses %select{a private|a fileprivate|an internal|PUBLIC}1 type" ,
1690
1744
(Accessibility, Accessibility))
1745
+ WARNING(enum_case_access_warn,none,
1746
+ " enum case in %select{a private|a fileprivate|an internal|a public}0 enum "
1747
+ " uses %select{a private|a fileprivate|an internal|PUBLIC}1 type" ,
1748
+ (Accessibility, Accessibility))
1691
1749
ERROR(enum_stored_property,none,
1692
1750
" enums may not contain stored properties" , ())
1693
1751
@@ -1716,6 +1774,13 @@ ERROR(enum_raw_type_access,none,
1716
1774
" because its raw type uses "
1717
1775
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1718
1776
(bool , Accessibility, Accessibility))
1777
+ WARNING(enum_raw_type_access_warn,none,
1778
+ " enum %select{should be declared "
1779
+ " %select{private|fileprivate|internal|PUBLIC}2"
1780
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1781
+ " because its raw type uses "
1782
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1783
+ (bool , Accessibility, Accessibility))
1719
1784
1720
1785
NOTE(enum_here,none,
1721
1786
" enum %0 declared here" , (Identifier))
@@ -2657,6 +2722,13 @@ ERROR(class_super_access,none,
2657
2722
" because its superclass is "
2658
2723
" %select{private|fileprivate|internal|PUBLIC}2" ,
2659
2724
(bool , Accessibility, Accessibility))
2725
+ WARNING(class_super_access_warn,none,
2726
+ " class %select{should be declared "
2727
+ " %select{private|fileprivate|internal|PUBLIC}2"
2728
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
2729
+ " because its superclass is "
2730
+ " %select{private|fileprivate|internal|PUBLIC}2" ,
2731
+ (bool , Accessibility, Accessibility))
2660
2732
ERROR(dot_protocol_on_non_existential,none,
2661
2733
" cannot use 'Protocol' with non-protocol type %0" , (Type))
2662
2734
ERROR(tuple_single_element,none,
0 commit comments