static and protection | FQ names and protection
    Bruno Medeiros 
    daiphoenixNO at SPAMlycos.com
       
    Fri Mar  3 03:15:05 PST 2006
    
    
  
John C wrote:
 > It appears that protection attributes on static class methods don't get
 > recognised. This compiles without errors:
 >
 >     module stuff;
 >
 >     class Visible {
 >         private static void hidden() {}
 >     }
 >
 >     -----8<-----
 >     module program;
 >
 >     import stuff;
 >
 >     void main() {
 >         Visible.hidden();
 >     }
 >
 > An error is issued if hidden() is at module level. I sometimes feel that
 > classes are second-class citizens in D.
 >
 >
Bruno Medeiros wrote:
> Jarrett Billingsley wrote:
>>
>> And the problem that the OP posted is most likely related to the 
>> "protection attributes mean nothing if you use a fully qualified name" 
>> bug.
>>
> No, I think it is more likely related to the bug of protection 
> attributes only working for instance members, and no other entities. For 
> example, protection attributes also don't work for classes or structs. 
> As in:
> 
>   private class Foo {  // 'private' is effectless
>     ...
>   }
> 
Anyway, I've commented and reported about this issue before, but didn't 
get Walter's opinion on it, so I don't know if he considers this a bug 
or not. Anyone knows about this? (well, Walter at least does for sure)
I can already see by the spec ( 
http://www.digitalmars.com/d/attribute.html ) that protection is 
currently only member-centric, but should we or not change (improve, 
IMO) this behavior?
I also would like to know about the issue of using fully qualified names 
ignores protection attributes:
   moduleFoo.privateFunc() // Compiles ok, shouldn't
Is it also a bug or not? (should well damn be!)
(Hum, starting to think we could improve our way of tracking bugs and 
design issues)
-- 
Bruno Medeiros - CS/E student
"Certain aspects of D are a pathway to many abilities some consider to 
be... unnatural."
    
    
More information about the Digitalmars-d-bugs
mailing list