[swift-users] Custom operators in a framework
Jordan Rose
jordan_rose at apple.com
Fri Feb 3 19:14:15 CST 2017
Interesting. I actually see two errors:
/Users/jrose/Desktop/SwifterJSON/App/AppDelegate.swift:19:18: error: ambiguous operator declarations found for operator
json["root"] &= 4
^
<unknown>:0: note: found this matching operator declaration
<unknown>:0: note: found this matching operator declaration
/Users/jrose/Desktop/SwifterJSON/App/AppDelegate.swift:19:18: error: operator is not a known binary operator
json["root"] &= 4
^
which actually seems correct in retrospect: '&=' is already a valid operator in the 'Swift' library, and you're redefining it rather than just reusing that definition. It works if I either remove your `infix operator &=` declaration (and leave all the implementations in place), or if I change to an operator that isn't already defined. Can you file a bug at bugs.swift.org <http://bugs.swift.org/> for the lousy diagnostics, at least?
Jordan
> On Feb 3, 2017, at 11:34, Rien <Rien at Balancingrock.nl> wrote:
>
> This is the “defining” package/module:
>
> https://github.com/Balancingrock/SwifterJSON <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 <http://balancingrock.nl/>
> Blog: http://swiftrien.blogspot.com <http://swiftrien.blogspot.com/>
> Github: http://github.com/Balancingrock <http://github.com/Balancingrock>
> Project: http://swiftfire.nl <http://swiftfire.nl/>
>
>
>
>
>
>> On 03 Feb 2017, at 18:36, Jordan Rose <jordan_rose at apple.com <mailto: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 <mailto: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 <http://balancingrock.nl/>
>>> Blog: http://swiftrien.blogspot.com <http://swiftrien.blogspot.com/>
>>> Github: http://github.com/Balancingrock <http://github.com/Balancingrock>
>>> Project: http://swiftfire.nl <http://swiftfire.nl/>
>>>
>>>
>>>
>>>
>>>
>>>> On 03 Feb 2017, at 18:14, Jordan Rose <jordan_rose at apple.com <mailto: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 <mailto: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 <http://balancingrock.nl/>
>>>>> Blog: http://swiftrien.blogspot.com <http://swiftrien.blogspot.com/>
>>>>> Github: http://github.com/Balancingrock <http://github.com/Balancingrock>
>>>>> Project: http://swiftfire.nl <http://swiftfire.nl/>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> swift-users mailing list
>>>>> swift-users at swift.org <mailto: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/62dc14bd/attachment.html>
More information about the swift-users
mailing list