mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix dependencies direction in the assertion
This commit is contained in:
@@ -151,21 +151,40 @@ public abstract class ModuleLevelBuilder extends Builder {
|
||||
if (affected.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
final Set<Module> allowedModules = ProjectPaths.getModulesWithDependentsRecursively(currentChunk, true);
|
||||
|
||||
final Set<Module> chunkModules = currentChunk.getModules();
|
||||
final Map<Module, Set<Module>> cache = new HashMap<Module, Set<Module>>();
|
||||
final List<Pair<File, Module>> result = new ArrayList<Pair<File, Module>>();
|
||||
|
||||
for (File file : affected) {
|
||||
final RootDescriptor moduleAndRoot = context.getModuleAndRoot(file);
|
||||
if (moduleAndRoot == null) {
|
||||
continue;
|
||||
}
|
||||
final Module moduleOfFile = moduleAndRoot.module;
|
||||
if (!allowedModules.contains(moduleOfFile)) {
|
||||
result.add(Pair.create(file, moduleOfFile));
|
||||
if (chunkModules.contains(moduleOfFile)) {
|
||||
continue;
|
||||
}
|
||||
Set<Module> moduleOfFileWithDependencies = cache.get(moduleOfFile);
|
||||
if (moduleOfFileWithDependencies == null) {
|
||||
moduleOfFileWithDependencies = ProjectPaths.getModulesWithDependentsRecursively(moduleOfFile, true);
|
||||
cache.put(moduleOfFile, moduleOfFileWithDependencies);
|
||||
}
|
||||
if (intersects(moduleOfFileWithDependencies, chunkModules)) {
|
||||
continue;
|
||||
}
|
||||
result.add(Pair.create(file, moduleOfFile));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static boolean intersects(Set<Module> set1, Set<Module> set2) {
|
||||
if (set1.size() < set2.size()) {
|
||||
return new HashSet<Module>(set1).removeAll(set2);
|
||||
}
|
||||
return new HashSet<Module>(set2).removeAll(set1);
|
||||
}
|
||||
|
||||
private static boolean chunkContainsAffectedFiles(CompileContext context, ModuleChunk chunk, final Set<File> affected) throws IOException {
|
||||
final Set<Module> chunkModules = new HashSet<Module>(chunk.getModules());
|
||||
if (!chunkModules.isEmpty()) {
|
||||
|
||||
@@ -181,9 +181,9 @@ public class ProjectPaths {
|
||||
return sourcePaths;
|
||||
}
|
||||
|
||||
public static Set<Module> getModulesWithDependentsRecursively(final ModuleChunk chunk, final boolean includeTests) {
|
||||
public static Set<Module> getModulesWithDependentsRecursively(final Module module, final boolean includeTests) {
|
||||
final Set<Module> result = new HashSet<Module>();
|
||||
collectPathsRecursively(chunk, ClasspathKind.compile(includeTests), new PathsGetter() {
|
||||
collectPathsRecursively(module, ClasspathKind.compile(includeTests), new HashSet<Module>(), new PathsGetter() {
|
||||
public void apply(Module module, ClasspathKind kind) {
|
||||
result.add(module);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user