From abe3598180cd0eb7bb8663836e515e1636b65322 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Sun, 15 Feb 2026 18:15:31 +0100 Subject: [PATCH] IJPL-207762 better diagnostics for missing serializer GitOrigin-RevId: 9221a07c88f070151b32e845473167512b8f2efe --- .../serialization/ExtensionPointSerializer.kt | 14 ++++++++++---- .../serialization/SerializerSearcher.kt | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/serialization/ExtensionPointSerializer.kt b/platform/analysis-impl/src/com/intellij/codeInsight/serialization/ExtensionPointSerializer.kt index 348b64f77c43..a83d0ca4e584 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/serialization/ExtensionPointSerializer.kt +++ b/platform/analysis-impl/src/com/intellij/codeInsight/serialization/ExtensionPointSerializer.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.serialization import com.intellij.openapi.components.ComponentManager @@ -150,9 +150,15 @@ class ExtensionPointSerializerBean : BaseKeyedLazyInstance { - val serializableClass = componentManager.loadClass(fqn, pluginDescriptor) - val serializer = SerializerSearcher.findSerializer(serializableClass) - return serializer ?: error("Cannot find serializer in $fqn class") + try { + val serializableClass = componentManager.loadClass(fqn, pluginDescriptor) + + val serializer = SerializerSearcher.findSerializer(serializableClass) + return serializer ?: error("Cannot find serializer in $fqn class") + } + catch (e: ReflectiveOperationException) { + throw IllegalStateException("Cannot find serializer in $fqn class", e) + } } override fun getKey(): String = implementationClass!! diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/serialization/SerializerSearcher.kt b/platform/analysis-impl/src/com/intellij/codeInsight/serialization/SerializerSearcher.kt index 70e5e41bf360..cf1e552a54e3 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/serialization/SerializerSearcher.kt +++ b/platform/analysis-impl/src/com/intellij/codeInsight/serialization/SerializerSearcher.kt @@ -6,8 +6,8 @@ import java.lang.reflect.Modifier internal object SerializerSearcher { fun findSerializer(serializableClass: Class): KSerializer? = - findSerializerInObjectClass(serializableClass) ?: - findSerializerInCompanionClass(serializableClass) + findSerializerInObjectClass(serializableClass) + ?: findSerializerInCompanionClass(serializableClass) private fun findSerializerInObjectClass(objectClass: Class<*>): KSerializer? { val instanceField = objectClass.fields.firstOrNull {