Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi, this is a change to improve behavior of components inheritance.
I added some tests.
Instantiate inherited component
It used to be impossible to instantiate components declared by an inherited base:
Clauses from base's nested instances
Clauses within nested instances of base components were be missing:
But the clause from
Nested
would disapear when inherited:Open question: overriding and clauses from nested instance of base
As a side-effect of fixing previous point, I allowed clauses from nested instance of base component to be inherited in the derived component:
Arguments in favor
The rationale for this behavior is that we may want to expect the same result whether
.init n = Nested
is located inBase
orDerived
:The second argument is that we get the same behavior when the clause is "orphan" (relation is not visible in a lexical lookup):
Opposite argument
The rationale for the opposite behavior would be that a clause relates in priority to the visible relation declaration in a lexical lookup (when one can be found). Hence if there is an override applying to that relation declaration, the clause should be discarded.
Implementing this behavior would be a bit more complicated.