Implement SE-0117.

One minor revision: this lifts the proposed restriction against
overriding a non-open method with an open one.  On reflection,
that was inconsistent with the existing rule permitting non-public
methods to be overridden with public ones.  The restriction on
subclassing a non-open class with an open class remains, and is
in fact consistent with the existing access rule.
This commit is contained in:
John McCall
2016-07-29 14:49:04 -07:00
parent 328866ace9
commit afdda3d107
67 changed files with 1234 additions and 903 deletions

View File

@@ -53,7 +53,7 @@ const uint16_t VERSION_MAJOR = 0;
/// in source control, you should also update the comment to briefly
/// describe what change you made. The content of this comment isn't important;
/// it just ensures a conflict if two people change the module format.
const uint16_t VERSION_MINOR = 259; // Last change: drop explicitlyEscaping
const uint16_t VERSION_MINOR = 260; // Last change: open
using DeclID = PointerEmbeddedInt<unsigned, 31>;
using DeclIDField = BCFixed<31>;
@@ -291,8 +291,9 @@ enum class AccessibilityKind : uint8_t {
FilePrivate,
Internal,
Public,
Open,
};
using AccessibilityKindField = BCFixed<2>;
using AccessibilityKindField = BCFixed<3>;
// These IDs must \em not be renumbered or reordered without incrementing
// VERSION_MAJOR.