Skip to content

Commit d4c495e

Browse files
committed
Drop kotlin.contracts usage from semanticdb-kotlinc
1 parent ae00302 commit d4c495e

9 files changed

Lines changed: 2 additions & 46 deletions

File tree

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

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sourcegraph.semanticdb_kotlinc
22

33
import java.nio.file.Path
4-
import kotlin.contracts.ExperimentalContracts
54
import org.jetbrains.kotlin.*
65
import org.jetbrains.kotlin.com.intellij.lang.LighterASTNode
76
import org.jetbrains.kotlin.com.intellij.util.diff.FlyweightCapableTreeStructure
@@ -31,7 +30,6 @@ import org.jetbrains.kotlin.name.FqName
3130

3231
open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtension(session) {
3332
companion object {
34-
@OptIn(ExperimentalContracts::class)
3533
val visitors: MutableMap<KtSourceFile, SemanticdbVisitor> = mutableMapOf()
3634

3735
private fun getIdentifier(element: KtSourceElement): KtSourceElement =
@@ -78,10 +76,9 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
7876
private class SemanticFileChecker(private val sourceroot: Path) :
7977
FirFileChecker(MppCheckerKind.Common) {
8078
companion object {
81-
@OptIn(ExperimentalContracts::class) val globals = GlobalSymbolsCache()
79+
val globals = GlobalSymbolsCache()
8280
}
8381

84-
@OptIn(ExperimentalContracts::class)
8582
context(context: CheckerContext, reporter: DiagnosticReporter)
8683
override fun check(declaration: FirFile) {
8784
val ktFile = declaration.sourceFile ?: return
@@ -92,7 +89,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
9289
}
9390

9491
class SemanticImportsChecker : FirFileChecker(MppCheckerKind.Common) {
95-
@OptIn(ExperimentalContracts::class)
9692
context(context: CheckerContext, reporter: DiagnosticReporter)
9793
override fun check(declaration: FirFile) {
9894
val ktFile = declaration.sourceFile ?: return
@@ -167,7 +163,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
167163
}
168164

169165
private class SemanticClassLikeChecker : FirClassLikeChecker(MppCheckerKind.Common) {
170-
@OptIn(ExperimentalContracts::class)
171166
context(context: CheckerContext, reporter: DiagnosticReporter)
172167
override fun check(declaration: FirClassLikeDeclaration) {
173168
val source = declaration.source ?: return
@@ -196,7 +191,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
196191
}
197192

198193
private class SemanticConstructorChecker : FirConstructorChecker(MppCheckerKind.Common) {
199-
@OptIn(ExperimentalContracts::class)
200194
context(context: CheckerContext, reporter: DiagnosticReporter)
201195
override fun check(declaration: FirConstructor) {
202196
val source = declaration.source ?: return
@@ -231,7 +225,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
231225
}
232226

233227
private class SemanticSimpleFunctionChecker : FirSimpleFunctionChecker(MppCheckerKind.Common) {
234-
@OptIn(ExperimentalContracts::class)
235228
context(context: CheckerContext, reporter: DiagnosticReporter)
236229
override fun check(declaration: FirSimpleFunction) {
237230
val source = declaration.source ?: return
@@ -249,7 +242,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
249242

250243
private class SemanticAnonymousFunctionChecker :
251244
FirAnonymousFunctionChecker(MppCheckerKind.Common) {
252-
@OptIn(ExperimentalContracts::class)
253245
context(context: CheckerContext, reporter: DiagnosticReporter)
254246
override fun check(declaration: FirAnonymousFunction) {
255247
val source = declaration.source ?: return
@@ -260,7 +252,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
260252
}
261253

262254
private class SemanticPropertyChecker : FirPropertyChecker(MppCheckerKind.Common) {
263-
@OptIn(ExperimentalContracts::class)
264255
context(context: CheckerContext, reporter: DiagnosticReporter)
265256
override fun check(declaration: FirProperty) {
266257
val source = declaration.source ?: return
@@ -277,7 +268,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
277268
}
278269

279270
private class SemanticValueParameterChecker : FirValueParameterChecker(MppCheckerKind.Common) {
280-
@OptIn(ExperimentalContracts::class)
281271
context(context: CheckerContext, reporter: DiagnosticReporter)
282272
override fun check(declaration: FirValueParameter) {
283273
val source = declaration.source ?: return
@@ -294,7 +284,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
294284
}
295285

296286
private class SemanticTypeParameterChecker : FirTypeParameterChecker(MppCheckerKind.Common) {
297-
@OptIn(ExperimentalContracts::class)
298287
context(context: CheckerContext, reporter: DiagnosticReporter)
299288
override fun check(declaration: FirTypeParameter) {
300289
val source = declaration.source ?: return
@@ -305,7 +294,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
305294
}
306295

307296
private class SemanticTypeAliasChecker : FirTypeAliasChecker(MppCheckerKind.Common) {
308-
@OptIn(ExperimentalContracts::class)
309297
context(context: CheckerContext, reporter: DiagnosticReporter)
310298
override fun check(declaration: FirTypeAlias) {
311299
val source = declaration.source ?: return
@@ -317,7 +305,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
317305

318306
private class SemanticPropertyAccessorChecker :
319307
FirPropertyAccessorChecker(MppCheckerKind.Common) {
320-
@OptIn(ExperimentalContracts::class)
321308
context(context: CheckerContext, reporter: DiagnosticReporter)
322309
override fun check(declaration: FirPropertyAccessor) {
323310
val source = declaration.source ?: return
@@ -346,7 +333,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
346333

347334
private class SemanticQualifiedAccessExpressionChecker :
348335
FirQualifiedAccessExpressionChecker(MppCheckerKind.Common) {
349-
@OptIn(ExperimentalContracts::class)
350336
context(context: CheckerContext, reporter: DiagnosticReporter)
351337
override fun check(expression: FirQualifiedAccessExpression) {
352338
val source = expression.source ?: return
@@ -381,7 +367,6 @@ open class AnalyzerCheckers(session: FirSession) : FirAdditionalCheckersExtensio
381367

382368
private class SemanticClassReferenceExpressionChecker :
383369
FirTypeOperatorCallChecker(MppCheckerKind.Common) {
384-
@OptIn(ExperimentalContracts::class)
385370
context(context: CheckerContext, reporter: DiagnosticReporter)
386371
override fun check(expression: FirTypeOperatorCall) {
387372
val typeRef = expression.conversionTypeRef

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sourcegraph.semanticdb_kotlinc
22

33
import com.sourcegraph.semanticdb.SemanticdbOptions
4-
import kotlin.contracts.ExperimentalContracts
54
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
65
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
76
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
@@ -10,7 +9,6 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
109
import org.scip_code.scip.Document
1110

1211
@OptIn(ExperimentalCompilerApi::class)
13-
@ExperimentalContracts
1412
class AnalyzerRegistrar(private val callback: (Document) -> Unit = {}) :
1513
CompilerPluginRegistrar() {
1614
override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) {

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import java.io.PrintWriter
66
import java.io.Writer
77
import java.nio.file.Path
88
import java.nio.file.Paths
9-
import kotlin.contracts.ExperimentalContracts
109
import org.jetbrains.kotlin.KtSourceFile
1110
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
1211
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
@@ -25,7 +24,6 @@ import org.scip_code.scip.Document
2524
* file's [Document] and serializes it under `<targetRoot>/META-INF/scip/<relative-path>.scip`.
2625
* Files outside the source root are skipped with a stderr warning.
2726
*/
28-
@ExperimentalContracts
2927
class PostAnalysisExtension(
3028
private val sourceRoot: Path,
3129
private val targetRoot: Path,

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.sourcegraph.semanticdb.ScipDocumentBuilder
44
import com.sourcegraph.semanticdb.ScipShardPaths
55
import java.nio.file.Path
66
import java.nio.file.Paths
7-
import kotlin.contracts.ExperimentalContracts
87
import org.jetbrains.kotlin.KtSourceElement
98
import org.jetbrains.kotlin.KtSourceFile
109
import org.jetbrains.kotlin.fir.FirElement
@@ -29,7 +28,6 @@ import org.scip_code.scip.signature
2928
import org.scip_code.scip.symbolInformation
3029

3130
/** Builds a SCIP [Document] for a single Kotlin source file. */
32-
@ExperimentalContracts
3331
class SemanticdbTextDocumentBuilder(
3432
private val sourceroot: Path,
3533
private val file: KtSourceFile,

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sourcegraph.semanticdb_kotlinc
22

33
import java.nio.file.Path
4-
import kotlin.contracts.ExperimentalContracts
54
import org.jetbrains.kotlin.KtSourceElement
65
import org.jetbrains.kotlin.KtSourceFile
76
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
@@ -18,7 +17,6 @@ import org.scip_code.scip.Document
1817
* [AnalyzerCheckers] call into this and the resulting [Document] is written as a
1918
* `.scip` shard at the end of compilation.
2019
*/
21-
@ExperimentalContracts
2220
class SemanticdbVisitor(
2321
sourceroot: Path,
2422
file: KtSourceFile,

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package com.sourcegraph.semanticdb_kotlinc
33
import com.sourcegraph.semanticdb.LocalSymbolsCache as SharedLocalSymbolsCache
44
import com.sourcegraph.semanticdb_kotlinc.SemanticdbSymbolDescriptor.Kind
55
import java.lang.System.err
6-
import kotlin.contracts.ExperimentalContracts
7-
import kotlin.contracts.contract
86
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.isLocalMember
97
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingSymbol
108
import org.jetbrains.kotlin.fir.declarations.DirectDeclarationsAccess
@@ -20,7 +18,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.*
2018
import org.jetbrains.kotlin.name.FqName
2119
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
2220

23-
@ExperimentalContracts
2421
class GlobalSymbolsCache(testing: Boolean = false) : Iterable<Symbol> {
2522
private val globals =
2623
if (testing) LinkedHashMap<FirBasedSymbol<*>, Symbol>()
@@ -80,17 +77,12 @@ class GlobalSymbolsCache(testing: Boolean = false) : Iterable<Symbol> {
8077
return uncachedSymbol(symbol).also { if (it.isGlobal()) packages[symbol] = it }
8178
}
8279

83-
private fun skip(symbol: FirBasedSymbol<*>?): Boolean {
84-
contract { returns(false) implies (symbol != null) }
85-
return symbol == null || symbol is FirAnonymousFunctionSymbol
86-
}
87-
8880
@OptIn(SymbolInternals::class)
8981
private fun uncachedSymbol(
9082
symbol: FirBasedSymbol<*>?,
9183
locals: LocalSymbolsCache
9284
): Symbol {
93-
if (skip(symbol)) return Symbol.NONE
85+
if (symbol == null || symbol is FirAnonymousFunctionSymbol) return Symbol.NONE
9486

9587
if (symbol.fir.isLocalMember) return locals + symbol
9688

@@ -219,7 +211,6 @@ fun LocalSymbolsCache(): LocalSymbolsCache =
219211

220212
operator fun LocalSymbolsCache.plus(symbol: FirBasedSymbol<*>): Symbol = put(symbol)
221213

222-
@ExperimentalContracts
223214
class SymbolsCache(private val globals: GlobalSymbolsCache, private val locals: LocalSymbolsCache) {
224215
operator fun get(symbol: FirBasedSymbol<*>) = globals[symbol, locals]
225216
operator fun get(symbol: FqName) = globals[symbol]

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import io.kotest.matchers.shouldNotBe
1313
import java.io.File
1414
import java.nio.file.Path
1515
import java.nio.file.Paths
16-
import kotlin.contracts.ExperimentalContracts
1716
import kotlin.test.Test
1817
import kotlin.test.assertEquals
1918
import org.intellij.lang.annotations.Language
@@ -24,7 +23,6 @@ import org.scip_code.scip.Occurrence
2423
import org.scip_code.scip.SymbolInformation
2524

2625
@OptIn(ExperimentalCompilerApi::class)
27-
@ExperimentalContracts
2826
class AnalyzerTest {
2927
fun compileSemanticdb(path: Path, @Language("kotlin") code: String): Document {
3028
val buildPath = File(path.resolve("build").toString()).apply { mkdir() }

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ import com.sourcegraph.semanticdb_kotlinc.*
44
import com.sourcegraph.semanticdb_kotlinc.test.ExpectedSymbols.ScipData
55
import com.sourcegraph.semanticdb_kotlinc.test.ExpectedSymbols.SymbolCacheData
66
import com.tschuchort.compiletesting.SourceFile
7-
import kotlin.contracts.ExperimentalContracts
87
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
98
import org.junit.jupiter.api.TestFactory
109
import org.scip_code.scip.Occurrence
1110
import org.scip_code.scip.SymbolInformation
1211

1312
@ExperimentalCompilerApi
14-
@ExperimentalContracts
1513
class SemanticdbSymbolsTest {
1614
@TestFactory
1715
fun `method disambiguator`() =

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import io.kotest.matchers.collections.shouldContainInOrder
1111
import io.kotest.matchers.shouldBe
1212
import java.nio.file.Path
1313
import java.nio.file.Paths
14-
import kotlin.contracts.ExperimentalContracts
1514
import org.intellij.lang.annotations.Language
1615
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
1716
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
@@ -55,7 +54,6 @@ fun SourceFile.Companion.testKt(@Language("kotlin") contents: String): SourceFil
5554
kotlin("Test.kt", contents)
5655

5756
@ExperimentalCompilerApi
58-
@ExperimentalContracts
5957
fun List<ExpectedSymbols>.mapCheckExpectedSymbols(): List<DynamicTest> =
6058
this.flatMap { (testName, source, symbolsData, scipData) ->
6159
val globals = GlobalSymbolsCache(testing = true)
@@ -85,7 +83,6 @@ fun List<ExpectedSymbols>.mapCheckExpectedSymbols(): List<DynamicTest> =
8583
})
8684
}
8785

88-
@ExperimentalContracts
8986
fun checkContainsExpectedSymbols(
9087
globals: GlobalSymbolsCache,
9188
locals: LocalSymbolsCache,
@@ -108,7 +105,6 @@ fun checkContainsExpectedScip(
108105
}
109106

110107
@OptIn(ExperimentalCompilerApi::class)
111-
@ExperimentalContracts
112108
private fun configureTestCompiler(
113109
source: SourceFile,
114110
globals: GlobalSymbolsCache,
@@ -127,7 +123,6 @@ private fun configureTestCompiler(
127123
return compilation
128124
}
129125

130-
@OptIn(ExperimentalContracts::class)
131126
private class TestAnalyzerDeclarationCheckers(
132127
globals: GlobalSymbolsCache,
133128
locals: LocalSymbolsCache,
@@ -148,7 +143,6 @@ private class TestAnalyzerDeclarationCheckers(
148143
}
149144

150145
private class TestAnalyzerCheckers(session: FirSession) : AnalyzerCheckers(session) {
151-
@OptIn(ExperimentalContracts::class)
152146
override val declarationCheckers: DeclarationCheckers
153147
get() =
154148
TestAnalyzerDeclarationCheckers(
@@ -158,7 +152,6 @@ private class TestAnalyzerCheckers(session: FirSession) : AnalyzerCheckers(sessi
158152
)
159153
}
160154

161-
@OptIn(ExperimentalContracts::class)
162155
class TestAnalyzerParamsProvider(
163156
session: FirSession,
164157
var globals: GlobalSymbolsCache,
@@ -180,7 +173,6 @@ val FirSession.testAnalyzerParamsProvider: TestAnalyzerParamsProvider by FirSess
180173
.sessionComponentAccessor()
181174

182175
@OptIn(ExperimentalCompilerApi::class)
183-
@ExperimentalContracts
184176
fun semanticdbVisitorAnalyzer(
185177
globals: GlobalSymbolsCache,
186178
locals: LocalSymbolsCache,

0 commit comments

Comments
 (0)