> On Mar 17, 2016, at 11:45 AM, Michael Ilseman via swift-evolution 
> <[email protected]> wrote:
> 
>> 
>> On Mar 16, 2016, at 9:53 PM, Douglas Gregor via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>>> 
>>> On Mar 16, 2016, at 4:48 PM, Brent Royal-Gordon via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> 
>>>>    • What is your evaluation of the proposal?
>>> 
>>> Overall in favor.
>>> 
>>> I don't like the getter syntax:
>>> 
>>>     float Point3DGetRadius(Point3D point) 
>>> __attribute__((swift_name("getter:Point3D.radius(self:)")));
>>> 
>>> I think we would be better off thinking of this instead as adding an 
>>> accessor to a property, perhaps with a syntax along these lines:
>>> 
>>>     float Point3DGetRadius(Point3D point) 
>>> __attribute__((swift_name("Point3D.radius.get(self:)")));
>>> 
>>> However, talking about operations-associated-with-a-property seems to be a 
>>> common theme with the behaviors proposal; you may want to think about a 
>>> syntax that could be used for both of them (and perhaps in demangling and 
>>> diagnostics as well).
>> 
>> FWIW, the “getter:” and “setter:” syntax was borrowed from the discussion of 
>> extending #selector to work with getters and setters of properties. Also, 
>> Point3D.radius.get could be a badly-named function “get” in a badly-named 
>> type “Point3D.radius” ;)
>> 
>>> I also find it odd that this proposal doesn't address subscripts.
>> 
>> Yeah. It should probably be a part of the proposal for completeness.
>> 

For subscripts, I have 3 alternatives below to consider, ordered in my personal 
list of preference. Which seems to make the most sense?
1.

// Import as subscript
float Point3DGetPointAtIndex(int idx, Point3D point)
__attribute__((swift_name("getter:subscript(index:self:)")))
void Point3DSetPointAtIndex(int idx, Point3D point, float val)
__attribute__((swift_name("getter:subscript(index:self:_:)")))
2.

// Import as subscript
float Point3DGetPointAtIndex(int idx, Point3D point)
__attribute__((swift_name("getter:subscript(_:self:)")))
void Point3DSetPointAtIndex(int idx, Point3D point, float val)
__attribute__((swift_name("getter:subscript(_:self:newValue:)")))
3.

// Import as subscript
float Point3DGetPointAtIndex(int idx, Point3D point)
__attribute__((swift_name("getter:subscript(index:self:)")))
void Point3DSetPointAtIndex(int idx, Point3D point, float val)
__attribute__((swift_name("getter:subscript(index:self:newValue:)")))


>>> 
>>> I assume that, on types imported as value types, Swift treats operations 
>>> whose self parameter is a (non-const) pointer to the type as mutating and 
>>> others as nonmutating. (This is not explicitly stated in the proposal, 
>>> though.)
>> 
>> That’s correct. It’s in the implementation but not the proposal.
>> 
>>> However, it's not clear how Swift makes that initial determination of 
>>> whether a type should be imported as a value type or a reference type.
>> 
>> That’s actually orthogonal to this proposal. However, right now you have C 
>> enums and structs mapping to value types, CF types mapping to reference 
>> types, and ObjC classes and protocols mapping to reference types.
>> 
>>> Has this proposal's use against libdispatch been evaluated? I would love to 
>>> see `dispatch_async(_:_:)` become `dispatch_queue.async(function:)`.
>> 
>> IIRC, the heuristics didn’t work so well, but it should be possible to 
>> swift_name lib dispatch.
> 
> swift_name is very useful for libDispatch and is showing success, so the 
> manual annotation portion of this proposal fits very well. The inference 
> heuristics are currently not tuned well for libDispatch, and adjusting them 
> is probably future work. In the mean time, manual annotation in the C API is 
> not too burdensome and a definite improvement over overlays.
> 
>> 
>>      - Doug
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to