Re-reading my post in the morning...
On 06/14/2017 11:44 PM, Peter Levart wrote:
In j.l.Module:
There are two places in the same method that contain exactly the same
fragment of code:
566 if (targets.contains(EVERYONE_MODULE) ||
targets.contains(other))
567 return true;
568 if (other != EVERYONE_MODULE
569 && !other.isNamed() &&
targets.contains(ALL_UNNAMED_MODULE))
570 return true;
Perhaps this could be factored out into separate private method which
could also be made a little more optimal (when other ==
EVERYONE_MODULE and targets does not contain it, it is looked-up twice
currently). For example:
private static boolean isIncludedIn(Module module, Set<Module> targets) {
return
targets != null && (
targets.contains(EVERYONE_MODULE) ||
!module.isNamed() && targets.contains(ALL_UNNAMED_MODULE)
|| // ALL_UNNAMED_MODULE.isNamed() == false
module != EVERYONE_MODULE && module != ALL_UNNAMED_MODULE
&& targets.contains(module)
);
}
...this last method is not entirely correct. if called as
isIncluded(EVERYONE_MODULE, targets) and targets does not contain
EVERYONE_MODULE but it contains ALL_UNNAMED_MODULE, the method returns
true, because EVERYONE_MODULE.isNamed() returns false, which is not
correct I think. The correct logic would be this:
private static boolean isIncludedIn(Module module, Set<Module> targets) {
return
targets != null && (
targets.contains(EVERYONE_MODULE) ||
module != EVERYONE_MODULE && !module.isNamed() &&
targets.contains(ALL_UNNAMED_MODULE) || // ALL_UNNAMED_MODULE.isNamed()
== false
module != EVERYONE_MODULE && module != ALL_UNNAMED_MODULE
&& targets.contains(module)
);
}
Regards, Peter