fix module-info integrate after errors (IDEA-181208)

This commit is contained in:
Eugene Zhuravlev
2017-10-30 16:21:53 +03:00
parent 7a21735d70
commit 29ea6cca1f
9 changed files with 53 additions and 3 deletions
@@ -0,0 +1,7 @@
package ppp;
public class Util {
public static void perform() {
System.out.println("Util.perform");
}
}
@@ -0,0 +1,9 @@
package qqq;
import ppp.*;
public class Client {
public void perform() { error
Util.perform();
}
}
@@ -0,0 +1,9 @@
package qqq;
import ppp.*;
public class Client {
public void perform() {
Util.perform();
}
}
@@ -2340,8 +2340,13 @@ public class Mappings {
if (modulesDiff.unchanged()) {
return;
}
for (ModuleRepr moduleRepr : modulesDiff.added()) {
myDelta.addChangedClass(moduleRepr.name); // need this for integrate
}
for (ModuleRepr removedModule : modulesDiff.removed()) {
myDelta.addDeletedClass(removedModule, fileName);
myDelta.addDeletedClass(removedModule, fileName); // need this for integrate
myPresent.affectDependentModules(state, removedModule.name, null, true);
}
@@ -2352,7 +2357,7 @@ public class Mappings {
boolean affectDeps = false;
UsageConstraint constraint = null;
myDelta.addChangedClass(moduleRepr.name);
myDelta.addChangedClass(moduleRepr.name); // need this for integrate
if (d.versionChanged()) {
final int version = moduleRepr.getVersion();
@@ -95,7 +95,7 @@ public abstract class IncrementalTestCase extends JpsBuildTestCase {
}
}
private void modify(int stage) {
protected void modify(int stage) {
final String removedSuffix = stage == 0? ".remove" : ".remove" + stage;
final String newSuffix = stage == 0? ".new" : ".new" + stage;
@@ -3,6 +3,7 @@ package org.jetbrains.ether;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.jps.builders.BuildResult;
import org.jetbrains.jps.builders.CompileScopeTestBuilder;
import org.jetbrains.jps.model.JpsModuleRootModificationUtil;
import org.jetbrains.jps.model.module.JpsModule;
@@ -84,6 +85,17 @@ public class Java9Test extends IncrementalTestCase {
buildResult.assertSuccessful();
}
public void testIntegrateAfterErrors() {
setupInitialProject();
setupModules();
doBuild(CompileScopeTestBuilder.rebuild().allModules()).assertFailed();
modify(0);
doBuild(CompileScopeTestBuilder.make().allModules()).assertSuccessful();
modify(1);
doBuild(CompileScopeTestBuilder.make().allModules()).assertFailed();
}
protected BuildResult doTestBuild(int makesCount) {
setupModules();
return super.doTestBuild(makesCount);