[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