@@ -1108,13 +1108,27 @@ ERROR(pattern_type_access,none,
1108
1108
" because its type uses "
1109
1109
" %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1110
1110
(bool , bool , bool , Accessibility, Accessibility))
1111
+ WARNING(pattern_type_access_warn,none,
1112
+ " %select{%select{variable|constant}0|property}1 "
1113
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}4"
1114
+ " |should not be declared %select{in this context|fileprivate|internal|public}3}2 "
1115
+ " because its type uses "
1116
+ " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1117
+ (bool , bool , bool , Accessibility, Accessibility))
1111
1118
ERROR(pattern_type_access_inferred,none,
1112
1119
" %select{%select{variable|constant}0|property}1 "
1113
1120
" %select{must be declared %select{private|fileprivate|internal|PUBLIC}4"
1114
1121
" |cannot be declared %select{PRIVATE|fileprivate|internal|public}3}2 "
1115
1122
" because its type %5 uses "
1116
1123
" %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1117
1124
(bool , bool , bool , Accessibility, Accessibility, Type))
1125
+ WARNING(pattern_type_access_inferred_warn,none,
1126
+ " %select{%select{variable|constant}0|property}1 "
1127
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}4"
1128
+ " |should not be declared %select{in this context|fileprivate|internal|public}3}2 "
1129
+ " because its type %5 uses "
1130
+ " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
1131
+ (bool , bool , bool , Accessibility, Accessibility, Type))
1118
1132
ERROR(pattern_binds_no_variables,none,
1119
1133
" %select{property|global variable}0 declaration does not bind any "
1120
1134
" variables" ,
@@ -1154,6 +1168,13 @@ ERROR(type_alias_underlying_type_access,none,
1154
1168
" because its underlying type uses "
1155
1169
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1156
1170
(bool , Accessibility, Accessibility))
1171
+ WARNING(type_alias_underlying_type_access_warn,none,
1172
+ " type alias %select{should be declared "
1173
+ " %select{private|fileprivate|internal|PUBLIC}2"
1174
+ " |should not be declared %select{PRIVATE|fileprivate|internal|public}1}0 "
1175
+ " because its underlying type uses "
1176
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1177
+ (bool , Accessibility, Accessibility))
1157
1178
1158
1179
// Subscripts
1159
1180
ERROR(subscript_type_access,none,
@@ -1163,6 +1184,13 @@ ERROR(subscript_type_access,none,
1163
1184
" because its %select{index|element type}3 uses "
1164
1185
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1165
1186
(bool , Accessibility, Accessibility, bool ))
1187
+ WARNING(subscript_type_access_warn,none,
1188
+ " subscript %select{should be declared "
1189
+ " %select{private|fileprivate|internal|PUBLIC}2"
1190
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1191
+ " because its %select{index|element type}3 uses "
1192
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1193
+ (bool , Accessibility, Accessibility, bool ))
1166
1194
1167
1195
// Functions
1168
1196
ERROR(function_type_access,none,
@@ -1172,6 +1200,13 @@ ERROR(function_type_access,none,
1172
1200
" because its %select{parameter|result}4 uses "
1173
1201
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1174
1202
(bool , Accessibility, Accessibility, unsigned , bool ))
1203
+ WARNING(function_type_access_warn,none,
1204
+ " %select{function|method|initializer}3 "
1205
+ " %select{should be declared %select{private|fileprivate|internal|PUBLIC}2"
1206
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1207
+ " because its %select{parameter|result}4 uses "
1208
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1209
+ (bool , Accessibility, Accessibility, unsigned , bool ))
1175
1210
WARNING(non_trailing_closure_before_default_args,none,
1176
1211
" closure parameter prior to parameters with default arguments will "
1177
1212
" not be treated as a trailing closure" , ())
@@ -1302,6 +1337,12 @@ ERROR(protocol_refine_access,none,
1302
1337
" |%select{PRIVATE|fileprivate|internal|public}1 protocol cannot "
1303
1338
" refine}0 %select{a private|a fileprivate|an internal|PUBLIC}2 protocol" ,
1304
1339
(bool , Accessibility, Accessibility))
1340
+ WARNING(protocol_refine_access_warn,none,
1341
+ " %select{protocol should be declared "
1342
+ " %select{private|fileprivate|internal|PUBLIC}2 because it refines"
1343
+ " |%select{in this context|fileprivate|internal|public}1 protocol should not "
1344
+ " refine}0 %select{a private|a fileprivate|an internal|PUBLIC}2 protocol" ,
1345
+ (bool , Accessibility, Accessibility))
1305
1346
ERROR(protocol_property_must_be_computed_var,none,
1306
1347
" immutable property requirement must be declared as 'var' with a "
1307
1348
" '{ get }' specifier" , ())
@@ -1334,6 +1375,12 @@ ERROR(associated_type_access,none,
1334
1375
" %select{a private|a fileprivate|an internal|PUBLIC}1 type in its "
1335
1376
" %select{default definition|requirement}2 " ,
1336
1377
(Accessibility, Accessibility, unsigned ))
1378
+ WARNING(associated_type_access_warn,none,
1379
+ " associated type in "
1380
+ " %select{a private|a fileprivate|an internal|a public}0 protocol uses "
1381
+ " %select{a private|a fileprivate|an internal|PUBLIC}1 type in its "
1382
+ " %select{default definition|requirement}2 " ,
1383
+ (Accessibility, Accessibility, unsigned ))
1337
1384
1338
1385
NOTE(bad_associated_type_deduction,none,
1339
1386
" unable to infer associated type %0 for protocol %1" ,
@@ -1491,6 +1538,13 @@ ERROR(generic_param_access,none,
1491
1538
" because its generic %select{parameter|requirement}4 uses "
1492
1539
" %select{a private|a fileprivate|an internal|PUBLIC}3 type" ,
1493
1540
(DescriptiveDeclKind, bool , Accessibility, Accessibility, bool ))
1541
+ WARNING(generic_param_access_warn,none,
1542
+ " %0 %select{should be declared "
1543
+ " %select{private|fileprivate|internal|PUBLIC}3"
1544
+ " |should not be declared %select{in this context|fileprivate|internal|public}2}1 "
1545
+ " because its generic %select{parameter|requirement}4 uses "
1546
+ " %select{a private|a fileprivate|an internal|PUBLIC}3 type" ,
1547
+ (DescriptiveDeclKind, bool , Accessibility, Accessibility, bool ))
1494
1548
1495
1549
ERROR(override_multiple_decls_base,none,
1496
1550
" declaration %0 cannot override more than one superclass declaration" ,
@@ -1683,6 +1737,10 @@ ERROR(enum_case_access,none,
1683
1737
" enum case in %select{PRIVATE|a fileprivate|an internal|a public}0 enum "
1684
1738
" uses %select{a private|a fileprivate|an internal|PUBLIC}1 type" ,
1685
1739
(Accessibility, Accessibility))
1740
+ WARNING(enum_case_access_warn,none,
1741
+ " enum case in %select{a private|a fileprivate|an internal|a public}0 enum "
1742
+ " uses %select{a private|a fileprivate|an internal|PUBLIC}1 type" ,
1743
+ (Accessibility, Accessibility))
1686
1744
ERROR(enum_stored_property,none,
1687
1745
" enums may not contain stored properties" , ())
1688
1746
@@ -1706,6 +1764,13 @@ ERROR(enum_raw_type_access,none,
1706
1764
" because its raw type uses "
1707
1765
" %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1708
1766
(bool , Accessibility, Accessibility))
1767
+ WARNING(enum_raw_type_access_warn,none,
1768
+ " enum %select{should be declared "
1769
+ " %select{private|fileprivate|internal|PUBLIC}2"
1770
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
1771
+ " because its raw type uses "
1772
+ " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
1773
+ (bool , Accessibility, Accessibility))
1709
1774
1710
1775
NOTE(enum_here,none,
1711
1776
" enum %0 declared here" , (Identifier))
@@ -2639,6 +2704,13 @@ ERROR(class_super_access,none,
2639
2704
" because its superclass is "
2640
2705
" %select{private|fileprivate|internal|PUBLIC}2" ,
2641
2706
(bool , Accessibility, Accessibility))
2707
+ WARNING(class_super_access_warn,none,
2708
+ " class %select{should be declared "
2709
+ " %select{private|fileprivate|internal|PUBLIC}2"
2710
+ " |should not be declared %select{in this context|fileprivate|internal|public}1}0 "
2711
+ " because its superclass is "
2712
+ " %select{private|fileprivate|internal|PUBLIC}2" ,
2713
+ (bool , Accessibility, Accessibility))
2642
2714
ERROR(dot_protocol_on_non_existential,none,
2643
2715
" cannot use 'Protocol' with non-protocol type %0" , (Type))
2644
2716
ERROR(tuple_single_element,none,
0 commit comments