- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathinvalid.swift
144 lines (119 loc) · 8.17 KB
/
invalid.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// RUN: %target-typecheck-verify-swift
// REQUIRES: swift_swift_parser
// FIXME: Swift parser is not enabled on Linux CI yet.
// REQUIRES: OS=macosx
// rdar://15946844
func test1(inout var x :Int){} // expected-warning {{'var' in this position is interpreted as an argument label}} {{18-21=`var`}}
// expected-error @-1 {{'inout' before a parameter name is not allowed, place it before the parameter type instead}} {{12-17=}} {{26-26=inout }}
func test2(inout let x :Int){} // expected-warning {{'let' in this position is interpreted as an argument label}} {{18-21=`let`}}
// expected-error @-1 {{'inout' before a parameter name is not allowed, place it before the parameter type instead}} {{12-17=}} {{26-26=inout }}
func test3(f :(inout_ x : Int)->Void){} // expected-error {{'inout' before a parameter name is not allowed, place it before the parameter type instead}}
func test3(){
undeclared_func( // expected-error {{cannot find 'undeclared_func' in scope}}
} // expected-error {{expected expression in list of expressions}}
func runAction(){} // expected-note {{did you mean 'runAction'?}}
// rdar://16601779
func foo(){
// expected-error@+3 {{argument passed to call that takes no arguments}}
// expected-error@+2 {{cannot find 'SKAction' in scope}}
// expected-error@+1 {{expected ',' separator}}
runAction(SKAction.sequence()
skview!
// expected-error @-1 {{cannot find 'skview' in scope}}
}
switch state{ // expected-error {{cannot find 'state' in scope}}
letduration:Int=0 // expected-error {{all statements inside a switch must be covered by a 'case' or 'default'}}
case 1:
break
}
func testNotCoveredCase(x: Int){
switchx{
lety="foo" // expected-error {{all statements inside a switch must be covered by a 'case' or 'default'}}
switch y {
case"bar":
blah blah // ignored
}
case "baz": // expected-error {{expression pattern of type 'String' cannot match values of type 'Int'}}
break
case 1:
break
default:
break
}
}
// rdar://18926814
func test4(){
letabc=123
_ =" >> \( abc }) << " // expected-error {{expected ',' separator}} {{18-18=,}} expected-error {{expected expression in list of expressions}}
}
// rdar://problem/18507467
func d(_ b: String -><T>()-> T){} // expected-error {{expected type for function result}}
// <rdar://problem/22143680> QoI: terrible diagnostic when trying to form a generic protocol
protocol Animal<Food>{ // expected-error {{an associated type named 'Food' must be declared in the protocol 'Animal' or a protocol it inherits}}
func feed(_ food:Food) // expected-error {{cannot find type 'Food' in scope}}
}
// https://github.com/apple/swift/issues/43190
// Crash with invalid parameter declaration
do{
classStarfish{}
structSalmon{}
func f(s Starfish, // expected-error {{expected ':' following argument label and parameter name}}
_ ss:Salmon)->[Int]{}
func g(){f(Starfish(),Salmon())}
}
// https://github.com/apple/swift/issues/43591
// Two inout crash compiler
func f1_43591(a :inoutinoutInt){} // expected-error {{parameter may have at most one of the 'inout', 'borrowing', or 'consuming' specifiers}} {{19-25=}}
func f2_43591(inout inout b:Int){} // expected-error {{inout' before a parameter name is not allowed, place it before the parameter type instead}} {{15-20=}} {{30-30=inout }}
// expected-error@-1 {{parameter may have at most one of the 'inout', 'borrowing', or 'consuming' specifiers}} {{21-27=}}
func f3_43591(let let a:Int){} // expected-warning {{'let' in this position is interpreted as an argument label}} {{15-18=`let`}}
// expected-error @-1 {{expected ',' separator}} {{22-22=,}}
// expected-error @-2 {{expected ':' following argument label and parameter name}}
// expected-warning @-3 {{extraneous duplicate parameter name; 'let' already has an argument label}} {{15-19=}}
func f4_43591(inout x:inoutString){} // expected-error {{parameter may have at most one of the 'inout', 'borrowing', or 'consuming' specifiers}}
func f5_43591(inout i:inoutInt){} // expected-error {{parameter may have at most one of the 'inout', 'borrowing', or 'consuming' specifiers}} {{15-20=}}
funcrepeat(){}
// expected-error @-1 {{keyword 'repeat' cannot be used as an identifier here}}
// expected-note @-2 {{if this name is unavoidable, use backticks to escape it}} {{6-12=`repeat`}}
letfor=2
// expected-error @-1 {{keyword 'for' cannot be used as an identifier here}}
// expected-note @-2 {{if this name is unavoidable, use backticks to escape it}} {{5-8=`for`}}
func dog cow(){} // expected-error {{found an unexpected second identifier in function declaration; is there an accidental break?}}
// expected-note@-1 {{join the identifiers together}} {{6-13=dogcow}}
// expected-note@-2 {{join the identifiers together with camel-case}} {{6-13=dogCow}}
func cat Mouse(){} // expected-error {{found an unexpected second identifier in function declaration; is there an accidental break?}}
// expected-note@-1 {{join the identifiers together}} {{6-15=catMouse}}
func friend ship<T>(x:T){} // expected-error {{found an unexpected second identifier in function declaration; is there an accidental break?}}
// expected-note@-1 {{join the identifiers together}} {{6-17=friendship}}
// expected-note@-2 {{join the identifiers together with camel-case}} {{6-17=friendShip}}
func were
wolf(){} // expected-error {{found an unexpected second identifier in function declaration; is there an accidental break?}}
// expected-note@-1 {{join the identifiers together}} {{-1:6-+0:5=werewolf}}
// expected-note@-2 {{join the identifiers together with camel-case}} {{-1:6-+0:5=wereWolf}}
func hammer
leavings<T>(x:T){} // expected-error {{found an unexpected second identifier in function declaration; is there an accidental break?}}
// expected-note@-1 {{join the identifiers together}} {{-1:6-+0:9=hammerleavings}}
// expected-note@-2 {{join the identifiers together with camel-case}} {{-1:6-+0:9=hammerLeavings}}
prefix operator %
prefix func%<T>(x:T)->T{return x } // No error expected - the < is considered an identifier but is peeled off by the parser.
structWeak<T:class>{ // expected-error {{'class' constraint can only appear on protocol declarations}}
// expected-note@-1 {{did you mean to write an 'AnyObject' constraint?}} {{16-21=AnyObject}}
weak letvalue:T // expected-error {{'weak' must be a mutable variable, because it may change at runtime}} expected-error {{'weak' variable should have optional type 'T?'}} expected-error {{'weak' must not be applied to non-class-bound 'T'; consider adding a protocol conformance that has a class bound}}
}
letx:()=()
!() // expected-error {{cannot convert value of type '()' to expected argument type 'Bool'}}
!(()) // expected-error {{cannot convert value of type '()' to expected argument type 'Bool'}}
!(x) // expected-error {{cannot convert value of type '()' to expected argument type 'Bool'}}
!x // expected-error {{cannot convert value of type '()' to expected argument type 'Bool'}}
// https://github.com/apple/swift/issues/50734
func f1_50734(@NSApplicationMain x:Int){} // expected-error {{@NSApplicationMain may only be used on 'class' declarations}}
func f2_50734(@available(iOS, deprecated:1) x:Int){} // expected-error {{'@available' attribute cannot be applied to this declaration}}
func f3_50734(@discardableResult x:Int){} // expected-error {{'@discardableResult' attribute cannot be applied to this declaration}}
func f4_50734(@objcMembers x:String){} // expected-error {{@objcMembers may only be used on 'class' declarations}}
func f5_50734(@weak x:String){} // expected-error {{'weak' is a declaration modifier, not an attribute}} expected-error {{'weak' may only be used on 'var' declarations}}
classC_50734<@NSApplicationMain T:AnyObject>{} // expected-error {{@NSApplicationMain may only be used on 'class' declarations}}
func f6_50734<@discardableResult T>(x:T){} // expected-error {{'@discardableResult' attribute cannot be applied to this declaration}}
enumE_50734<@indirect T>{} // expected-error {{'indirect' is a declaration modifier, not an attribute}} expected-error {{'indirect' modifier cannot be applied to this declaration}}
protocol P {
@available(macOS, introduced:10.9) associatedtype Assoc
}