summaryrefslogtreecommitdiff
path: root/jps
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-04-03 16:27:26 -0700
committerTor Norbye <tnorbye@google.com>2013-04-03 16:27:26 -0700
commitd1a59a0799588a226d255d9b45c4825b19651554 (patch)
treec9759b94ddad742db08b6662f52a62e0401491c1 /jps
parent2bd2b7c2623d4266384e890271869efc044aabff (diff)
downloadidea-d1a59a0799588a226d255d9b45c4825b19651554.tar.gz
Snapshot dc7fe9a777db5bc87a5b1ad4bfe40a547fc7d49a from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: Iae1c655b8958fc7603a78c675e4a4b942a1fccd4
Diffstat (limited to 'jps')
-rw-r--r--jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderUtil.java11
-rw-r--r--jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ElemType.java16
-rw-r--r--jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/Mappings.java31
-rw-r--r--jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java25
-rw-r--r--jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java5
5 files changed, 57 insertions, 31 deletions
diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderUtil.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderUtil.java
index 63773402e79b..1229aa565b4b 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderUtil.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderUtil.java
@@ -23,6 +23,7 @@ import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.ProjectPaths;
+import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.java.dependencyView.Callbacks;
import org.jetbrains.jps.builders.java.dependencyView.Mappings;
@@ -288,15 +289,17 @@ public class JavaBuilderUtil {
private final CompileContext myContext;
private final Set<JpsModule> myChunkModules;
private final Map<JpsModule, Set<JpsModule>> myCache = new HashMap<JpsModule, Set<JpsModule>>();
+ private final BuildRootIndex myBuildRootIndex;
private ModulesBasedFileFilter(CompileContext context, ModuleChunk chunk) {
myContext = context;
myChunkModules = chunk.getModules();
+ myBuildRootIndex = context.getProjectDescriptor().getBuildRootIndex();
}
@Override
public boolean accept(File file) {
- final JavaSourceRootDescriptor rd = myContext.getProjectDescriptor().getBuildRootIndex().findJavaRootDescriptor(myContext, file);
+ final JavaSourceRootDescriptor rd = myBuildRootIndex.findJavaRootDescriptor(myContext, file);
if (rd == null) {
return true;
}
@@ -311,5 +314,11 @@ public class JavaBuilderUtil {
}
return Utils.intersects(moduleOfFileWithDependencies, myChunkModules);
}
+
+ @Override
+ public boolean belongsToCurrentChunk(File file) {
+ final JavaSourceRootDescriptor rd = myBuildRootIndex.findJavaRootDescriptor(myContext, file);
+ return rd != null && myChunkModules.contains(rd.target.getModule());
+ }
}
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ElemType.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ElemType.java
index 9d9b7c652770..3d311b18ee3a 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ElemType.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ElemType.java
@@ -38,5 +38,19 @@ public enum ElemType {
ANNOTATION_TYPE,
/** Package declaration */
- PACKAGE
+ PACKAGE,
+
+ /**
+ * Type parameter declaration
+ *
+ * @since 1.8
+ */
+ TYPE_PARAMETER,
+
+ /**
+ * Use of a type
+ *
+ * @since 1.8
+ */
+ TYPE_USE
}
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 fe3f28831ea1..03014474592b 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
@@ -785,9 +785,16 @@ public class Mappings {
public boolean accept(File file) {
return true;
}
+
+ @Override
+ public boolean belongsToCurrentChunk(File file) {
+ return true;
+ }
};
boolean accept(File file);
+
+ boolean belongsToCurrentChunk(File file);
}
private class Differential {
@@ -955,7 +962,7 @@ public class Mappings {
final Collection<File> filesToCompile,
final Collection<File> compiledFiles,
final Collection<File> affectedFiles,
- final DependentFilesFilter filter,
+ @NotNull final DependentFilesFilter filter,
@Nullable final Callbacks.ConstantAffectionResolver constantSearch) {
delta.myRemovedFiles = removed;
@@ -1757,21 +1764,19 @@ public class Mappings {
debug("Processing added classes:");
- if (!myEasyMode) {
+ if (!myEasyMode && myFilter != null) {
// checking if this newly added class duplicates already existing one
for (ClassRepr c : addedClasses) {
if (!c.isLocal() && !c.isAnonymous() && isEmpty(c.getOuterClassName())) {
final File currentlyMappedTo = myClassToSourceFile.get(c.name);
- if (currentlyMappedTo != null && !FileUtil.filesEqual(currentlyMappedTo, srcFile) && currentlyMappedTo.exists()) {
- if (myFilter == null || myFilter.accept(currentlyMappedTo)) {
- // Same classes from different source files.
- // Schedule for recompilation both to make possible 'duplicate sources' error evident
- debug("Scheduling for recompilation duplicated sources: ", currentlyMappedTo.getPath() + "; " + srcFile.getPath());
- myAffectedFiles.add(currentlyMappedTo);
- myAffectedFiles.add(srcFile);
- myCompiledFiles.remove(srcFile); // this will force sending the file to compilation again
- return; // do not process this file because it should not be integrated
- }
+ if (currentlyMappedTo != null && !FileUtil.filesEqual(currentlyMappedTo, srcFile) && currentlyMappedTo.exists() && myFilter.belongsToCurrentChunk(currentlyMappedTo)) {
+ // Same classes from different source files.
+ // Schedule for recompilation both to make possible 'duplicate sources' error evident
+ debug("Scheduling for recompilation duplicated sources: ", currentlyMappedTo.getPath() + "; " + srcFile.getPath());
+ myAffectedFiles.add(currentlyMappedTo);
+ myAffectedFiles.add(srcFile);
+ myCompiledFiles.remove(srcFile); // this will force sending the file to compilation again
+ return; // do not process this file because it should not be integrated
}
break;
}
@@ -1948,7 +1953,7 @@ public class Mappings {
final Collection<File> filesToCompile,
final Collection<File> compiledFiles,
final Collection<File> affectedFiles,
- final DependentFilesFilter filter,
+ @NotNull final DependentFilesFilter filter,
@Nullable final Callbacks.ConstantAffectionResolver constantSearch) {
return new Differential(delta, removed, filesToCompile, compiledFiles, affectedFiles, filter, constantSearch).differentiate();
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java
index 00dd3c747a25..fcfaca0b5729 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java
@@ -277,28 +277,23 @@ public class BuildMain {
});
}
- private static void ensureLogConfigExists(final File logConfig) {
+ private static void ensureLogConfigExists(final File logConfig) throws IOException {
if (!logConfig.exists()) {
FileUtil.createIfDoesntExist(logConfig);
- try {
- final InputStream in = BuildMain.class.getResourceAsStream("/" + DEFAULT_LOGGER_CONFIG);
- if (in != null) {
+ final InputStream in = BuildMain.class.getResourceAsStream("/" + DEFAULT_LOGGER_CONFIG);
+ if (in != null) {
+ try {
+ final FileOutputStream out = new FileOutputStream(logConfig);
try {
- final FileOutputStream out = new FileOutputStream(logConfig);
- try {
- FileUtil.copy(in, out);
- }
- finally {
- out.close();
- }
+ FileUtil.copy(in, out);
}
finally {
- in.close();
+ out.close();
}
}
- }
- catch (IOException e) {
- LOG.error(e);
+ finally {
+ in.close();
+ }
}
}
}
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 90f0921e52c9..3595aa26927a 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
@@ -391,7 +391,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
return JavaCompilers.ECLIPSE_ID.equalsIgnoreCase(compilerId) || JavaCompilers.ECLIPSE_EMBEDDED_ID.equalsIgnoreCase(compilerId);
}
- private void submitAsyncTask(CompileContext context, final Runnable taskRunnable) {
+ private void submitAsyncTask(final CompileContext context, final Runnable taskRunnable) {
final TasksCounter counter = COUNTER_KEY.get(context);
assert counter != null;
@@ -402,6 +402,9 @@ public class JavaBuilder extends ModuleLevelBuilder {
try {
taskRunnable.run();
}
+ catch (Throwable e) {
+ context.processMessage(new CompilerMessage(BUILDER_NAME, e));
+ }
finally {
counter.decTaskCounter();
}