[FIR] KTIJ-24156: Add test data

This commit is contained in:
aleksandrina-streltsova
2023-01-09 13:26:13 +02:00
committed by Space Team
parent af414cfb5e
commit 3a6e3290aa
9 changed files with 65 additions and 2 deletions
@@ -106,6 +106,12 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByFqNameTestGenerated extend
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/nestedClass.kt");
}
@Test
@TestMetadata("typealias.kt")
public void testTypealias() throws Exception {
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/typealias.kt");
}
@Nested
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByFqName/withTestCompilerPluginEnabled")
@TestDataPath("$PROJECT_ROOT")
@@ -106,6 +106,12 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByFqNameTestGenerated extends
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/nestedClass.kt");
}
@Test
@TestMetadata("typealias.kt")
public void testTypealias() throws Exception {
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/typealias.kt");
}
@Nested
@TestMetadata("analysis/analysis-api/testData/symbols/symbolByFqName/withTestCompilerPluginEnabled")
@TestDataPath("$PROJECT_ROOT")
@@ -50,6 +50,13 @@ sealed class SymbolData {
}
}
data class TypeAliasData(val classId: ClassId) : SymbolData() {
override fun KtAnalysisSession.toSymbols(): List<KtSymbol> {
val symbol = getTypeAliasByClassId(classId) ?: error("Type alias $classId is not found")
return listOf(symbol)
}
}
data class CallableData(val callableId: CallableId) : SymbolData() {
override fun KtAnalysisSession.toSymbols(): List<KtSymbol> {
val classId = callableId.classId
@@ -71,10 +78,11 @@ sealed class SymbolData {
}
companion object {
val identifiers = arrayOf("callable:", "class:")
val identifiers = arrayOf("callable:", "class:", "typealias:")
fun create(data: String): SymbolData = when {
data.startsWith("class:") -> ClassData(ClassId.fromString(data.removePrefix("class:").trim()))
data.startsWith("typealias:") -> TypeAliasData(ClassId.fromString(data.removePrefix("typealias:").trim()))
data.startsWith("callable:") -> {
val fullName = data.removePrefix("callable:").trim()
val name = if ('.' in fullName) fullName.substringAfterLast(".") else fullName.substringAfterLast('/')
@@ -105,4 +105,10 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByFqNameTestGenerated
public void testNestedClass() throws Exception {
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/nestedClass.kt");
}
@Test
@TestMetadata("typealias.kt")
public void testTypealias() throws Exception {
runTest("analysis/analysis-api/testData/symbols/symbolByFqName/typealias.kt");
}
}
@@ -0,0 +1,11 @@
KtTypeAliasSymbol:
annotationsList: []
classIdIfNonLocal: kotlin/DeepRecursiveFunctionBlock
expandedType: kotlin/coroutines/SuspendFunction2<kotlin/DeepRecursiveScope<*, *>, kotlin/Any?, kotlin/Any?>
name: DeepRecursiveFunctionBlock
origin: LIBRARY
symbolKind: TOP_LEVEL
typeParameters: []
visibility: Private
getContainingModule: KtLibraryModule "Library kotlin-stdlib"
deprecationStatus: null
@@ -0,0 +1,4 @@
// See: KTIJ-24156
// DO_NOT_CHECK_SYMBOL_RESTORE_K1
// typealias: kotlin/DeepRecursiveFunctionBlock
@@ -0,0 +1 @@
private typealias DeepRecursiveFunctionBlock = suspend kotlin.DeepRecursiveScope<*, *>.(kotlin.Any?) -> kotlin.Any?
@@ -0,0 +1,11 @@
KtTypeAliasSymbol:
annotationsList: []
classIdIfNonLocal: kotlin/DeepRecursiveFunctionBlock
expandedType: @ExtensionFunctionType kotlin/coroutines/SuspendFunction2<kotlin/DeepRecursiveScope<*, *>, kotlin/Any?, kotlin/Any?>
name: DeepRecursiveFunctionBlock
origin: LIBRARY
symbolKind: TOP_LEVEL
typeParameters: []
visibility: Private
getContainingModule: KtLibraryModule "Library kotlin-stdlib"
deprecationStatus: null
@@ -13,8 +13,18 @@ internal class FirThreadSafeCache<K : Any, V, CONTEXT>(
private val createValue: (K, CONTEXT) -> V
) : FirCache<K, V, CONTEXT>() {
private val updating: ThreadLocal<Boolean> = ThreadLocal.withInitial { false }
override fun getValue(key: K, context: CONTEXT): V =
map.getOrPutWithNullableValue(key) { createValue(it, context) }
map.getOrPutWithNullableValue(key) {
if (updating.get()) error("Recursive update")
try {
updating.set(true)
createValue(it, context)
} finally {
updating.set(false)
}
}
override fun getValueIfComputed(key: K): V? =
map[key]?.nullValueToNull()