Fix support of directories as sources in build files (-Xbuild-file)
#KT-27775 Fixed
This commit is contained in:
+12
-2
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.cli.jvm.compiler
|
|||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.StandardFileSystems
|
import com.intellij.openapi.vfs.StandardFileSystems
|
||||||
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileManager
|
import com.intellij.openapi.vfs.VirtualFileManager
|
||||||
import com.intellij.psi.PsiJavaModule
|
import com.intellij.psi.PsiJavaModule
|
||||||
@@ -130,8 +131,17 @@ object KotlinToJVMBytecodeCompiler {
|
|||||||
|
|
||||||
for (module in chunk) {
|
for (module in chunk) {
|
||||||
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
||||||
val moduleSourceFiles = getAbsolutePaths(buildFile, module.getSourceFiles()).map(localFileSystem::findFileByPath)
|
val (moduleSourceDirs, moduleSourceFiles) =
|
||||||
val ktFiles = environment.getSourceFiles().filter { file -> file.virtualFile in moduleSourceFiles }
|
getAbsolutePaths(buildFile, module.getSourceFiles())
|
||||||
|
.mapNotNull(localFileSystem::findFileByPath)
|
||||||
|
.partition(VirtualFile::isDirectory)
|
||||||
|
|
||||||
|
val ktFiles = environment.getSourceFiles().filter { file ->
|
||||||
|
val virtualFile = file.virtualFile
|
||||||
|
virtualFile in moduleSourceFiles || moduleSourceDirs.any { dir ->
|
||||||
|
VfsUtilCore.isAncestor(dir, virtualFile, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!checkKotlinPackageUsage(environment, ktFiles)) return false
|
if (!checkKotlinPackageUsage(environment, ktFiles)) return false
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<modules>
|
||||||
|
<module name="main" outputDir="$TEMP_DIR$" type="java-production">
|
||||||
|
<sources path="$TESTDATA_DIR$/src"/>
|
||||||
|
</module>
|
||||||
|
</modules>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Return code: 0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
OUT:
|
||||||
|
OK
|
||||||
|
|
||||||
|
Return code: 0
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun main() {
|
||||||
|
System.out.println("OK")
|
||||||
|
}
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.integration;
|
package org.jetbrains.kotlin.integration;
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.cli.AbstractCliTest;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class CompilerSmokeTest extends CompilerSmokeTestBase {
|
public class CompilerSmokeTest extends CompilerSmokeTestBase {
|
||||||
@@ -120,4 +122,13 @@ public class CompilerSmokeTest extends CompilerSmokeTestBase {
|
|||||||
public void testPrintVersion() throws Exception {
|
public void testPrintVersion() throws Exception {
|
||||||
runCompiler("test.compile", "-version");
|
runCompiler("test.compile", "-version");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBuildFile() throws Exception {
|
||||||
|
File buildXml = new File(getTestDataDir(), "build.xml");
|
||||||
|
runCompiler(
|
||||||
|
"buildFile.compile",
|
||||||
|
AbstractCliTest.replacePathsInBuildXml("-Xbuild-file=" + buildXml, getTestDataDir(), tmpdir.getPath())
|
||||||
|
);
|
||||||
|
run("buildFile.run", "-cp", tmpdir.getAbsolutePath(), "MainKt");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.integration;
|
package org.jetbrains.kotlin.integration;
|
||||||
|
|
||||||
import com.intellij.util.ArrayUtil;
|
import com.intellij.util.ArrayUtil;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
import org.jetbrains.kotlin.utils.StringsKt;
|
import org.jetbrains.kotlin.utils.StringsKt;
|
||||||
|
|
||||||
@@ -27,8 +28,13 @@ import java.util.Collection;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
public abstract class CompilerSmokeTestBase extends KotlinIntegrationTestBase {
|
public abstract class CompilerSmokeTestBase extends KotlinIntegrationTestBase {
|
||||||
|
@NotNull
|
||||||
|
protected String getTestDataDir() {
|
||||||
|
return KotlinTestUtils.getTestDataPathBase() + "/integration/smoke/" + getTestName(true);
|
||||||
|
}
|
||||||
|
|
||||||
protected int run(String logName, String... args) throws Exception {
|
protected int run(String logName, String... args) throws Exception {
|
||||||
return runJava(KotlinTestUtils.getTestDataPathBase() + "/integration/smoke/" + getTestName(true), logName, args);
|
return runJava(getTestDataDir(), logName, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int runCompiler(String logName, String... arguments) throws Exception {
|
protected int runCompiler(String logName, String... arguments) throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user