> On Aug 18, 2016, at 8:21 PM, Ben Rimmington via swift-evolution
> <[email protected]> wrote:
>
>
>> On 18 Aug 2016, at 16:32, John McCall <[email protected]> wrote:
>>
>> Unapplied method references still dispatch down. It's a pretty simple
>> experiment to run for yourself.
>
> When I tried calling a specific superclass implementation, there was a stack
> overflow due to the infinite recursion.
This is because calling Once.value() with an instance of Twice still dispatches
to Twice::value().
>
> class Once {
> func value() -> Int {
> return 1
> }
> }
>
> class Twice: Once {
> override func value() -> Int {
> return 2
> }
> }
>
> class Thrice: Twice {
> override func value() -> Int {
> return 3
>
> // EXC_BAD_ACCESS:
> // return Once.value(self)()
> }
> }
>
> let once = Once()
> once.value() //-> 1
> Once.value(once)() //-> 1
>
> let twice = Twice()
> twice.value() //-> 2
> Once.value(twice)() //-> 2
> Twice.value(twice)() //-> 2
>
> let thrice = Thrice()
> thrice.value() //-> 3
> Once.value(thrice)() //-> 3
> Twice.value(thrice)() //-> 3
> Thrice.value(thrice)() //-> 3
>
> -- Ben
>
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution