Commits

Doug Gregor committed b11b655fcc0
Introduce another calling syntax for selectors. This new syntax aims to be closer to the declaration syntax. For example, to call this method: func performSelector(_ : SEL) withObject(obj1 : id) { } one would use target.performSelector("doThis:") withObject(object) The additional selector pieces (e.g., withObject(object)) occur on the same line; otherwise, they are taken as a separate statement. However, one can use ':' as a continuation character at the beginning of the next line to continue the message send, e.g., target.performSelector("doThis:") :withObject(object) For the 3-argument version, one could use, e.g., target.performSelector("doThis:") withObject(object1) withObject(object2) or target.performSelector("doThis:") :withObject(object1) withObject(object2) or target.performSelector("doThis:") :withObject(object1) :withObject(object2) depending on the width of your screen. Note that I've tweaked the parsing of case statements slightly to accommodate this change, by requiring that the ':' that follows a case statement not start a new line. Thus, case foo: is okay, but case foo : is not. This is mostly paranoia, so that case target.performSelector("sel"): is "obviously" a simple method invocation in the case, while case target.performSelector("sel") :withObject(object): is "obviously" a two-argument method invocation in the case. This syntax has some positives, such as similarity with the function declaration syntax and being a fairly clean extension of the "normal" Swift method call syntax. It also has some negatives: we have our first continuation character (':'), the syntax for constructors is (again) a bit unfortunate new NSURL(initWithString="http://www.apple.com") and it's not clear how to invoke a variadic method with this syntax without, say, burying the additional arguments in the last argument (which is currently not permitted), e.g., NSString.alloc().initWithFormat("blah") locale(locale, arg1, arg2) Swift SVN r4366