| // RUN: %target-typecheck-verify-swift |
| |
| func doFoo() {} |
| |
| class View { |
| var subviews: Array<AnyObject>! = [] |
| } |
| |
| var rootView = View() |
| var v = [View(), View()] |
| rootView.subviews = v |
| |
| _ = rootView.subviews as! [View] |
| |
| for view in rootView.subviews as! [View] { // expected-warning{{immutable value 'view' was never used; consider replacing with '_' or removing it}} |
| doFoo() |
| } |
| |
| // FIXME: Diagnostic below should be "'AnyObject' is not convertible to |
| // 'View'", but IUO type gets in the way of proper diagnosis. |
| for view:View in rootView.subviews { // expected-error{{type 'Array<AnyObject>?' does not conform to protocol 'Sequence'}} |
| doFoo() |
| } |
| |
| _ = (rootView.subviews!) as! [View] |
| |
| _ = (rootView.subviews) as! [View] |
| |
| var ao: [AnyObject] = [] |
| _ = ao as! [View] // works |
| |
| |
| var b = Array<(String, Int)>() |
| |
| for x in b { // expected-warning{{immutable value 'x' was never used; consider replacing with '_' or removing it}} |
| doFoo() |
| } |
| |
| var c : Array<(String, Int)>! = Array() |
| |
| for x in c { // expected-warning{{immutable value 'x' was never used; consider replacing with '_' or removing it}} |
| doFoo() |
| } |
| |
| var d : Array<(String, Int)>? = Array() |
| |
| for x in d! { // expected-warning{{immutable value 'x' was never used; consider replacing with '_' or removing it}} |
| doFoo() |
| } |