Fix isFinal, isAbstract, isReadonly behaviour #453
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.
This should fix #434
TL;DR super subtle behaviour 😢: when defining a rule we specify an expression to select the classes we'd like to check, like
What happens when the runner evaluates the
->that(new IsAbstract())
is defined in the classArkitect\Rules\Spec
, in particularso here we try to evaluate the expression and if no violation is returned, then it means the class we are currently analyzing should be considered for the analysis. With the previous IsAbstract implementation the evaluate method contained this check:
meaning that if a class at least one of the attributes set, then it will be evaluated.
the fix in this PR reverts the check to
It one tests the behaviour of IsAbstract directly it may be induced to think the first one is the check needed 😢.
To avoid this kind of confusion we should probably separate the condition used to understand if a given class should be analyzed from the actual check, but this implies updating a gazillion of rules 😂