1*af87fb4bSXin Li description = "Kotlin Symbol Processing implementation using Kotlin Analysis API"
2*af87fb4bSXin Li
3*af87fb4bSXin Li val intellijVersion: String by project
4*af87fb4bSXin Li val junitVersion: String by project
5*af87fb4bSXin Li val kotlinBaseVersion: String by project
6*af87fb4bSXin Li val libsForTesting by configurations.creating
7*af87fb4bSXin Li
<lambda>null8*af87fb4bSXin Li plugins {
9*af87fb4bSXin Li kotlin("jvm")
10*af87fb4bSXin Li id("org.jetbrains.intellij") version "0.6.4"
11*af87fb4bSXin Li id("org.jetbrains.dokka") version ("1.7.20")
12*af87fb4bSXin Li }
13*af87fb4bSXin Li
<lambda>null14*af87fb4bSXin Li intellij {
15*af87fb4bSXin Li version = intellijVersion
16*af87fb4bSXin Li }
17*af87fb4bSXin Li
<lambda>null18*af87fb4bSXin Li dependencies {
19*af87fb4bSXin Li implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.4")
20*af87fb4bSXin Li implementation(kotlin("stdlib", kotlinBaseVersion))
21*af87fb4bSXin Li implementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
22*af87fb4bSXin Li
23*af87fb4bSXin Li implementation("org.jetbrains.kotlin:high-level-api-fir-for-ide:$kotlinBaseVersion") {
24*af87fb4bSXin Li isTransitive = false
25*af87fb4bSXin Li }
26*af87fb4bSXin Li implementation("org.jetbrains.kotlin:high-level-api-for-ide:$kotlinBaseVersion") {
27*af87fb4bSXin Li isTransitive = false
28*af87fb4bSXin Li }
29*af87fb4bSXin Li implementation("org.jetbrains.kotlin:low-level-api-fir-for-ide:$kotlinBaseVersion") {
30*af87fb4bSXin Li isTransitive = false
31*af87fb4bSXin Li }
32*af87fb4bSXin Li implementation("org.jetbrains.kotlin:analysis-api-providers-for-ide:$kotlinBaseVersion") {
33*af87fb4bSXin Li isTransitive = false
34*af87fb4bSXin Li }
35*af87fb4bSXin Li implementation("org.jetbrains.kotlin:analysis-project-structure-for-ide:$kotlinBaseVersion") {
36*af87fb4bSXin Li isTransitive = false
37*af87fb4bSXin Li }
38*af87fb4bSXin Li implementation("org.jetbrains.kotlin:symbol-light-classes-for-ide:$kotlinBaseVersion") {
39*af87fb4bSXin Li isTransitive = false
40*af87fb4bSXin Li }
41*af87fb4bSXin Li implementation("org.jetbrains.kotlin:analysis-api-standalone-for-ide:$kotlinBaseVersion") {
42*af87fb4bSXin Li isTransitive = false
43*af87fb4bSXin Li }
44*af87fb4bSXin Li implementation("org.jetbrains.kotlin:high-level-api-impl-base-for-ide:$kotlinBaseVersion") {
45*af87fb4bSXin Li isTransitive = false
46*af87fb4bSXin Li }
47*af87fb4bSXin Li
48*af87fb4bSXin Li implementation(project(":api"))
49*af87fb4bSXin Li implementation(project(":common-util"))
50*af87fb4bSXin Li
51*af87fb4bSXin Li testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
52*af87fb4bSXin Li testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
53*af87fb4bSXin Li testRuntimeOnly("org.junit.jupiter:junit-jupiter-params:5.8.2")
54*af87fb4bSXin Li testRuntimeOnly("org.junit.platform:junit-platform-suite:1.8.2")
55*af87fb4bSXin Li
56*af87fb4bSXin Li testImplementation(project(":test-utils"))
57*af87fb4bSXin Li testImplementation(project(":api"))
58*af87fb4bSXin Li testImplementation(project(":common-util"))
59*af87fb4bSXin Li
60*af87fb4bSXin Li testImplementation(kotlin("stdlib", kotlinBaseVersion))
61*af87fb4bSXin Li testImplementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
62*af87fb4bSXin Li testImplementation("org.jetbrains.kotlin:kotlin-compiler-internal-test-framework:$kotlinBaseVersion")
63*af87fb4bSXin Li testImplementation("org.jetbrains.kotlin:kotlin-scripting-compiler:$kotlinBaseVersion")
64*af87fb4bSXin Li
65*af87fb4bSXin Li libsForTesting(kotlin("stdlib", kotlinBaseVersion))
66*af87fb4bSXin Li libsForTesting(kotlin("test", kotlinBaseVersion))
67*af87fb4bSXin Li libsForTesting(kotlin("script-runtime", kotlinBaseVersion))
68*af87fb4bSXin Li }
69*af87fb4bSXin Li
<lambda>null70*af87fb4bSXin Li tasks.register<Copy>("CopyLibsForTesting") {
71*af87fb4bSXin Li from(configurations.get("libsForTesting"))
72*af87fb4bSXin Li into("dist/kotlinc/lib")
73*af87fb4bSXin Li val escaped = Regex.escape(kotlinBaseVersion)
74*af87fb4bSXin Li rename("(.+)-$escaped\\.jar", "$1.jar")
75*af87fb4bSXin Li }
76*af87fb4bSXin Li
<lambda>null77*af87fb4bSXin Li sourceSets.main {
78*af87fb4bSXin Li java.srcDirs("src/main/kotlin")
79*af87fb4bSXin Li }
80*af87fb4bSXin Li
Projectnull81*af87fb4bSXin Li fun Project.javaPluginConvention(): JavaPluginConvention = the()
82*af87fb4bSXin Li val JavaPluginConvention.testSourceSet: SourceSet
83*af87fb4bSXin Li get() = sourceSets.getByName("test")
84*af87fb4bSXin Li val Project.testSourceSet: SourceSet
85*af87fb4bSXin Li get() = javaPluginConvention().testSourceSet
86*af87fb4bSXin Li
87*af87fb4bSXin Li tasks.test {
88*af87fb4bSXin Li dependsOn("CopyLibsForTesting")
89*af87fb4bSXin Li maxHeapSize = "2g"
90*af87fb4bSXin Li
91*af87fb4bSXin Li useJUnitPlatform()
92*af87fb4bSXin Li
93*af87fb4bSXin Li systemProperty("idea.is.unit.test", "true")
94*af87fb4bSXin Li systemProperty("idea.home.path", buildDir)
95*af87fb4bSXin Li systemProperty("java.awt.headless", "true")
96*af87fb4bSXin Li environment("NO_FS_ROOTS_ACCESS_CHECK", "true")
97*af87fb4bSXin Li environment("PROJECT_CLASSES_DIRS", testSourceSet.output.classesDirs.asPath)
98*af87fb4bSXin Li environment("PROJECT_BUILD_DIR", buildDir)
99*af87fb4bSXin Li testLogging {
100*af87fb4bSXin Li events("passed", "skipped", "failed")
101*af87fb4bSXin Li }
102*af87fb4bSXin Li
103*af87fb4bSXin Li var tempTestDir: File? = null
104*af87fb4bSXin Li doFirst {
105*af87fb4bSXin Li tempTestDir = createTempDir()
106*af87fb4bSXin Li systemProperty("java.io.tmpdir", tempTestDir.toString())
107*af87fb4bSXin Li }
108*af87fb4bSXin Li
109*af87fb4bSXin Li doLast {
110*af87fb4bSXin Li tempTestDir?.let { delete(it) }
111*af87fb4bSXin Li }
112*af87fb4bSXin Li }
113*af87fb4bSXin Li
<lambda>null114*af87fb4bSXin Li repositories {
115*af87fb4bSXin Li flatDir {
116*af87fb4bSXin Li dirs("${project.rootDir}/third_party/prebuilt/repo/")
117*af87fb4bSXin Li }
118*af87fb4bSXin Li maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/")
119*af87fb4bSXin Li maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies")
120*af87fb4bSXin Li maven("https://www.jetbrains.com/intellij-repository/releases")
121*af87fb4bSXin Li }
122