File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ // RUN: %target-typecheck-verify-swift -enable-experimental-feature AllowUnsafeAttribute -enable-experimental-feature WarnUnsafe -print-diagnostic-groups
2+
3+ // REQUIRES: swift_feature_AllowUnsafeAttribute
4+ // REQUIRES: swift_feature_WarnUnsafe
5+
6+ @unsafe
7+ func unsafeFunction( ) { }
8+
9+ @unsafe
10+ struct UnsafeType { } // expected-note{{unsafe struct 'UnsafeType' declared here}}
11+
12+ @safe ( unchecked)
13+ func f( ) {
14+ unsafeFunction ( )
15+ }
16+
17+ @safe ( unchecked, message: " I was careful " )
18+ func g( ) {
19+ unsafeFunction ( )
20+ }
21+
22+ // expected-note@+2{{mark the enclosing global function 'h' '@unsafe' to allow it to use unsafe constructs}}
23+ @safe ( unchecked, message: " I was careful " )
24+ func h( _: UnsafeType ) { // expected-warning{{reference to unsafe struct 'UnsafeType' [Unsafe]}}
25+ unsafeFunction ( )
26+ }
27+
28+ // Parsing issues
29+ @safe // expected-error{{expected '(' in 'safe' attribute}}
30+ func bad1( ) { }
31+
32+ @safe ( ) // expected-error{{'@safe' attribute must be written as '@safe(unchecked)'}}
33+ func bad2( ) { }
34+
35+ @safe ( blah) // expected-error{{'@safe' attribute must be written as '@safe(unchecked)'}}
36+ func bad3( ) { }
37+
38+ @safe ( 5 ) // expected-error{{'@safe' attribute must be written as '@safe(unchecked)'}}
39+ func bad4( ) { }
40+
41+ @safe ( unchecked, blah) // expected-error{{unknown option 'blah' for attribute 'safe'}}
42+ func bad5( ) { }
43+
44+ @safe ( unchecked, message) // expected-error{{expected ':' after label 'message'}}
45+ func bad6( ) { }
46+
47+ @safe ( unchecked, message: " a \( b) " ) // expected-error{{message cannot be an interpolated string literal}}
48+ func bad7( ) { }
You can’t perform that action at this time.
0 commit comments