Commits

Chris Lattner committed d167dfbbfab
When typechecking the callee of a CallExpr, and when we have a contextual type, use that contextual type to guide typechecking of the callee. This allows us to propagate that type through generic constraints effectively, making us produce much more useful diagnostics within closures taking methods like "map" (for example). This fixes: <rdar://problem/20491794> QoI closures: Error message does not tell me what the problem is Specifically, running the testcase: enum Color { case Unknown(description: String) } let xs: (Int, Color) = [1,2].map({ ($0, .Unknown("")) }) produces: error: cannot convert call result type '[_]' to expected type '(Int, Color)' Changing that to: let xs: [(Int, Color)] = [1,2].map({ ($0, .Unknown("")) }) produces: error: missing argument label 'description:' in call ... with a fixit to introduce the label. This also fixes most of 22333090, but we're only using this machinery for CallExprs so far, not for operators yet. Swift SVN r31484