|AbstractChangeFactory.fillRequiredDifferences() may cause circular dependencies [message #1836325]
||Tue, 29 December 2020 02:41
| Akira Asakawa
Registered: September 2020
I'm using EMF compare 18.104.22.168003070301 with custom macroscopic differences.
It seems to me that the execution of fillRequiredDifferencesForMacroToMacro() and fillRequiredDifferencesForUnitToMacro() by fillRequiredDifferences() is not necessary.
As of 507177 , refines/refinedBy are now merged together, so requires/requiredBy is no longer needed. However, since refines are handled by getDirectResultingMerges(), but requires/requiredBy are handled by getDirectMergeDependencies(), depending on the direction of the merge, a cycle of preconditions may occur if both of these are configured.
The two ends are different, but the overview is as above, and the pathways it adds are similar.
And these will be merged properly even if you don't add them, because the dependency when merging forward with AbstractMerger is as follows.
- getDirectMergeDependencies(extension)'s result contains "refinedBy(extension.refinedBy)"
- getDirectMergeDependencies(extension.refinedBy)'s result contains "requires(extension.refinedBy.requires)"
- getDirectResultingMerges(extension.refinedBy.requires)'s result contains "refines(extension.refinedBy.requiredBy.refines)"
- Merging "extension" will result in all paths up to "extension.requires.refines" being merged
- If you use "extension.requiredBy.refines" as a starting point, all paths up to "extension" will be merged as well
Powered by FUDForum
. Page generated in 0.01671 seconds