diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ.log b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ.log new file mode 100644 index 000000000000..365b8b6df331 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/StringConstantChangeWithECJ/Server.class +End of files +Compiling files: +src/Server.java +End of files +Cleaning output files: +out/production/StringConstantChangeWithECJ/Client.class +End of files +Compiling files: +src/Client.java +End of files \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/Server.java.new b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/Server.java.new new file mode 100644 index 000000000000..23f1c20426cb --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/Server.java.new @@ -0,0 +1,3 @@ +class Server { + static final String s = "ChangedStaticFinal"; +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Client.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Client.java new file mode 100644 index 000000000000..4dd6a1b91722 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Client.java @@ -0,0 +1,5 @@ +class Client { + public static void main(String[] args) { + System.out.println(Server.s); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Server.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Server.java new file mode 100644 index 000000000000..8a24f1bfbdd7 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/stringConstantChangeWithECJ/src/Server.java @@ -0,0 +1,3 @@ +class Server { + static final String s = "StaticFinal"; +} \ No newline at end of file diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java index 0a301137aa05..cee112fd260a 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java @@ -32,7 +32,7 @@ import java.util.function.Supplier; public class Mappings { private final static Logger LOG = Logger.getInstance(Mappings.class); public static final String PROCESS_CONSTANTS_NON_INCREMENTAL_PROPERTY = "compiler.process.constants.non.incremental"; - private final boolean myProcessConstantsIncrementally = !Boolean.valueOf(System.getProperty(PROCESS_CONSTANTS_NON_INCREMENTAL_PROPERTY, "false")); + private boolean myProcessConstantsIncrementally = !Boolean.valueOf(System.getProperty(PROCESS_CONSTANTS_NON_INCREMENTAL_PROPERTY, "false")); private final static String CLASS_TO_SUBCLASSES = "classToSubclasses.tab"; private final static String CLASS_TO_CLASS = "classToClass.tab"; @@ -175,6 +175,10 @@ public class Mappings { } } + public void setProcessConstantsIncrementally(boolean processInc) { + myProcessConstantsIncrementally = processInc; + } + public String valueOf(final int name) { return myContext.getValue(name); } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 11410227eff5..382ab22a4476 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -162,6 +162,9 @@ public final class JavaBuilder extends ModuleLevelBuilder { COMPILING_TOOL.set(context, compilingTool); SHOWN_NOTIFICATIONS.set(context, Collections.synchronizedSet(new HashSet<>())); COMPILER_USAGE_STATISTICS.set(context, new ConcurrentHashMap<>()); + if (!isJavac(compilingTool)) { + context.getProjectDescriptor().dataManager.getMappings().setProcessConstantsIncrementally(false); + } JavaBackwardReferenceIndexWriter.initialize(context); for (JavacFileReferencesRegistrar registrar : JpsServiceManager.getInstance().getExtensions(JavacFileReferencesRegistrar.class)) { if (registrar.isEnabled()) { diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java index 1c97cd0a0c97..342ef092b92c 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java @@ -16,6 +16,9 @@ package org.jetbrains.ether; import org.jetbrains.jps.model.JpsModuleRootModificationUtil; +import org.jetbrains.jps.model.java.JpsJavaExtensionService; +import org.jetbrains.jps.model.java.compiler.JavaCompilers; +import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerConfiguration; import org.jetbrains.jps.model.module.JpsModule; /** @@ -87,6 +90,14 @@ public class FieldPropertyTest extends IncrementalTestCase { doTest(); } + public void testStringConstantChangeWithECJ() { + setupInitialProject(); + final JpsJavaCompilerConfiguration config = JpsJavaExtensionService.getInstance().getCompilerConfiguration(myProject); + config.setJavaCompilerId(JavaCompilers.ECLIPSE_ID); + + doTestBuild(1); + } + public void testStringConstantLessAccessible() { doTest(); }