[swift-evolution] [Discussion] A Problem With SE-0025?
Robert Widmann
devteam.codafi at gmail.com
Thu Jun 16 00:07:45 CDT 2016
I think this was the original intent of SE-0025, but it is subject to the issue I raised in the root: If the entire decl is declaration-private, then it cannot be constructed because its members are also declaration-private. We can forbid it at the top level but that doesn't solve the problem for inner classes and we'd have to needlessly special-case the grammar. We could solve it with a diagnostic for top-level declaration-private aggregates but is that really a good solution? Then again, we could raise the access level of declaration-private members with no access modifier but then we'd break containment and we're back to square one because declaration-private now just effectively means fileprivate for this one huge use case.
~Robert Widmann
2016/06/15 22:02、Charlie Monroe <charlie at charliemonroe.net> のメッセージ:
> Wouldn't this get solved by ditching fileprivate (which would be /is right now/ the default behavior for private) and introduce a more private level instead, e.g. "declaration" or "scope"
>
> /// File A
>
> public struct MyStruct {
> declaration var x: Int
> private var y: Int
> internal var z: Int
>
> init() {
> x = 0
> y = 1
> z = 2
> }
> }
>
> /// Within the same file
> let str = MyStruct()
> str.x // Error
> str.y // OK
> str.z // OK
>
> /// File B
>
> /// Another file
> let str = MyStruct()
> str.x // Error
> str.y // Error
> str.z // OK
>
> I know that this goes in the other direction than the original proposal, but it would solve all these issues, while fully preserving backward compatibility. Am I missing something?
>
>
>> On Jun 16, 2016, at 6:30 AM, Robert Widmann via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> Yes, we agree. Can we please discuss what to do about SE-0025?
>>
>> ~Robert Widmann
>>
>> 2016/06/15 21:18、Charles Srstka <cocoadev at charlessoft.com> のメッセージ:
>>
>>>> On Jun 15, 2016, at 11:04 PM, Charles Srstka via swift-evolution <swift-evolution at swift.org> wrote:
>>>>
>>>> Result is that the property is only accessible from inside its parent type.
>>>
>>> *inside the type’s parent type
>>>
>>> Charles
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160615/75b43a14/attachment.html>
More information about the swift-evolution
mailing list