From ee94a6471895e7d16cf958d1040fda38e84a5b13 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 20 Dec 2017 00:33:52 +0300 Subject: [PATCH] Explicitly request rebuild when untracked java file is removed Previously a rebuild was happenning because FileNotFoundException was thrown when getting psiFile of removed file. --- .../incremental/IncrementalJvmCompilerRunner.kt | 6 ++++++ .../javaToKotlinAndRemove/gradle-build.log | 14 ++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndRemove/gradle-build.log diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt index 070a6c2880e..52490df6f78 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt @@ -224,6 +224,12 @@ class IncrementalJvmCompilerRunner( for (javaFile in javaFiles) { if (!caches.platformCache.isTrackedFile(javaFile)) { + if (!javaFile.exists()) { + // todo: can we do this more optimal? + reporter.report { "Could not get changed for untracked removed java file $javaFile" } + return false + } + val psiFile = javaFile.psiFile() if (psiFile !is PsiJavaFile) { reporter.report { "[Precise Java tracking] Expected PsiJavaFile, got ${psiFile?.javaClass}" } diff --git a/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndRemove/gradle-build.log b/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndRemove/gradle-build.log new file mode 100644 index 00000000000..614e199c270 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndRemove/gradle-build.log @@ -0,0 +1,14 @@ +================ Step #1 ================= + +Compiling files: + src/TheClass.kt + src/other.kt +End of files +Exit code: OK + +================ Step #2 ================= + +Compiling files: +End of files +Exit code: OK +