Language Devel / DIPs /
DIP3
Difference (previous author) (Change, Edit, normal page display)
Changed: 1c1,38
Describe the new page here. |
= DIP3: Remove inheritance protection = [[table][distance=0][separator==][type=invisible] DIP: = 3 Title: = Remove inheritance protection Version: = 1 Status: = Draft Created: = 2009-07-11 Last Modified: = 2009-07-11 Language: = D2 Breaks: = Probably little Related Issue: = Bugzilla:177 ] == Abstract = Non-public inheritance in a single inheritance language that has a single root object hierarchy makes little sense. == Rationale = Hiding 'Object' level attributes from a class leads to strange behavior. == Description = The compiler is behaving as spec'ed, but the value and correctness of this part of the spec is in question. The suggested change, effectively drop one line from the grammar. SuperClass?: Identifier Protection Identifier // delete An alternative would be for Object to always be forced to public visibility even if there's a break in the public chain up to it. == Copyright = This document has been placed in the Public Domain. |
DIP3: Remove inheritance protection
|
Abstract
Non-public inheritance in a single inheritance language that has a single root object hierarchy makes little sense.
Rationale
Hiding 'Object' level attributes from a class leads to strange behavior.
Description
The compiler is behaving as spec'ed, but the value and correctness of this part of the spec is in question.
The suggested change, effectively drop one line from the grammar.
SuperClass?: Identifier Protection Identifier // deleteAn alternative would be for Object to always be forced to public visibility even if there's a break in the public chain up to it.
Copyright
This document has been placed in the Public Domain.