Fixes to make the project compile when using Pill

This commit is contained in:
Yan Zhulanow
2018-02-14 23:59:28 +03:00
parent 8dad2d30f5
commit a0c105adbe
7 changed files with 23 additions and 15 deletions
+16 -12
View File
@@ -85,16 +85,21 @@ fun parse(project: Project, context: ParserContext): PProject = with (context) {
return PProject("Kotlin", project.rootProject.projectDir, modules, emptyList()) return PProject("Kotlin", project.rootProject.projectDir, modules, emptyList())
} }
/*
Ordering here and below is significant.
Placing 'runtime' configuration dependencies on the top make 'idea' tests to run normally.
('idea' module has 'intellij-core' as transitive dependency, and we really need to get rid of it.)
*/
private val CONFIGURATION_MAPPING = mapOf( private val CONFIGURATION_MAPPING = mapOf(
listOf("runtime") to Scope.RUNTIME,
listOf("compile") to Scope.COMPILE, listOf("compile") to Scope.COMPILE,
listOf("compileOnly") to Scope.PROVIDED, listOf("compileOnly") to Scope.PROVIDED
listOf("runtime") to Scope.RUNTIME
) )
private val TEST_CONFIGURATION_MAPPING = mapOf( private val TEST_CONFIGURATION_MAPPING = mapOf(
listOf("runtime", "testRuntime") to Scope.RUNTIME,
listOf("compile", "testCompile") to Scope.COMPILE, listOf("compile", "testCompile") to Scope.COMPILE,
listOf("compileOnly", "testCompileOnly") to Scope.PROVIDED, listOf("compileOnly", "testCompileOnly") to Scope.PROVIDED
listOf("runtime", "testRuntime") to Scope.RUNTIME
) )
private val SOURCE_SET_MAPPING = mapOf( private val SOURCE_SET_MAPPING = mapOf(
@@ -227,8 +232,7 @@ private fun ParserContext.parseDependencies(project: Project, forTests: Boolean)
val configurationMapping = if (forTests) TEST_CONFIGURATION_MAPPING else CONFIGURATION_MAPPING val configurationMapping = if (forTests) TEST_CONFIGURATION_MAPPING else CONFIGURATION_MAPPING
with(project.configurations) { with(project.configurations) {
val moduleRoots = mutableListOf<POrderRoot>() val mainRoots = mutableListOf<POrderRoot>()
val libraryRoots = mutableListOf<POrderRoot>()
val deferredRoots = mutableListOf<POrderRoot>() val deferredRoots = mutableListOf<POrderRoot>()
fun collectConfigurations(): List<Pair<ResolvedConfiguration, Scope>> { fun collectConfigurations(): List<Pair<ResolvedConfiguration, Scope>> {
@@ -255,9 +259,9 @@ private fun ParserContext.parseDependencies(project: Project, forTests: Boolean)
if (mappedDependency != null) { if (mappedDependency != null) {
val orderRoot = POrderRoot(mappedDependency.main, scope) val orderRoot = POrderRoot(mappedDependency.main, scope)
if (mappedDependency.main is PDependency.Module) { if (mappedDependency.main is PDependency.Module) {
moduleRoots += orderRoot mainRoots += orderRoot
} else { } else {
libraryRoots += orderRoot mainRoots += orderRoot
} }
for (deferredDep in mappedDependency.deferred) { for (deferredDep in mappedDependency.deferred) {
@@ -270,9 +274,9 @@ private fun ParserContext.parseDependencies(project: Project, forTests: Boolean)
} }
if (dependency.configuration == "runtimeElements") { if (dependency.configuration == "runtimeElements") {
moduleRoots += POrderRoot(PDependency.Module(dependency.moduleName + ".src"), scope) mainRoots += POrderRoot(PDependency.Module(dependency.moduleName + ".src"), scope)
} else if (dependency.configuration == "tests-jar") { } else if (dependency.configuration == "tests-jar") {
moduleRoots += POrderRoot( mainRoots += POrderRoot(
PDependency.Module(dependency.moduleName + ".test"), PDependency.Module(dependency.moduleName + ".test"),
scope, scope,
isProductionOnTestDependency = true isProductionOnTestDependency = true
@@ -280,11 +284,11 @@ private fun ParserContext.parseDependencies(project: Project, forTests: Boolean)
} else { } else {
val classes = dependency.moduleArtifacts.map { it.file } val classes = dependency.moduleArtifacts.map { it.file }
val library = PLibrary(dependency.moduleName, classes) val library = PLibrary(dependency.moduleName, classes)
libraryRoots += POrderRoot(PDependency.ModuleLibrary(library), scope) mainRoots += POrderRoot(PDependency.ModuleLibrary(library), scope)
} }
} }
return removeDuplicates(moduleRoots + libraryRoots + deferredRoots) return removeDuplicates(mainRoots + deferredRoots)
} }
} }
@@ -43,7 +43,7 @@ class ScriptGenTest : CodegenTestCase() {
super.setUp() super.setUp()
additionalDependencies = additionalDependencies =
System.getenv("PROJECT_CLASSES_DIRS")?.split(File.pathSeparator)?.map { File(it) } System.getenv("PROJECT_CLASSES_DIRS")?.split(File.pathSeparator)?.map { File(it) }
?: listOf("compiler/build/classes/kotlin/test", "build/compiler/classes/kotlin/test") ?: listOf("compiler/build/classes/kotlin/test", "build/compiler/classes/kotlin/test", "out/test/compiler.test")
.mapNotNull { File(it).canonicalFile.takeIf { it.isDirectory } } .mapNotNull { File(it).canonicalFile.takeIf { it.isDirectory } }
.takeIf { it.isNotEmpty() } .takeIf { it.isNotEmpty() }
?: throw IllegalStateException("Unable to get classes output dirs, set PROJECT_CLASSES_DIRS environment variable") ?: throw IllegalStateException("Unable to get classes output dirs, set PROJECT_CLASSES_DIRS environment variable")
+2
View File
@@ -37,6 +37,8 @@ dependencies {
compile(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } compile(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false }
compile("teamcity:markdown") compile("teamcity:markdown")
compileOnly(project(":kotlin-daemon-client"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") } compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
compileOnly(intellijDep()) { compileOnly(intellijDep()) {
includeJars("annotations", "openapi", "idea", "velocity", "boot", "gson", "log4j", "asm-all", includeJars("annotations", "openapi", "idea", "velocity", "boot", "gson", "log4j", "asm-all",
+1
View File
@@ -20,6 +20,7 @@ dependencies {
compile(androidDxJar()) compile(androidDxJar())
compileOnly(project(":kotlin-android-extensions-runtime"))
compileOnly(intellijDep()) { includeJars("openapi", "idea", "extensions", "util", "guava", "android-base-common", rootProject = rootProject) } compileOnly(intellijDep()) { includeJars("openapi", "idea", "extensions", "util", "guava", "android-base-common", rootProject = rootProject) }
compileOnly(intellijPluginDep("android")) { compileOnly(intellijPluginDep("android")) {
includeJars("android", "android-common", "sdk-common", "sdklib", "sdk-tools", "layoutlib-api") includeJars("android", "android-common", "sdk-common", "sdklib", "sdk-tools", "layoutlib-api")
+1 -1
View File
@@ -15,7 +15,7 @@ dependencies {
compile(project(":idea:idea-jvm")) compile(project(":idea:idea-jvm"))
compile(project(":idea:idea-jps-common")) compile(project(":idea:idea-jps-common"))
compile(project(":plugins:annotation-based-compiler-plugins-ide-support")) compile(project(":plugins:annotation-based-compiler-plugins-ide-support"))
compileOnly(intellijDep()) { includeJars("openapi", "idea", "util") } compileOnly(intellijDep()) { includeJars("openapi", "idea", "util", "extensions") }
excludeInAndroidStudio(rootProject) { compileOnly(intellijPluginDep("maven")) { includeJars("maven") } } excludeInAndroidStudio(rootProject) { compileOnly(intellijPluginDep("maven")) { includeJars("maven") } }
compileOnly(intellijPluginDep("gradle")) { includeJars("gradle-tooling-api", "gradle", rootProject = rootProject) } compileOnly(intellijPluginDep("gradle")) { includeJars("gradle-tooling-api", "gradle", rootProject = rootProject) }
} }
+1
View File
@@ -12,6 +12,7 @@ dependencies {
compile(project(":idea:idea-core")) compile(project(":idea:idea-core"))
compile(project(":idea:idea-android")) compile(project(":idea:idea-android"))
compile(project(":plugins:uast-kotlin")) compile(project(":plugins:uast-kotlin"))
compileOnly(project(":kotlin-android-extensions-runtime"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") } compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
compileOnly(intellijDep()) { includeJars("util", "guava", "openapi", "idea", "asm-all", "annotations", rootProject = rootProject) } compileOnly(intellijDep()) { includeJars("util", "guava", "openapi", "idea", "asm-all", "annotations", rootProject = rootProject) }
compileOnly(intellijPluginDep("android")) { compileOnly(intellijPluginDep("android")) {
+1 -1
View File
@@ -16,7 +16,7 @@ dependencies {
compile(project(":idea")) compile(project(":idea"))
compile(project(":idea:idea-jps-common")) compile(project(":idea:idea-jps-common"))
compile(project(":plugins:annotation-based-compiler-plugins-ide-support")) compile(project(":plugins:annotation-based-compiler-plugins-ide-support"))
compileOnly(intellijDep()) { includeJars("openapi", "idea", "util") } compileOnly(intellijDep()) { includeJars("openapi", "idea", "util", "extensions") }
excludeInAndroidStudio(rootProject) { compileOnly(intellijPluginDep("maven")) { includeJars("maven") } } excludeInAndroidStudio(rootProject) { compileOnly(intellijPluginDep("maven")) { includeJars("maven") } }
compileOnly(intellijPluginDep("gradle")) { includeJars("gradle-tooling-api", "gradle", rootProject = rootProject) } compileOnly(intellijPluginDep("gradle")) { includeJars("gradle-tooling-api", "gradle", rootProject = rootProject) }
} }