Right, so several people have agreed with me that a compiler warning is in 
order. My question now is: what’s the best way to get this request to the 
people who can make it happen? swift-dev list? swift-evolution list? Apple 
radar? Suggestions are welcome.

Thanks.
Wagner


> On 9 Jan 2017, at 09:49, David Hart <da...@hartbit.com> wrote:
> 
> I think we need a warning because it is definitely ambiguous and a common 
> pitfall for users of an API. The only solution would be for the APIs be 
> written so to avoid those ambiguities I think.
> 
>> On 5 Jan 2017, at 08:58, Rien via swift-users <swift-users@swift.org> wrote:
>> 
>> As you know. there is no ambiguity, no warnings needed.
>> (The parameter is part of the identifier of the function)
>> 
>> Imo, this request falls into the category “do as I think, not as I say”.
>> 
>> That is a discussion without end. Personally I am against ANY warnings of 
>> this kind. The reason is that I want my code to compile warnings free 
>> (default compiler behaviour) and I do not want an extra pragma in the code 
>> to instruct the compiler that when I am calling “foo()” I do indeed want to 
>> call “foo()”.
>> 
>> Regards,
>> Rien
>> 
>> Site: http://balancingrock.nl
>> Blog: http://swiftrien.blogspot.com
>> Github: http://github.com/Swiftrien
>> Project: http://swiftfire.nl
>> 
>> 
>> 
>> 
>>> On 05 Jan 2017, at 03:29, Wagner Truppel via swift-users 
>>> <swift-users@swift.org> wrote:
>>> 
>>> Hello,
>>> 
>>> I wasn’t sure whether to post this message here, at swift-dev, or at 
>>> swift-evolution. so I’ll try here first. Hopefully it will get to the right 
>>> group of people or, if not, someone will point me to the right mailing list.
>>> 
>>> I came across a situation that boils down to this example:
>>> 
>>> class Parent {
>>>  func foo() {
>>>      print("Parent foo() called")
>>>  }
>>> }
>>> 
>>> class Child: Parent {
>>>  func foo(x: Int = 0) {
>>>      print("Child foo() called")
>>>  }
>>> }
>>> 
>>> let c = Child()
>>> c.foo()  // prints "Parent foo() called"
>>> 
>>> I understand why this behaves like so, namely, the subclass has a method 
>>> foo(x:) but no direct implementation of foo() so the parent’s 
>>> implementation is invoked rather than the child's. That’s all fine except 
>>> that it is not very intuitive.
>>> 
>>> I would argue that the expectation is that the search for an implementation 
>>> should start with the subclass (which is does) but should look at all 
>>> possible restrictions of parent implementations, including the restriction 
>>> due to default values.
>>> 
>>> At the very least, I think the compiler should emit a warning or possibly 
>>> even an error.
>>> 
>>> Thanks for reading.
>>> Cheers,
>>> 
>>> Wagner
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to