Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-23 Thread David Waite via swift-evolution
> On Feb 22, 2017, at 5:32 PM, Ben Cohen via swift-evolution > wrote: > >> On Feb 22, 2017, at 10:42 AM, Nate Cook via swift-evolution >> mailto:swift-evolution@swift.org>> wrote: >> >> Oops, left out that there's this horrifying way of writing it right now: >> >> Nobody wants that. >> > >

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Slava Pestov via swift-evolution
I think this is a manifestation of a more general problem, that default arguments cannot capture values from outer scope. Saying they’re evaluated in “type context” and not “instance context” is one way to skirt around the issue, but you can still trigger capturing anyway, and crash in SILGen:

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Jonathan Hull via swift-evolution
I would use this all the time if it was available. What I do now most of the time is take an optional instead and then ‘??’ with the instance variable. That doesn’t work if I need an optional for other reasons, and nil is kind of a magical value… Thanks, Jon > On Feb 22, 2017, at 11:53 AM, Na

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Kevin Nattinger via swift-evolution
> On Feb 22, 2017, at 8:25 PM, Derrick Ho via swift-evolution > wrote: > > Did you know you can use a static variable as a default parameter? > > class poncho { > static var color= "yellow" > > func foo(color: String = poncho.color){} > } > > I think instance members should not be allowed as

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Derrick Ho via swift-evolution
Did you know you can use a static variable as a default parameter? class poncho { static var color= "yellow" func foo(color: String = poncho.color){} } I think instance members should not be allowed as default members though. It may lead to unexpected behavior. On Wed, Feb 22, 2017 at 11:06 PM T

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread T.J. Usiyan via swift-evolution
+1 if this doesn't have terrible implications. The downside to making it IUO or Optional is that that changes the type signature of `index(i:offsetBy:)` for no reason other than a default value. If you decide to change to or away from providing a default value it probably shouldn't change the typ

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Ben Cohen via swift-evolution
> On Feb 22, 2017, at 10:42 AM, Nate Cook via swift-evolution > wrote: > > Oops, left out that there's this horrifying way of writing it right now: > > extension Collection { > func index(_ i: Index! = nil, offsetBy n: IndexDistance) -> Index { > let i = i ?? startIndex > /

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Nate Cook via swift-evolution
After further examination, it looks like default parameter values are evaluated in a type context, not an instance context, which is why this isn't working. Using the instance context there would be provide more flexibility, since we could still explicitly access type-level vars. Does anyone ha

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Tino Heth via swift-evolution
It's nothing that is miss all the time, but I was informed about this limitation by the compiler before ;-), so unless there are some unexpected downsides, it should be added — and I wouldn't limit it to instance members: Other parameters could be useful defaults as well (or think of scenarios li

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread David Sweeris via swift-evolution
> On Feb 22, 2017, at 10:16 AM, Nate Cook via swift-evolution > wrote: > > Hello all, > > I was surprised to find that I can't use an instance member as the default > value of a method parameter, only constants and the run-time calculated > #file, #line, etc. Is it possible to remove this li

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Nate Cook via swift-evolution
Oops, left out that there's this horrifying way of writing it right now: extension Collection { func index(_ i: Index! = nil, offsetBy n: IndexDistance) -> Index { let i = i ?? startIndex // ... } } Nobody wants that. ___ swift-

Re: [swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Jonathan Hull via swift-evolution
+1 I was just missing this feature as well. Thanks, Jon > On Feb 22, 2017, at 10:16 AM, Nate Cook via swift-evolution > wrote: > > Hello all, > > I was surprised to find that I can't use an instance member as the default > value of a method parameter, only constants and the run-time calcu

[swift-evolution] [Pitch/Reality Check] Allow instance members as parameter default values

2017-02-22 Thread Nate Cook via swift-evolution
Hello all, I was surprised to find that I can't use an instance member as the default value of a method parameter, only constants and the run-time calculated #file, #line, etc. Is it possible to remove this limitation? I'd like to propose that we add an overload of the collection index(_:offse