@@ -1108,13 +1108,27 @@ ERROR(pattern_type_access,none,
11081108 " because its type uses "
11091109 " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
11101110 (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))
11111118ERROR(pattern_type_access_inferred,none,
11121119 " %select{%select{variable|constant}0|property}1 "
11131120 " %select{must be declared %select{private|fileprivate|internal|PUBLIC}4"
11141121 " |cannot be declared %select{PRIVATE|fileprivate|internal|public}3}2 "
11151122 " because its type %5 uses "
11161123 " %select{a private|a fileprivate|an internal|PUBLIC}4 type" ,
11171124 (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))
11181132ERROR(pattern_binds_no_variables,none,
11191133 " %select{property|global variable}0 declaration does not bind any "
11201134 " variables" ,
@@ -1154,6 +1168,13 @@ ERROR(type_alias_underlying_type_access,none,
11541168 " because its underlying type uses "
11551169 " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
11561170 (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))
11571178
11581179// Subscripts
11591180ERROR(subscript_type_access,none,
@@ -1163,6 +1184,13 @@ ERROR(subscript_type_access,none,
11631184 " because its %select{index|element type}3 uses "
11641185 " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
11651186 (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 ))
11661194
11671195// Functions
11681196ERROR(function_type_access,none,
@@ -1172,6 +1200,13 @@ ERROR(function_type_access,none,
11721200 " because its %select{parameter|result}4 uses "
11731201 " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
11741202 (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 ))
11751210WARNING(non_trailing_closure_before_default_args,none,
11761211 " closure parameter prior to parameters with default arguments will "
11771212 " not be treated as a trailing closure" , ())
@@ -1302,6 +1337,12 @@ ERROR(protocol_refine_access,none,
13021337 " |%select{PRIVATE|fileprivate|internal|public}1 protocol cannot "
13031338 " refine}0 %select{a private|a fileprivate|an internal|PUBLIC}2 protocol" ,
13041339 (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))
13051346ERROR(protocol_property_must_be_computed_var,none,
13061347 " immutable property requirement must be declared as 'var' with a "
13071348 " '{ get }' specifier" , ())
@@ -1334,6 +1375,12 @@ ERROR(associated_type_access,none,
13341375 " %select{a private|a fileprivate|an internal|PUBLIC}1 type in its "
13351376 " %select{default definition|requirement}2 " ,
13361377 (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 ))
13371384
13381385NOTE(bad_associated_type_deduction,none,
13391386 " unable to infer associated type %0 for protocol %1" ,
@@ -1491,6 +1538,13 @@ ERROR(generic_param_access,none,
14911538 " because its generic %select{parameter|requirement}4 uses "
14921539 " %select{a private|a fileprivate|an internal|PUBLIC}3 type" ,
14931540 (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 ))
14941548
14951549ERROR(override_multiple_decls_base,none,
14961550 " declaration %0 cannot override more than one superclass declaration" ,
@@ -1683,6 +1737,10 @@ ERROR(enum_case_access,none,
16831737 " enum case in %select{PRIVATE|a fileprivate|an internal|a public}0 enum "
16841738 " uses %select{a private|a fileprivate|an internal|PUBLIC}1 type" ,
16851739 (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))
16861744ERROR(enum_stored_property,none,
16871745 " enums may not contain stored properties" , ())
16881746
@@ -1706,6 +1764,13 @@ ERROR(enum_raw_type_access,none,
17061764 " because its raw type uses "
17071765 " %select{a private|a fileprivate|an internal|PUBLIC}2 type" ,
17081766 (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))
17091774
17101775NOTE(enum_here,none,
17111776 " enum %0 declared here" , (Identifier))
@@ -2639,6 +2704,13 @@ ERROR(class_super_access,none,
26392704 " because its superclass is "
26402705 " %select{private|fileprivate|internal|PUBLIC}2" ,
26412706 (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))
26422714ERROR(dot_protocol_on_non_existential,none,
26432715 " cannot use 'Protocol' with non-protocol type %0" , (Type))
26442716ERROR(tuple_single_element,none,
0 commit comments