From 5e14aa34ec2ec9110361b6b21fc55fe023cbb498 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 5 Mar 2021 14:39:49 +0100 Subject: [PATCH] FIR IDE: add more info to CCE in symbol builder --- .../idea/frontend/api/fir/KtSymbolByFirBuilder.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt index ced47ce6f20..a431666536b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt @@ -223,7 +223,7 @@ internal class KtSymbolByFirBuilder private constructor( } } -private class BuilderCache private constructor( +private class BuilderCache private constructor( private val cache: ConcurrentMap, private val isReadOnly: Boolean ) { @@ -235,10 +235,11 @@ private class BuilderCache private constructor( } inline fun cache(key: From, calculation: () -> S): S { - if (isReadOnly) { - return (cache[key] ?: calculation()) as S - } - return cache.getOrPut(key, calculation) as S + val value = if (isReadOnly) { + cache[key] ?: calculation() + } else cache.getOrPut(key, calculation) + return value as? S + ?: error("Cannot cast ${value::class} to ${S::class}\n${DebugSymbolRenderer.render(value as KtSymbol)}") } }