From 7d50eb56704276eebd1a41382ec255e8db6925b6 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 27 Nov 2024 14:35:24 +0100 Subject: [PATCH] Fix review findings --- .../src/main/kotlin/KotlinFileExtractor.kt | 32 ------------------- .../src/main/kotlin/TrapWriter.kt | 21 ++++++------ .../src/main/kotlin/entities/Function.kt | 5 ++- .../kotlin/entities/FunctionalInterface.kt | 16 ++++------ 4 files changed, 17 insertions(+), 57 deletions(-) diff --git a/java/kotlin-extractor2/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor2/src/main/kotlin/KotlinFileExtractor.kt index cede8d6bec5..c0fe5279a36 100644 --- a/java/kotlin-extractor2/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor2/src/main/kotlin/KotlinFileExtractor.kt @@ -1336,38 +1336,6 @@ OLD: KE1 } } - private fun extractValueParameter( - id: Label, - t: IrType, - name: String, - locId: Label, - parent: Label, - idx: Int, - paramSourceDeclaration: Label, - syntheticParameterNames: Boolean, - isVararg: Boolean, - isNoinline: Boolean, - isCrossinline: Boolean - ): TypeResults { - val type = useType(t) - tw.writeParams(id, type.javaResult.id, idx, parent, paramSourceDeclaration) - tw.writeParamsKotlinType(id, type.kotlinResult.id) - tw.writeHasLocation(id, locId) - if (!syntheticParameterNames) { - tw.writeParamName(id, name) - } - if (isVararg) { - tw.writeIsVarargsParam(id) - } - if (isNoinline) { - addModifiers(id, "noinline") - } - if (isCrossinline) { - addModifiers(id, "crossinline") - } - return type - } - /** * mkContainerLabel is a lambda so that we get laziness: If the container is a file, then we * don't want to extract the file class unless something actually needs it. diff --git a/java/kotlin-extractor2/src/main/kotlin/TrapWriter.kt b/java/kotlin-extractor2/src/main/kotlin/TrapWriter.kt index c47e300b38e..441dc99cd58 100644 --- a/java/kotlin-extractor2/src/main/kotlin/TrapWriter.kt +++ b/java/kotlin-extractor2/src/main/kotlin/TrapWriter.kt @@ -60,31 +60,28 @@ class TrapLabelManager { } } + // TODO: This will only be used in a TrapWriter for a source file, not a diagnostic TRAP writer. Consider moving this out of this class private val locallyVisibleFunctionLabelMapping: MutableMap = mutableMapOf() fun getLocallyVisibleFunctionLabelMapping( key: KaFunctionSymbol ): LocallyVisibleFunctionLabels { - lock.withLock { - return locallyVisibleFunctionLabelMapping[key]!! - } + return locallyVisibleFunctionLabelMapping[key]!! } fun getOrAddLocallyVisibleFunctionLabelMapping( key: KaFunctionSymbol, add: (KaFunctionSymbol) -> LocallyVisibleFunctionLabels ): LocallyVisibleFunctionLabels { - lock.withLock { - val res = locallyVisibleFunctionLabelMapping[key] - if (res != null) { - return res - } - - val labels = add(key) - locallyVisibleFunctionLabelMapping[key] = labels - return labels + val res = locallyVisibleFunctionLabelMapping[key] + if (res != null) { + return res } + + val labels = add(key) + locallyVisibleFunctionLabelMapping[key] = labels + return labels } /* diff --git a/java/kotlin-extractor2/src/main/kotlin/entities/Function.kt b/java/kotlin-extractor2/src/main/kotlin/entities/Function.kt index 823fc7dc31e..7a3904a5307 100644 --- a/java/kotlin-extractor2/src/main/kotlin/entities/Function.kt +++ b/java/kotlin-extractor2/src/main/kotlin/entities/Function.kt @@ -643,12 +643,11 @@ OLD: KE1 fun KotlinFileExtractor.extractValueParameter( id: Label, t: KaType, - name: String, + name: String?, locId: Label, parent: Label, idx: Int, paramSourceDeclaration: Label, - syntheticParameterNames: Boolean, isVararg: Boolean, isNoinline: Boolean, isCrossinline: Boolean @@ -657,7 +656,7 @@ fun KotlinFileExtractor.extractValueParameter( tw.writeParams(id, type.javaResult.id, idx, parent, paramSourceDeclaration) tw.writeParamsKotlinType(id, type.kotlinResult.id) tw.writeHasLocation(id, locId) - if (!syntheticParameterNames) { + if (name != null) { tw.writeParamName(id, name) } if (isVararg) { diff --git a/java/kotlin-extractor2/src/main/kotlin/entities/FunctionalInterface.kt b/java/kotlin-extractor2/src/main/kotlin/entities/FunctionalInterface.kt index 401d41306db..5b17e40c9dc 100644 --- a/java/kotlin-extractor2/src/main/kotlin/entities/FunctionalInterface.kt +++ b/java/kotlin-extractor2/src/main/kotlin/entities/FunctionalInterface.kt @@ -90,7 +90,8 @@ fun KotlinFileExtractor.extractFunctionLiteral( // `kotlin.FunctionX<,,,>.invoke(,,)` functionSymbol, e, - listOf(builtinTypes.any, functionType) + listOf(builtinTypes.any, functionType), + CompilerGeneratedKinds.CALLABLE_CLASS ) /* @@ -257,7 +258,6 @@ private fun KotlinFileExtractor.addFunctionManual( methodId, idx, paramId, - syntheticParameterNames = false, isVararg = false, isNoinline = false, isCrossinline = false @@ -406,7 +406,7 @@ private fun KotlinFileExtractor.extractGeneratedClass( localFunction: KaFunctionSymbol, elementToReportOn: PsiElement, superTypes: List, - compilerGeneratedKindOverride: CompilerGeneratedKinds? = null // OLD: KE1 + compilerGeneratedKindOverride: CompilerGeneratedKinds ): Label { val ids = tw.lm.getLocallyVisibleFunctionLabelMapping(localFunction) @@ -448,8 +448,7 @@ private fun KotlinFileExtractor.extractGeneratedClass( superTypes: List, locId: Label, elementToReportOn: PsiElement, - compilerGeneratedKindOverride: CompilerGeneratedKinds? = null, - superConstructorSelector: (KaFunctionSymbol) -> Boolean = { it.valueParameters.isEmpty() }, + compilerGeneratedKindOverride: CompilerGeneratedKinds, extractSuperConstructorArgs: (Label) -> Unit = {}, /* OLD: KE1 @@ -460,10 +459,7 @@ private fun KotlinFileExtractor.extractGeneratedClass( val id = ids.type.javaResult.id.cast() val pkgId = extractPackage("") tw.writeClasses_or_interfaces(id, "", pkgId, id) - tw.writeCompiler_generated( - id, - (compilerGeneratedKindOverride ?: CompilerGeneratedKinds.CALLABLE_CLASS).kind - ) + tw.writeCompiler_generated(id, compilerGeneratedKindOverride.kind) tw.writeHasLocation(id, locId) // Extract constructor @@ -485,7 +481,7 @@ private fun KotlinFileExtractor.extractGeneratedClass( } else { val baseConstructor = baseClass.scope?.declarationScope?.constructors?.find { - superConstructorSelector(it) + it.valueParameters.isEmpty() } if (baseConstructor == null) { logger.warnElement("Cannot find base constructor", elementToReportOn)