process constants non-incrementally if non-javac compiler (e.g. ecj) is used (IDEA-250524)

GitOrigin-RevId: 8ce5335fdc6b7d774611242e3195046af6a31ed0
This commit is contained in:
Eugene Zhuravlev
2020-12-04 14:37:33 +01:00
committed by intellij-monorepo-bot
parent eb5ddd8ed1
commit 205dfea3f3
7 changed files with 42 additions and 1 deletions

View File

@@ -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

View File

@@ -0,0 +1,3 @@
class Server {
static final String s = "ChangedStaticFinal";
}

View File

@@ -0,0 +1,5 @@
class Client {
public static void main(String[] args) {
System.out.println(Server.s);
}
}

View File

@@ -0,0 +1,3 @@
class Server {
static final String s = "StaticFinal";
}

View File

@@ -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);
}

View File

@@ -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()) {

View File

@@ -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();
}