[swift-users] Custom operators in a framework
Rien
Rien at Balancingrock.nl
Sat Feb 4 01:04:30 CST 2017
Facepalm!
Of course!, thanks for clearing that up!
I will file a bug report for the diagnostics.
Regards,
Rien
Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Balancingrock
Project: http://swiftfire.nl
> On 04 Feb 2017, at 02:14, Jordan Rose <jordan_rose at apple.com> wrote:
>
> 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 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
>>
>> 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
>>>>>
>>>>
>>>
>>
>
More information about the swift-users
mailing list