diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/KotlinCodegenFacade.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/KotlinCodegenFacade.java index 8485f9dbe85..75fb23a5e1a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/KotlinCodegenFacade.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/KotlinCodegenFacade.java @@ -21,7 +21,6 @@ import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; -import org.jetbrains.kotlin.load.kotlin.PackageClassUtils; import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetFile; @@ -61,10 +60,18 @@ public class KotlinCodegenFacade { ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); + doGenerateFiles(state.getFiles(), state, errorHandler); + } + + public static void doGenerateFiles( + @NotNull Collection files, + @NotNull GenerationState state, + @NotNull CompilationErrorHandler errorHandler + ) { MultiMap filesInPackages = new MultiMap(); MultiMap filesInMultifileClasses = new MultiMap(); - for (JetFile file : state.getFiles()) { + for (JetFile file : files) { if (file == null) throw new IllegalArgumentException("A null file given for compilation"); JvmFileClassInfo fileClassInfo = state.getFileClassesProvider().getFileClassInfo(file); @@ -79,20 +86,26 @@ public class KotlinCodegenFacade { Set obsoleteMultifileClasses = new HashSet(state.getObsoleteMultifileClasses()); for (FqName multifileClassFqName : Sets.union(filesInMultifileClasses.keySet(), obsoleteMultifileClasses)) { - ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); + doCheckCancelled(state); generateMultifileClass(state, multifileClassFqName, filesInMultifileClasses.get(multifileClassFqName), errorHandler); } Set packagesWithObsoleteParts = new HashSet(state.getPackagesWithObsoleteParts()); for (FqName packageFqName : Sets.union(packagesWithObsoleteParts, filesInPackages.keySet())) { - ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); + doCheckCancelled(state); generatePackage(state, packageFqName, filesInPackages.get(packageFqName), errorHandler); } - ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); + doCheckCancelled(state); state.getFactory().done(); } + private static void doCheckCancelled(GenerationState state) { + if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { + ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); + } + } + public static void generatePackage( @NotNull GenerationState state, @NotNull FqName packageFqName, diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java index 8d3d0c4e21a..278c0a1c786 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java @@ -141,9 +141,7 @@ public class KotlinJavaFileStubProvider files) { - PackageCodegen codegen = state.getFactory().forPackage(packageFqName, files); - codegen.generate(CompilationErrorHandler.THROW_EXCEPTION); - state.getFactory().asList(); + KotlinCodegenFacade.doGenerateFiles(files, state, CompilationErrorHandler.THROW_EXCEPTION); } @Override