Skip to content

Commit 2648c7d

Browse files
nicolas-guichardantonsviridov-src
authored andcommitted
Update to Kotlin 2.2.0
1 parent d4e089a commit 2648c7d

File tree

7 files changed

+60
-89
lines changed

7 files changed

+60
-89
lines changed

build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import com.palantir.gradle.gitversion.VersionDetails
2+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
23
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
34
import groovy.lang.Closure
45
import org.gradle.jvm.toolchain.internal.CurrentJvmToolchainSpec
56

67
plugins {
7-
kotlin("jvm") version "2.1.20"
8+
kotlin("jvm") version "2.2.0"
89
id("com.github.johnrengelman.shadow") version "8.1.1"
910
id("com.palantir.git-version") version "3.1.0"
1011
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
@@ -65,11 +66,10 @@ subprojects {
6566

6667
allprojects {
6768
afterEvaluate {
68-
tasks.withType<KotlinCompile> {
69-
kotlinOptions.jvmTarget = "1.8"
70-
}
71-
7269
kotlin {
70+
compilerOptions {
71+
jvmTarget = JvmTarget.JVM_1_8
72+
}
7373
jvmToolchain {
7474
(this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
7575
}

debug-project/build.gradle.kts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
12
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
23

34
plugins {
@@ -24,12 +25,14 @@ dependencies {
2425
}
2526

2627
tasks.withType<KotlinCompile> {
27-
kotlinOptions.jvmTarget = "1.8"
2828
dependsOn(":${projects.semanticdbKotlinc.name}:shadowJar")
29+
}
30+
31+
kotlin {
2932
val targetroot = File(project.buildDir, "semanticdb-targetroot")
30-
kotlinOptions {
31-
jvmTarget = "11"
32-
freeCompilerArgs = freeCompilerArgs + listOf(
33+
compilerOptions {
34+
jvmTarget = JvmTarget.JVM_11
35+
freeCompilerArgs.addAll(
3336
"-Xplugin=${semanticdbJar.first()}",
3437
"-P",
3538
"plugin:semanticdb-kotlinc:sourceroot=${projectDir.path}",

semanticdb-kotlinc/build.gradle.kts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import java.net.URI
2+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
23
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
34
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
45
import org.gradle.api.publish.maven.MavenPublication
@@ -40,7 +41,7 @@ dependencies {
4041
// https://github.com/tschuchortdev/kotlin-compile-testing/issues/390
4142
// Until then, we use the fork from https://github.com/ZacSweers/kotlin-compile-testing instead.
4243
// testImplementation("com.github.tschuchortdev", "kotlin-compile-testing", "1.5.0")
43-
testImplementation("dev.zacsweers.kctfork", "core", "0.7.0")
44+
testImplementation("dev.zacsweers.kctfork", "core", "0.7.1")
4445

4546
testImplementation("org.junit.jupiter", "junit-jupiter-params", "5.8.1")
4647
testImplementation("org.jetbrains.kotlin", "kotlin-stdlib-jdk8", "1.5.0") {
@@ -56,8 +57,14 @@ dependencies {
5657

5758
tasks.withType<KotlinCompile> {
5859
dependsOn(":${projects.semanticdbKotlin.name}:build")
59-
kotlinOptions {
60-
freeCompilerArgs = freeCompilerArgs + listOf("-Xinline-classes")
60+
}
61+
62+
kotlin {
63+
compilerOptions {
64+
freeCompilerArgs.addAll(
65+
"-Xinline-classes",
66+
"-Xcontext-parameters",
67+
)
6168
}
6269
}
6370

@@ -203,10 +210,13 @@ subprojects {
203210
tasks.withType<KotlinCompile> {
204211
dependsOn(projects.semanticdbKotlinc.dependencyProject.tasks.shadowJar.get().path)
205212
outputs.upToDateWhen { false }
213+
}
214+
215+
kotlin {
206216
val pluginJar = semanticdbJar.incoming.artifacts.artifactFiles.first().path
207-
kotlinOptions {
208-
jvmTarget = "1.8"
209-
freeCompilerArgs = freeCompilerArgs + listOf(
217+
compilerOptions {
218+
jvmTarget = JvmTarget.JVM_1_8
219+
freeCompilerArgs.addAll(
210220
"-Xplugin=$pluginJar",
211221
"-P",
212222
"plugin:semanticdb-kotlinc:sourceroot=${sourceroot}",

semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerCheckers.kt

Lines changed: 26 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
8989
}
9090

9191
@OptIn(ExperimentalContracts::class)
92-
override fun check(
93-
declaration: FirFile,
94-
context: CheckerContext,
95-
reporter: DiagnosticReporter
96-
) {
92+
context(context: CheckerContext, reporter: DiagnosticReporter)
93+
override fun check(declaration: FirFile) {
9794
val ktFile = declaration.sourceFile ?: return
9895
val lineMap = LineMap(declaration)
9996
val visitor = SemanticdbVisitor(sourceroot, ktFile, lineMap, globals)
@@ -103,11 +100,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
103100

104101
class SemanticImportsChecker : FirFileChecker(MppCheckerKind.Common) {
105102
@OptIn(ExperimentalContracts::class)
106-
override fun check(
107-
declaration: FirFile,
108-
context: CheckerContext,
109-
reporter: DiagnosticReporter
110-
) {
103+
context(context: CheckerContext, reporter: DiagnosticReporter)
104+
override fun check(declaration: FirFile) {
111105
val ktFile = declaration.sourceFile ?: return
112106
val visitor = visitors[ktFile]
113107

@@ -181,11 +175,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
181175

182176
private class SemanticClassLikeChecker : FirClassLikeChecker(MppCheckerKind.Common) {
183177
@OptIn(ExperimentalContracts::class)
184-
override fun check(
185-
declaration: FirClassLikeDeclaration,
186-
context: CheckerContext,
187-
reporter: DiagnosticReporter
188-
) {
178+
context(context: CheckerContext, reporter: DiagnosticReporter)
179+
override fun check(declaration: FirClassLikeDeclaration) {
189180
val source = declaration.source ?: return
190181
val ktFile = context.containingFile?.sourceFile ?: return
191182
val visitor = visitors[ktFile]
@@ -213,11 +204,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
213204

214205
private class SemanticConstructorChecker : FirConstructorChecker(MppCheckerKind.Common) {
215206
@OptIn(ExperimentalContracts::class)
216-
override fun check(
217-
declaration: FirConstructor,
218-
context: CheckerContext,
219-
reporter: DiagnosticReporter
220-
) {
207+
context(context: CheckerContext, reporter: DiagnosticReporter)
208+
override fun check(declaration: FirConstructor) {
221209
val source = declaration.source ?: return
222210
val ktFile = context.containingFile?.sourceFile ?: return
223211
val visitor = visitors[ktFile]
@@ -251,11 +239,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
251239

252240
private class SemanticSimpleFunctionChecker : FirSimpleFunctionChecker(MppCheckerKind.Common) {
253241
@OptIn(ExperimentalContracts::class)
254-
override fun check(
255-
declaration: FirSimpleFunction,
256-
context: CheckerContext,
257-
reporter: DiagnosticReporter
258-
) {
242+
context(context: CheckerContext, reporter: DiagnosticReporter)
243+
override fun check(declaration: FirSimpleFunction) {
259244
val source = declaration.source ?: return
260245
val ktFile = context.containingFile?.sourceFile ?: return
261246
val visitor = visitors[ktFile]
@@ -272,11 +257,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
272257
private class SemanticAnonymousFunctionChecker :
273258
FirAnonymousFunctionChecker(MppCheckerKind.Common) {
274259
@OptIn(ExperimentalContracts::class)
275-
override fun check(
276-
declaration: FirAnonymousFunction,
277-
context: CheckerContext,
278-
reporter: DiagnosticReporter
279-
) {
260+
context(context: CheckerContext, reporter: DiagnosticReporter)
261+
override fun check(declaration: FirAnonymousFunction) {
280262
val source = declaration.source ?: return
281263
val ktFile = context.containingFile?.sourceFile ?: return
282264
val visitor = visitors[ktFile]
@@ -286,11 +268,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
286268

287269
private class SemanticPropertyChecker : FirPropertyChecker(MppCheckerKind.Common) {
288270
@OptIn(ExperimentalContracts::class)
289-
override fun check(
290-
declaration: FirProperty,
291-
context: CheckerContext,
292-
reporter: DiagnosticReporter
293-
) {
271+
context(context: CheckerContext, reporter: DiagnosticReporter)
272+
override fun check(declaration: FirProperty) {
294273
val source = declaration.source ?: return
295274
val ktFile = context.containingFile?.sourceFile ?: return
296275
val visitor = visitors[ktFile]
@@ -306,11 +285,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
306285

307286
private class SemanticValueParameterChecker : FirValueParameterChecker(MppCheckerKind.Common) {
308287
@OptIn(ExperimentalContracts::class)
309-
override fun check(
310-
declaration: FirValueParameter,
311-
context: CheckerContext,
312-
reporter: DiagnosticReporter
313-
) {
288+
context(context: CheckerContext, reporter: DiagnosticReporter)
289+
override fun check(declaration: FirValueParameter) {
314290
val source = declaration.source ?: return
315291
val ktFile = context.containingFile?.sourceFile ?: return
316292
val visitor = visitors[ktFile]
@@ -326,11 +302,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
326302

327303
private class SemanticTypeParameterChecker : FirTypeParameterChecker(MppCheckerKind.Common) {
328304
@OptIn(ExperimentalContracts::class)
329-
override fun check(
330-
declaration: FirTypeParameter,
331-
context: CheckerContext,
332-
reporter: DiagnosticReporter
333-
) {
305+
context(context: CheckerContext, reporter: DiagnosticReporter)
306+
override fun check(declaration: FirTypeParameter) {
334307
val source = declaration.source ?: return
335308
val ktFile = context.containingFile?.sourceFile ?: return
336309
val visitor = visitors[ktFile]
@@ -340,11 +313,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
340313

341314
private class SemanticTypeAliasChecker : FirTypeAliasChecker(MppCheckerKind.Common) {
342315
@OptIn(ExperimentalContracts::class)
343-
override fun check(
344-
declaration: FirTypeAlias,
345-
context: CheckerContext,
346-
reporter: DiagnosticReporter
347-
) {
316+
context(context: CheckerContext, reporter: DiagnosticReporter)
317+
override fun check(declaration: FirTypeAlias) {
348318
val source = declaration.source ?: return
349319
val ktFile = context.containingFile?.sourceFile ?: return
350320
val visitor = visitors[ktFile]
@@ -355,11 +325,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
355325
private class SemanticPropertyAccessorChecker :
356326
FirPropertyAccessorChecker(MppCheckerKind.Common) {
357327
@OptIn(ExperimentalContracts::class)
358-
override fun check(
359-
declaration: FirPropertyAccessor,
360-
context: CheckerContext,
361-
reporter: DiagnosticReporter
362-
) {
328+
context(context: CheckerContext, reporter: DiagnosticReporter)
329+
override fun check(declaration: FirPropertyAccessor) {
363330
val source = declaration.source ?: return
364331
val ktFile = context.containingFile?.sourceFile ?: return
365332
val visitor = visitors[ktFile]
@@ -387,11 +354,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
387354
private class SemanticQualifiedAccessExpressionChecker :
388355
FirQualifiedAccessExpressionChecker(MppCheckerKind.Common) {
389356
@OptIn(ExperimentalContracts::class)
390-
override fun check(
391-
expression: FirQualifiedAccessExpression,
392-
context: CheckerContext,
393-
reporter: DiagnosticReporter
394-
) {
357+
context(context: CheckerContext, reporter: DiagnosticReporter)
358+
override fun check(expression: FirQualifiedAccessExpression) {
395359
val source = expression.source ?: return
396360
val calleeReference = expression.calleeReference
397361
if ((calleeReference as? FirResolvedNamedReference) == null) {
@@ -425,11 +389,8 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
425389
private class SemanticClassReferenceExpressionChecker :
426390
FirTypeOperatorCallChecker(MppCheckerKind.Common) {
427391
@OptIn(ExperimentalContracts::class)
428-
override fun check(
429-
expression: FirTypeOperatorCall,
430-
context: CheckerContext,
431-
reporter: DiagnosticReporter
432-
) {
392+
context(context: CheckerContext, reporter: DiagnosticReporter)
393+
override fun check(expression: FirTypeOperatorCall) {
433394
val typeRef = expression.conversionTypeRef
434395
val source = typeRef.source ?: return
435396
val classSymbol = expression.conversionTypeRef.toClassLikeSymbol(context.session) ?: return

semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbTextDocumentBuilder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.KtSourceFile
1010
import org.jetbrains.kotlin.com.intellij.lang.java.JavaLanguage
1111
import org.jetbrains.kotlin.fir.FirElement
1212
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
13-
import org.jetbrains.kotlin.fir.analysis.checkers.getDirectOverriddenSymbols
13+
import org.jetbrains.kotlin.fir.analysis.checkers.directOverriddenSymbolsSafe
1414
import org.jetbrains.kotlin.fir.analysis.checkers.toClassLikeSymbol
1515
import org.jetbrains.kotlin.fir.analysis.getChild
1616
import org.jetbrains.kotlin.fir.renderer.*
@@ -80,7 +80,7 @@ class SemanticdbTextDocumentBuilder(
8080
.filterNotNull()
8181
.flatMap { cache[it] }
8282
is FirFunctionSymbol<*> ->
83-
firBasedSymbol.fir.getDirectOverriddenSymbols(context).flatMap { cache[it] }
83+
firBasedSymbol.directOverriddenSymbolsSafe(context).flatMap { cache[it] }
8484
else -> emptyList<Symbol>().asIterable()
8585
}
8686
return SymbolInformation {

semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SymbolsCache.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import kotlin.contracts.ExperimentalContracts
66
import kotlin.contracts.contract
77
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.isLocalMember
88
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingSymbol
9+
import org.jetbrains.kotlin.fir.declarations.DirectDeclarationsAccess
910
import org.jetbrains.kotlin.fir.declarations.FirClass
1011
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
1112
import org.jetbrains.kotlin.fir.declarations.utils.memberDeclarationNameOrNull
@@ -174,7 +175,7 @@ class GlobalSymbolsCache(testing: Boolean = false) : Iterable<Symbol> {
174175
}
175176
}
176177

177-
@OptIn(SymbolInternals::class)
178+
@OptIn(SymbolInternals::class, DirectDeclarationsAccess::class)
178179
private fun methodDisambiguator(symbol: FirFunctionSymbol<*>): String {
179180
val session = symbol.moduleData.session
180181

semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/Utils.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirFileChecker
2525
import org.jetbrains.kotlin.fir.declarations.FirFile
2626
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
2727
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
28-
import org.jetbrains.kotlin.fir.extensions.FirExtensionSessionComponent.Factory
2928
import org.junit.jupiter.api.Assumptions.assumeFalse
3029
import org.junit.jupiter.api.DynamicTest
3130
import org.junit.jupiter.api.DynamicTest.dynamicTest
@@ -133,11 +132,8 @@ private class TestAnalyzerDeclarationCheckers(
133132
override val fileCheckers: Set<FirFileChecker> =
134133
setOf(
135134
object : FirFileChecker(MppCheckerKind.Common) {
136-
override fun check(
137-
declaration: FirFile,
138-
context: CheckerContext,
139-
reporter: DiagnosticReporter
140-
) {
135+
context(context: CheckerContext, reporter: DiagnosticReporter)
136+
override fun check(declaration: FirFile) {
141137
val ktFile = declaration.sourceFile ?: return
142138
val lineMap = LineMap(declaration)
143139
val visitor = SemanticdbVisitor(sourceRoot, ktFile, lineMap, globals, locals)

0 commit comments

Comments
 (0)