[swift-users] Custom operators in a framework
Rien
Rien at Balancingrock.nl
Fri Feb 3 13:34:23 CST 2017
This is the “defining” package/module:
https://github.com/Balancingrock/SwifterJSON
For the consuming package simply generate a new executable and put the following in main.swift:
import SwifterJSON
// Note: Error disappears when the line below is un-commented
// infix operator &=
var json = VJson()
json["root"] &= 4
print(json.code)
(seems I have hit a snag with github, otherwise I would create a new repo for the executable… sorry for that.)
Regards,
Rien
Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Balancingrock
Project: http://swiftfire.nl
> On 03 Feb 2017, at 18:36, Jordan Rose <jordan_rose at apple.com> wrote:
>
> The operator itself. If you’re not seeing that behavior, that’s a bug! Do you have a small test case that reproduces it? (I guess it would take two modules regardless, so either a SwiftPM package or an Xcode project would do it.)
>
> Jordan
>
>> On Feb 3, 2017, at 09:34, Rien <Rien at Balancingrock.nl> wrote:
>>
>> Are you referring to the definition of the operator (infix…) or the availability of the function that defines the operator?
>>
>> The functions are available, but I have to repeat the “infix…" everywhere I need them.
>>
>> I.e. I have a:
>>
>> infix operator &=
>>
>> And when I use that from another module I get “Operator is not a known binary operator”
>>
>> Once I repeat the "infix operator &=“ at the start of the file it works fine.
>>
>> Regards,
>> Rien
>>
>> Site: http://balancingrock.nl
>> Blog: http://swiftrien.blogspot.com
>> Github: http://github.com/Balancingrock
>> Project: http://swiftfire.nl
>>
>>
>>
>>
>>
>>> On 03 Feb 2017, at 18:14, Jordan Rose <jordan_rose at apple.com> wrote:
>>>
>>> Operator declarations are actually public all the time, not internal. That’s itself probably a bug, but not the world-limiting one you’re concerned about.
>>>
>>> Jordan
>>>
>>>
>>>> On Feb 3, 2017, at 01:18, Rien via swift-users <swift-users at swift.org> wrote:
>>>>
>>>> It is possible to define custom operators in a framework, but it is not possible to assign access levels to them.
>>>>
>>>> As a consequence they are module internal and cannot be used outside the framework.
>>>>
>>>> Each project needs to redefine the custom operators in order to use them in that project.
>>>>
>>>> What is the rationale behind that?
>>>>
>>>> Or is it a bug?
>>>>
>>>> Are there other ways to accomplish this?
>>>>
>>>> Regards,
>>>> Rien
>>>>
>>>> Site: http://balancingrock.nl
>>>> Blog: http://swiftrien.blogspot.com
>>>> Github: http://github.com/Balancingrock
>>>> Project: http://swiftfire.nl
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> swift-users mailing list
>>>> swift-users at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-users
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170203/4c737462/attachment.html>
More information about the swift-users
mailing list