-
Notifications
You must be signed in to change notification settings - Fork 218
Commit 5e56b5c
committed
Split augmentations into improved part files and augmentation declarations.
Unifies "augmentation libraries" and part files.
Part files can have imports, exports and further part files.
Part files can use configurable URIs.
A `part of` directive can no longer use a library name.
Part files inherit the imports of their parent file, and can
extend or shadow those with their own imports.
Augmentation declarations can occur in any part or library file.
An augmentation must occur "below" the declaration it augments:
Either later in the same file ("below" when viewing code),
or in the file-tree of a part file of the same file ("below" in
the part-file tree of the library).
This ensures that the original declaration occurs above all
augmentations of it, and that all augmentations of the same
original declaration occur on a single path down the part-file tree
of the library. What again ensures that reordering `part` directives
does not change the order of augmentations.
Changed the lexical scope of augmenting class-like declarations
(declarations with a member scope) to only contain the members
declared inside the same class-like declaration, not the collection
of all members declared by all declarations with the same name.
Rewrote the part about applying augmentations. This is more
speculative since it doesn't provide a complete definition,
but more of a pattern for extending semantics that assume a
name refers to a single declaration, into one where a name
denotes a set (stack depending on augmentation application order),
of individual syntactic declarations.
The existing semi-syntactic "merging" may not be a viable
specification approach, since it requires merging code
from different scopes into a single scope. That's not impossible,
we also move code around for mixin applications, but it's also
easy to get wrong.1 parent 060b26d commit 5e56b5cCopy full SHA for 5e56b5c
File tree
Expand file treeCollapse file tree
2 files changed
+422
-497
lines changedFilter options
- working/augmentation-libraries
Expand file treeCollapse file tree
2 files changed
+422
-497
lines changed
0 commit comments