From 1fd3dc4e9b9cff130c66e24a36c00b478bd9d4a9 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 17:14:23 +0900 Subject: [PATCH 1/6] feat: use catalog to manager dependencies --- .gitignore | 1 + build.gradle.kts | 2 +- gradle/libs.versions.toml | 50 +++++++++++++++++++++++++++ platform/build.gradle.kts | 60 +++++++++++++------------------- server/build.gradle.kts | 72 +++++++++++++++++---------------------- shared/build.gradle.kts | 8 ++--- 6 files changed, 112 insertions(+), 81 deletions(-) create mode 100644 gradle/libs.versions.toml diff --git a/.gitignore b/.gitignore index ac8e1f5ae..2b04b3b57 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ node_modules !.vscode/launch.json !.vscode/tasks.json *.vsix +kls_database.db diff --git a/build.gradle.kts b/build.gradle.kts index 154c770fb..e87cc5956 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask plugins { kotlin("jvm") `maven-publish` - id("io.gitlab.arturbosch.detekt") version "1.22.0" + alias(libs.plugins.io.gitlab.arturbosch.detekt) } repositories { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..58bd74171 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,50 @@ +[versions] +kotlinVersion = "1.9.20" +lsp4jVersion = "0.21.2" +exposedVersion = "0.37.3" +jmhVersion = "1.20" + +[libraries] +org-jetbrains-kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlinVersion" } +org-jetbrains-kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "kotlinVersion" } +org-jetbrains-kotlin-ktscompiler = { module = "org.jetbrains.kotlin:kotlin-scripting-compiler", version.ref = "kotlinVersion" } +org-jetbrains-kotlin-kts-jvm-host-unshaded = { module = "org.jetbrains.kotlin:kotlin-scripting-jvm-host-unshaded", version.ref = "kotlinVersion" } +org-jetbrains-kotlin-sam-with-receiver-compiler-plugin = { module = "org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin", version.ref = "kotlinVersion" } + +org-jetbrains-kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlinVersion" } +org-jetbrains-kotlin-jvm = { module = "org.jetbrains.kotlin:kotlin-jvm", version.ref = "kotlinVersion" } + +org-jetbrains-kotlin-kotlin-scripting-jvm-host = { module = "org.jetbrains.kotlin:kotlin-scripting-jvm-host", version.ref = "kotlinVersion" } + + +org-eclipse-lsp4j-lsp4j = { module = "org.eclipse.lsp4j:org.eclipse.lsp4j", version.ref = "lsp4jVersion" } +org-eclipse-lsp4j-jsonrpc = { module = "org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc", version.ref = "lsp4jVersion" } + + +hamcrest-all = { module = "org.hamcrest:hamcrest-all", version = "1.3" } + +junit-junit = { module = "junit:junit", version = "4.11" } + +org-jetbrains-exposed-core = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposedVersion" } +org-jetbrains-exposed-dao = { module = "org.jetbrains.exposed:exposed-dao", version.ref = "exposedVersion" } +org-jetbrains-exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposedVersion" } + +org-jetbrains-fernflower = { module = "org.jetbrains:fernflower", version = "1.0" } + +com-github-fwcd-ktfmt = { module = "com.github.fwcd.ktfmt:ktfmt", version = "b5d31d1" } + +com-h2database-h2 = { module = "com.h2database:h2", version = "1.4.200" } + +com-beust-jcommander = { module = "com.beust:jcommander", version = "1.78" } + + +org-openjdk-jmh-generator-annprocess = { module = "org.openjdk.jmh:jmh-generator-annprocess", version.ref = "jmhVersion" } +org-openjdk-jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmhVersion" } + + +org-xerial-sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version = "3.41.2.1" } + +[plugins] +com-github-jk1-tcdeps = { id = "com.github.jk1.tcdeps", version = "1.2" } +com-jaredsburrows-license = { id = "com.jaredsburrows.license", version = "0.8.42" } +io-gitlab-arturbosch-detekt = { id = "io.gitlab.arturbosch.detekt", version = "1.22.0" } diff --git a/platform/build.gradle.kts b/platform/build.gradle.kts index c452777ab..cd1c9a2b0 100644 --- a/platform/build.gradle.kts +++ b/platform/build.gradle.kts @@ -1,42 +1,30 @@ -plugins { - id("java-platform") -} - -javaPlatform { - allowDependencies() -} +plugins { id("java-platform") } -val kotlinVersion = "1.9.20" -val exposedVersion = "0.37.3" -val lsp4jVersion = "0.21.2" +javaPlatform { allowDependencies() } -// constrain the dependencies that we use to these specific versions dependencies { constraints { - api("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion") - api("org.hamcrest:hamcrest-all:1.3") - api("junit:junit:4.11") - api("org.eclipse.lsp4j:org.eclipse.lsp4j:$lsp4jVersion") - api("org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:$lsp4jVersion") - api("org.jetbrains.kotlin:kotlin-compiler:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-scripting-compiler:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-scripting-jvm-host-unshaded:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-jvm:$kotlinVersion") - api("org.jetbrains:fernflower:1.0") - api("org.jetbrains.exposed:exposed-core:$exposedVersion") - api("org.jetbrains.exposed:exposed-dao:$exposedVersion") - api("org.jetbrains.exposed:exposed-jdbc:$exposedVersion") - api("com.h2database:h2:1.4.200") - api("com.github.fwcd.ktfmt:ktfmt:b5d31d1") - api("com.beust:jcommander:1.78") - api("org.hamcrest:hamcrest-all:1.3") - api("junit:junit:4.11") - api("org.openjdk.jmh:jmh-core:1.20") - api("org.jetbrains.kotlin:kotlin-scripting-jvm-host:$kotlinVersion") - api("org.jetbrains.kotlin:kotlin-scripting-jvm-host:$kotlinVersion") - api("org.openjdk.jmh:jmh-generator-annprocess:1.20") - api("org.xerial:sqlite-jdbc:3.41.2.1") + api(libs.org.jetbrains.kotlin.stdlib) + api(libs.hamcrest.all) + api(libs.junit.junit) + api(libs.org.eclipse.lsp4j.lsp4j) + api(libs.org.eclipse.lsp4j.jsonrpc) + api(libs.org.jetbrains.kotlin.compiler) + api(libs.org.jetbrains.kotlin.ktscompiler) + api(libs.org.jetbrains.kotlin.kts.jvm.host.unshaded) + api(libs.org.jetbrains.kotlin.sam.with.receiver.compiler.plugin) + api(libs.org.jetbrains.kotlin.reflect) + api(libs.org.jetbrains.kotlin.jvm) + api(libs.org.jetbrains.fernflower) + api(libs.org.jetbrains.exposed.core) + api(libs.org.jetbrains.exposed.dao) + api(libs.org.jetbrains.exposed.jdbc) + api(libs.com.h2database.h2) + api(libs.com.github.fwcd.ktfmt) + api(libs.com.beust.jcommander) + api(libs.org.openjdk.jmh.core) + api(libs.org.jetbrains.kotlin.kotlin.scripting.jvm.host) + api(libs.org.openjdk.jmh.generator.annprocess) + api(libs.org.xerial.sqlite.jdbc) } } diff --git a/server/build.gradle.kts b/server/build.gradle.kts index f7a4cbb20..7ecacd701 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -2,8 +2,8 @@ plugins { kotlin("jvm") id("maven-publish") id("application") - id("com.github.jk1.tcdeps") - id("com.jaredsburrows.license") + alias(libs.plugins.com.github.jk1.tcdeps) + alias(libs.plugins.com.jaredsburrows.license) id("kotlin-language-server.publishing-conventions") id("kotlin-language-server.distribution-conventions") id("kotlin-language-server.kotlin-conventions") @@ -19,9 +19,7 @@ application { mainClass.set(serverMainClassName) description = "Code completions, diagnostics and more for Kotlin" applicationDefaultJvmArgs = listOf("-DkotlinLanguageServer.version=$version") - applicationDistribution.into("bin") { - fileMode = 755 - } + applicationDistribution.into("bin") { fileMode = 755 } } repositories { @@ -40,49 +38,49 @@ dependencies { implementation(project(":shared")) - implementation("org.eclipse.lsp4j:org.eclipse.lsp4j") - implementation("org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc") + implementation(libs.org.eclipse.lsp4j.lsp4j) + implementation(libs.org.eclipse.lsp4j.jsonrpc) + implementation(kotlin("compiler")) implementation(kotlin("scripting-compiler")) implementation(kotlin("scripting-jvm-host-unshaded")) implementation(kotlin("sam-with-receiver-compiler-plugin")) implementation(kotlin("reflect")) - implementation("org.jetbrains:fernflower") - implementation("org.jetbrains.exposed:exposed-core") - implementation("org.jetbrains.exposed:exposed-dao") - implementation("org.jetbrains.exposed:exposed-jdbc") - implementation("com.h2database:h2") - implementation("com.github.fwcd.ktfmt:ktfmt") - implementation("com.beust:jcommander") - implementation("org.xerial:sqlite-jdbc") - - testImplementation("org.hamcrest:hamcrest-all") - testImplementation("junit:junit") - testImplementation("org.openjdk.jmh:jmh-core") - - // See https://github.com/JetBrains/kotlin/blob/65b0a5f90328f4b9addd3a10c6f24f3037482276/libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts#L8 + implementation(libs.org.jetbrains.fernflower) + implementation(libs.org.jetbrains.exposed.core) + implementation(libs.org.jetbrains.exposed.dao) + implementation(libs.org.jetbrains.exposed.jdbc) + implementation(libs.com.h2database.h2) + implementation(libs.com.github.fwcd.ktfmt) + implementation(libs.com.beust.jcommander) + implementation(libs.org.xerial.sqlite.jdbc) + + testImplementation(libs.hamcrest.all) + testImplementation(libs.junit.junit) + testImplementation(libs.org.openjdk.jmh.core) + + // See + // https://github.com/JetBrains/kotlin/blob/65b0a5f90328f4b9addd3a10c6f24f3037482276/libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts#L8 compileOnly(kotlin("scripting-jvm-host")) testCompileOnly(kotlin("scripting-jvm-host")) - annotationProcessor("org.openjdk.jmh:jmh-generator-annprocess") + annotationProcessor(libs.org.openjdk.jmh.generator.annprocess) } -configurations.forEach { config -> - config.resolutionStrategy { - preferProjectModules() - } -} +configurations.forEach { config -> config.resolutionStrategy { preferProjectModules() } } -tasks.startScripts { - applicationName = "kotlin-language-server" -} +tasks.startScripts { applicationName = "kotlin-language-server" } tasks.register("fixFilePermissions") { // When running on macOS or Linux the start script // needs executable permissions to run. onlyIf { !System.getProperty("os.name").lowercase().contains("windows") } - commandLine("chmod", "+x", "${tasks.installDist.get().destinationDir}/bin/kotlin-language-server") + commandLine( + "chmod", + "+x", + "${tasks.installDist.get().destinationDir}/bin/kotlin-language-server" + ) } tasks.register("debugRun") { @@ -91,9 +89,7 @@ tasks.register("debugRun") { standardInput = System.`in` jvmArgs(debugArgs) - doLast { - println("Using debug port $debugPort") - } + doLast { println("Using debug port $debugPort") } } tasks.register("debugStartScripts") { @@ -116,10 +112,6 @@ tasks.withType() { } } -tasks.installDist { - finalizedBy("fixFilePermissions") -} +tasks.installDist { finalizedBy("fixFilePermissions") } -tasks.build { - finalizedBy("installDist") -} +tasks.build { finalizedBy("installDist") } diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 13f81564d..1cf26e424 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -15,8 +15,8 @@ dependencies { implementation(platform(project(":platform"))) implementation(kotlin("stdlib")) - implementation("org.jetbrains.exposed:exposed-core") - implementation("org.jetbrains.exposed:exposed-dao") - testImplementation("org.hamcrest:hamcrest-all") - testImplementation("junit:junit") + implementation(libs.org.jetbrains.exposed.core) + implementation(libs.org.jetbrains.exposed.dao) + testImplementation(libs.hamcrest.all) + testImplementation(libs.junit.junit) } From 26c88ed3bc5f9b5a240afca213d2b7b96b25aef5 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 17:46:04 +0900 Subject: [PATCH 2/6] feat: to kotlin 2.0.0 --- gradle/libs.versions.toml | 2 +- server/src/main/kotlin/org/javacs/kt/compiler/Compiler.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 58bd74171..4399cfd24 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlinVersion = "1.9.20" +kotlinVersion = "2.0.0" lsp4jVersion = "0.21.2" exposedVersion = "0.37.3" jmhVersion = "1.20" diff --git a/server/src/main/kotlin/org/javacs/kt/compiler/Compiler.kt b/server/src/main/kotlin/org/javacs/kt/compiler/Compiler.kt index f81d1f0ee..fb0172401 100644 --- a/server/src/main/kotlin/org/javacs/kt/compiler/Compiler.kt +++ b/server/src/main/kotlin/org/javacs/kt/compiler/Compiler.kt @@ -99,7 +99,7 @@ private class CompilationEnvironment( init { environment = KotlinCoreEnvironment.createForProduction( - parentDisposable = disposable, + projectDisposable = disposable, // Not to be confused with the CompilerConfiguration in the language server Configuration configuration = KotlinCompilerConfiguration().apply { val langFeatures = mutableMapOf() @@ -423,7 +423,7 @@ private class CompilationEnvironment( } fun createContainer(sourcePath: Collection): Pair { - val trace = CliBindingTrace() + val trace = CliBindingTrace(environment.project) val container = TopDownAnalyzerFacadeForJVM.createContainer( project = environment.project, files = sourcePath, From 3595c9182be6ed1a9ce125f5f00d76a7d0fbe407 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 17:48:17 +0900 Subject: [PATCH 3/6] chore: tidy up toml --- gradle/libs.versions.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4399cfd24..1f1cf8b13 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,11 +16,9 @@ org-jetbrains-kotlin-jvm = { module = "org.jetbrains.kotlin:kotlin-jvm", version org-jetbrains-kotlin-kotlin-scripting-jvm-host = { module = "org.jetbrains.kotlin:kotlin-scripting-jvm-host", version.ref = "kotlinVersion" } - org-eclipse-lsp4j-lsp4j = { module = "org.eclipse.lsp4j:org.eclipse.lsp4j", version.ref = "lsp4jVersion" } org-eclipse-lsp4j-jsonrpc = { module = "org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc", version.ref = "lsp4jVersion" } - hamcrest-all = { module = "org.hamcrest:hamcrest-all", version = "1.3" } junit-junit = { module = "junit:junit", version = "4.11" } @@ -37,11 +35,9 @@ com-h2database-h2 = { module = "com.h2database:h2", version = "1.4.200" } com-beust-jcommander = { module = "com.beust:jcommander", version = "1.78" } - org-openjdk-jmh-generator-annprocess = { module = "org.openjdk.jmh:jmh-generator-annprocess", version.ref = "jmhVersion" } org-openjdk-jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmhVersion" } - org-xerial-sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version = "3.41.2.1" } [plugins] From c6aaf4a0f71651333ce27f3054a5ed7a7a17ec1d Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 18:13:43 +0900 Subject: [PATCH 4/6] chore: remove useless config --- settings.gradle.kts | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 8615b2f18..8aac137e0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,27 +3,6 @@ pluginManagement { gradlePluginPortal() maven("https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-plugin") } - - // Centralize plugin versions. - // Ensure these plugins use the same version from the /gradle/platform/build.gradle.kts - // otherwise you'll get an exception during Gradle's configuration phase - // stating that the plugin with the specified (or unspecified) version - // cannot be found. - // - // Once declared here, subsequent plugin blocks in the build don't require - // a version to be applied. They inherit the versions from the following - // block. - // - // This can be verified by running the dependencies task via - // ./gradlew dependencies - plugins { - id("application") apply false - id("maven-publish") apply false - - kotlin("jvm") version "1.8.10" apply false - id("com.github.jk1.tcdeps") version "1.2" apply false - id("com.jaredsburrows.license") version "0.8.42" apply false - } } rootProject.name = "kotlin-language-server" From 532331f56e2eb957bd532760238417fe9ca89221 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 18:52:44 +0900 Subject: [PATCH 5/6] chore: update kt --- gradle/libs.versions.toml | 2 +- settings.gradle.kts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1f1cf8b13..e9cd9971b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlinVersion = "2.0.0" +kotlinVersion = "2.1.0" lsp4jVersion = "0.21.2" exposedVersion = "0.37.3" jmhVersion = "1.20" diff --git a/settings.gradle.kts b/settings.gradle.kts index 8aac137e0..8acaf4920 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,9 @@ pluginManagement { gradlePluginPortal() maven("https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-plugin") } + plugins { + kotlin("jvm") version "2.1.0" apply false + } } rootProject.name = "kotlin-language-server" From 4c51f6370b8786408f3583342155b82db37c73d0 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Tue, 24 Dec 2024 19:20:15 +0900 Subject: [PATCH 6/6] feat: to 2.1.0 --- buildSrc/build.gradle.kts | 2 +- buildSrc/settings.gradle.kts | 8 ++++++++ gradle/libs.versions.toml | 3 +++ gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 3 --- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 6bc492d0a..410a5bf91 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -30,5 +30,5 @@ kotlin { } dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin") + implementation(libs.org.jetbrains.kotlin.gradle.plugin) } diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index 470d203c4..883f4753d 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -1 +1,9 @@ +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + rootProject.name = "build-conventions" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9cd9971b..fb6ca262a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -40,6 +40,9 @@ org-openjdk-jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmh org-xerial-sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version = "3.41.2.1" } +# buildSrc +org-jetbrains-kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin",version.ref = "kotlinVersion" } + [plugins] com-github-jk1-tcdeps = { id = "com.github.jk1.tcdeps", version = "1.2" } com-jaredsburrows-license = { id = "com.jaredsburrows.license", version = "0.8.42" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930..9355b4155 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 8acaf4920..8aac137e0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,9 +3,6 @@ pluginManagement { gradlePluginPortal() maven("https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-plugin") } - plugins { - kotlin("jvm") version "2.1.0" apply false - } } rootProject.name = "kotlin-language-server"