From 681cc35b77d69ebebff8433b0a3c2edaf242652e Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 20 Oct 2016 10:58:13 +0300 Subject: [PATCH] build javac ast index only when compilation invoked from IDE It makes no sense to build it in standalone mode and this also may lead to exceptions in case of improperly configured classloaders (IDEA-162877) --- .../impl/src/com/intellij/compiler/server/BuildManager.java | 3 +++ .../jetbrains/jps/builders/impl/java/JavacCompilerTool.java | 6 +++++- .../jps/model/java/compiler/JpsJavaCompilerOptions.java | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java index 7b2acf0ae6be..313e6d5c4b58 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java @@ -17,6 +17,7 @@ package com.intellij.compiler.server; import com.intellij.ProjectTopics; import com.intellij.compiler.CompilerConfiguration; +import com.intellij.compiler.CompilerReferenceService; import com.intellij.compiler.CompilerWorkspaceConfiguration; import com.intellij.compiler.impl.CompilerUtil; import com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration; @@ -104,6 +105,7 @@ import org.jetbrains.jps.cmdline.BuildMain; import org.jetbrains.jps.cmdline.ClasspathBootstrap; import org.jetbrains.jps.incremental.Utils; import org.jetbrains.jps.model.java.JpsJavaSdkType; +import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions; import org.jetbrains.jps.model.serialization.JpsGlobalLoader; import javax.tools.*; @@ -1081,6 +1083,7 @@ public class BuildManager implements Disposable { } cmdLine.addParameter("-D"+ GlobalOptions.COMPILE_PARALLEL_OPTION +"=" + Boolean.toString(config.PARALLEL_COMPILATION)); cmdLine.addParameter("-D"+ GlobalOptions.REBUILD_ON_DEPENDENCY_CHANGE_OPTION + "=" + Boolean.toString(config.REBUILD_ON_DEPENDENCY_CHANGE)); + cmdLine.addParameter("-D" + JpsJavaCompilerOptions.COLLECT_REFERENCES_PROPERTY + "=" + CompilerReferenceService.isEnabled()); if (Boolean.TRUE.equals(Boolean.valueOf(System.getProperty("java.net.preferIPv4Stack", "false")))) { cmdLine.addParameter("-Djava.net.preferIPv4Stack=true"); diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/impl/java/JavacCompilerTool.java b/jps/jps-builders/src/org/jetbrains/jps/builders/impl/java/JavacCompilerTool.java index 79934f84cf92..4728ad40b57a 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/impl/java/JavacCompilerTool.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/impl/java/JavacCompilerTool.java @@ -16,6 +16,7 @@ package org.jetbrains.jps.builders.impl.java; import com.intellij.util.ExceptionUtil; +import com.intellij.util.SystemProperties; import com.sun.source.util.JavacTask; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,6 +25,7 @@ import org.jetbrains.jps.builders.java.JavaCompilingTool; import org.jetbrains.jps.javac.JavacMain; import org.jetbrains.jps.javac.ast.JavacReferencesCollector; import org.jetbrains.jps.model.java.compiler.JavaCompilers; +import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions; import javax.tools.*; import java.io.File; @@ -85,6 +87,8 @@ public class JavacCompilerTool extends JavaCompilingTool { @Override public void prepareCompilationTask(@NotNull JavaCompiler.CompilationTask task, @NotNull Collection options) { - JavacReferencesCollector.installOn((JavacTask)task); + if (SystemProperties.getBooleanProperty(JpsJavaCompilerOptions.COLLECT_REFERENCES_PROPERTY, false)) { + JavacReferencesCollector.installOn((JavacTask)task); + } } } diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/compiler/JpsJavaCompilerOptions.java b/jps/model-api/src/org/jetbrains/jps/model/java/compiler/JpsJavaCompilerOptions.java index 05229a4b88df..7bc726f5a312 100644 --- a/jps/model-api/src/org/jetbrains/jps/model/java/compiler/JpsJavaCompilerOptions.java +++ b/jps/model-api/src/org/jetbrains/jps/model/java/compiler/JpsJavaCompilerOptions.java @@ -19,6 +19,8 @@ package org.jetbrains.jps.model.java.compiler; * @author nik */ public class JpsJavaCompilerOptions { + public static final String COLLECT_REFERENCES_PROPERTY = "jps.javac.collect.references"; + public boolean DEBUGGING_INFO = true; public boolean GENERATE_NO_WARNINGS = false; public boolean DEPRECATION = true;