@@ -41,7 +41,7 @@ func testDeployment() {
4141}
4242
4343func testIfAvailable( _ truthy: Bool ) {
44- if #available( EnabledDomain) {
44+ if #available( EnabledDomain) { // expected-note {{enclosing scope here}}
4545 availableInEnabledDomain ( )
4646 unavailableInEnabledDomain ( ) // expected-error {{'unavailableInEnabledDomain()' is unavailable}}
4747 availableInDynamicDomain ( ) // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
@@ -59,7 +59,9 @@ func testIfAvailable(_ truthy: Bool) {
5959 unavailableInDynamicDomain ( )
6060 }
6161
62- if #unavailable( EnabledDomain) {
62+ if #available( EnabledDomain) { } // expected-warning {{unnecessary check for 'EnabledDomain'; enclosing scope ensures guard will always be true}}
63+
64+ if #unavailable( EnabledDomain) { // FIXME: [availability] Diagnose as unreachable
6365 // Unreachable.
6466 availableInEnabledDomain ( )
6567 unavailableInEnabledDomain ( ) // expected-error {{'unavailableInEnabledDomain()' is unavailable}}
@@ -112,19 +114,25 @@ func testIfAvailable(_ truthy: Bool) {
112114}
113115
114116func testWhileAvailable( ) {
115- while #available( EnabledDomain) {
117+ while #available( EnabledDomain) { // expected-note {{enclosing scope here}}
116118 availableInEnabledDomain ( )
117119 unavailableInEnabledDomain ( ) // expected-error {{'unavailableInEnabledDomain()' is unavailable}}
120+
121+ if #available( EnabledDomain) { } // expected-warning {{unnecessary check for 'EnabledDomain'; enclosing scope ensures guard will always be true}}
122+ if #unavailable( EnabledDomain) { } // FIXME: [availability] Diagnose as unreachable
118123 }
119124
120125 while #unavailable( EnabledDomain) {
121126 availableInEnabledDomain ( ) // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
122127 unavailableInEnabledDomain ( )
128+
129+ if #available( EnabledDomain) { } // FIXME: [availability] Diagnose as unreachable
130+ if #unavailable( EnabledDomain) { } // FIXME: [availability] Diagnose as redundant
123131 }
124132}
125133
126134func testGuardAvailable( ) {
127- guard #available( EnabledDomain) else {
135+ guard #available( EnabledDomain) else { // expected-note {{enclosing scope here}}
128136 availableInEnabledDomain ( ) // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
129137 unavailableInEnabledDomain ( )
130138 availableInDynamicDomain ( ) // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
@@ -135,14 +143,17 @@ func testGuardAvailable() {
135143 availableInEnabledDomain ( )
136144 unavailableInEnabledDomain ( ) // expected-error {{'unavailableInEnabledDomain()' is unavailable}}
137145 availableInDynamicDomain ( ) // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
146+
147+ if #available( EnabledDomain) { } // expected-warning {{unnecessary check for 'EnabledDomain'; enclosing scope ensures guard will always be true}}
148+ if #unavailable( EnabledDomain) { } // FIXME: [availability] Diagnose as unreachable
138149}
139150
140151@available ( EnabledDomain)
141- func testEnabledDomainAvailable( ) {
152+ func testEnabledDomainAvailable( ) { // expected-note {{enclosing scope here}}
142153 availableInEnabledDomain ( )
143154 unavailableInEnabledDomain ( ) // expected-error {{'unavailableInEnabledDomain()' is unavailable}}
144155
145- if #available( EnabledDomain) { } // FIXME: [availability] Diagnose as redundant
156+ if #available( EnabledDomain) { } // expected-warning {{unnecessary check for 'EnabledDomain'; enclosing scope ensures guard will always be true}}
146157 if #unavailable( EnabledDomain) { } // FIXME: [availability] Diagnose as unreachable
147158
148159 alwaysAvailable ( )
0 commit comments