From f98ebe53c0d27faa6a6f772a72aef82a4ab428d1 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 9 Feb 2012 19:47:44 +0100 Subject: [PATCH 1/3] better diagnostics --- .../compiler/rt/GroovyCompilerWrapper.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovyCompilerWrapper.java b/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovyCompilerWrapper.java index 4d32ba25904f..a9ce6893f049 100644 --- a/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovyCompilerWrapper.java +++ b/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovyCompilerWrapper.java @@ -161,14 +161,18 @@ public class GroovyCompilerWrapper { private static void processException(Exception exception, List collector, boolean forStubs) { if (exception instanceof GroovyRuntimeException) { addErrorMessage((GroovyRuntimeException) exception, collector); - } else if (forStubs) { - addMessageWithoutLocation(collector, "Groovyc stub generation failed: " + exception.getMessage(), false); - } else { - final StringWriter writer = new StringWriter(); - //noinspection IOResourceOpenedButNotSafelyClosed - exception.printStackTrace(new PrintWriter(writer)); - addMessageWithoutLocation(collector, writer.toString(), true); + return; } + + if (forStubs) { + collector.add(new CompilerMessage(CompilerMessage.INFORMATION, + "Groovyc stub generation failed", null, -1, -1)); + } + + final StringWriter writer = new StringWriter(); + //noinspection IOResourceOpenedButNotSafelyClosed + exception.printStackTrace(new PrintWriter(writer)); + collector.add(new CompilerMessage(forStubs ? CompilerMessage.INFORMATION : CompilerMessage.ERROR, writer.toString(), null, -1, -1)); } private static void addMessageWithoutLocation(List collector, String message, boolean error) { From f909e01facd6be336c8f64b37c7528494251e769 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 9 Feb 2012 20:45:44 +0100 Subject: [PATCH 2/3] separate groovy-rt from jps-server jars to prevent mysterious class loading conflicts --- build/scripts/layouts.gant | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index a092e36f46eb..e611d9f81413 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -157,6 +157,8 @@ def layoutFull(String home, String targetDirectory, String patchedDescriptorDir jar("jps-server.jar") { module("jps-builders") module("jps-model") + } + jar("groovy-rt.jar") { module("groovy-rt") } From 5b5b4a1a370f93bad4b609649ae5f40cc39c4391 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 9 Feb 2012 20:46:39 +0100 Subject: [PATCH 3/3] [jeka] clean compile server context per builder category --- .../jps/incremental/CompileContext.java | 47 +++++++++---------- .../jps/incremental/IncProjectBuilder.java | 2 + 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java index 6b1ac2a438ea..994633a6ecb0 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java @@ -171,36 +171,35 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler myFsState.beforeNextRoundStart(); } + public void clearContextRoundData() { + myFsState.clearContextRoundData(); + } + void onChunkBuildComplete(@NotNull ModuleChunk chunk) throws IOException { myDataManager.flush(true); - try { - if (!myErrorsFound && !myCancelStatus.isCanceled()) { - final boolean compilingTests = isCompilingTests(); - final DirtyMarkScope dirtyScope = compilingTests ? DirtyMarkScope.TESTS : DirtyMarkScope.PRODUCTION; - boolean marked = false; - for (Module module : chunk.getModules()) { - if (isMake()) { - // ensure non-incremental flag cleared - myNonIncrementalModules.remove(new Pair(module, dirtyScope)); - } - if (isProjectRebuild()) { - myFsState.markInitialScanPerformed(module, compilingTests); - } - final List roots = myRootsIndex.getModuleRoots(module); - for (RootDescriptor descriptor : roots) { - if (compilingTests? descriptor.isTestRoot : !descriptor.isTestRoot) { - marked |= myFsState.markAllUpToDate(getScope(), descriptor, myTsStorage, myCompilationStartStamp); - } - } + if (!myErrorsFound && !myCancelStatus.isCanceled()) { + final boolean compilingTests = isCompilingTests(); + final DirtyMarkScope dirtyScope = compilingTests ? DirtyMarkScope.TESTS : DirtyMarkScope.PRODUCTION; + boolean marked = false; + for (Module module : chunk.getModules()) { + if (isMake()) { + // ensure non-incremental flag cleared + myNonIncrementalModules.remove(new Pair(module, dirtyScope)); } - if (marked) { - processMessage(UptoDateFilesSavedEvent.INSTANCE); + if (isProjectRebuild()) { + myFsState.markInitialScanPerformed(module, compilingTests); + } + final List roots = myRootsIndex.getModuleRoots(module); + for (RootDescriptor descriptor : roots) { + if (compilingTests? descriptor.isTestRoot : !descriptor.isTestRoot) { + marked |= myFsState.markAllUpToDate(getScope(), descriptor, myTsStorage, myCompilationStartStamp); + } } } - } - finally { - myFsState.clearContextRoundData(); + if (marked) { + processMessage(UptoDateFilesSavedEvent.INSTANCE); + } } } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index 1399c69ed651..18e34921d719 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -441,6 +441,8 @@ public class IncProjectBuilder { } } while (nextPassRequired); + + context.clearContextRoundData(); } private void runProjectLevelBuilders(CompileContext context) throws ProjectBuildException {