Skip to content

Commit bb062b1

Browse files
Kordyjanzarechenskiy
authored andcommitted
Fixes handling dependencies with multiple output folders
1 parent 4ea4423 commit bb062b1

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

kotlin-eclipse-core/src/org/jetbrains/kotlin/core/utils/ProjectUtils.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,22 @@ object ProjectUtils {
7777
}
7878

7979
@JvmStatic
80-
fun getOutputFolder(javaProject: IJavaProject): IFolder? =
80+
fun getDefaultOutputFolder(javaProject: IJavaProject): IFolder? =
8181
ResourcesPlugin.getWorkspace().root.findMember(javaProject.outputLocation) as? IFolder
8282

83+
@JvmStatic
84+
fun getAllOutputFolders(javaProject: IJavaProject): List<IFolder> =
85+
javaProject.getResolvedClasspath(true)
86+
.asSequence()
87+
.filter { it.entryKind == IClasspathEntry.CPE_SOURCE }
88+
.map { it.outputLocation }
89+
.let { it + javaProject.outputLocation }
90+
.filterNotNull()
91+
.distinct()
92+
.mapNotNull { ResourcesPlugin.getWorkspace().root.findMember(it) as? IFolder }
93+
.filter { it.exists() }
94+
.toList()
95+
8396
fun getSourceFiles(project: IProject): List<KtFile> =
8497
KotlinPsiManager.getFilesByProject(project)
8598
.map { KotlinPsiManager.getParsedFile(it) }
@@ -164,10 +177,9 @@ object ProjectUtils {
164177
}
165178

166179
if (includeBinFolders) {
167-
val outputFolder = ProjectUtils.getOutputFolder(javaProject)
168-
if (outputFolder != null && outputFolder.exists()) {
169-
orderedFiles.add(outputFolder.location.toFile())
170-
}
180+
getAllOutputFolders(javaProject)
181+
.map { it.location.toFile() }
182+
.toCollection(orderedFiles)
171183
}
172184

173185
return orderedFiles.toList()

kotlin-eclipse-test-framework/src/org/jetbrains/kotlin/testframework/utils/TestJavaProject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public void clean() {
234234
try {
235235
cleanSourceFolder();
236236

237-
IFolder outputFolder = ProjectUtils.getOutputFolder(getJavaProject());
237+
IFolder outputFolder = ProjectUtils.getDefaultOutputFolder(getJavaProject());
238238
ProjectUtils.cleanFolder(outputFolder);
239239
ProjectUtils.cleanFolder(KotlinJavaManager.INSTANCE.getKotlinBinFolderFor(project));
240240
} catch (JavaModelException e) {

0 commit comments

Comments
 (0)