SLC: drop the assertion that class context shouldn't be null

...because it can be null if an anonymous object is returned as a value
of reified inline function, which isn't materialized as LC element.

^KT-59537 Fixed
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
index d4e00ad..ec795e3 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
@@ -125,9 +125,7 @@
 
     abstract override fun hashCode(): Int
 
-    override fun getContext(): PsiElement = parent ?: buildErrorWithAttachment("parent must not be null") {
-        withClassEntry("class", this@SymbolLightClassBase)
-    }
+    override fun getContext(): PsiElement? = parent
 
     override fun isEquivalentTo(another: PsiElement?): Boolean = PsiClassImplUtil.isClassEquivalentTo(this, another)
 
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestBase.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestBase.kt
index 83b59bb..c22b74c 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestBase.kt
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestBase.kt
@@ -7,6 +7,7 @@
 
 import com.intellij.openapi.project.Project
 import com.intellij.psi.*
+import java.nio.file.Path
 import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
 import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
 import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
@@ -17,7 +18,6 @@
 import org.jetbrains.kotlin.test.model.TestModule
 import org.jetbrains.kotlin.test.services.AssertionsService
 import org.junit.Assume
-import java.nio.file.Path
 
 open class AbstractSymbolLightClassesParentingTestBase(
     configurator: AnalysisApiTestConfigurator,
@@ -190,9 +190,18 @@
             }
 
             private fun checkDeclarationParent(declaration: PsiElement) {
-                val expectedParent = declarationStack.lastOrNull() ?: return
+                // NB: we deliberately put these retrievals before the bail-out below so that we can catch any potential exceptions.
+                val context = declaration.context
                 val parent = declaration.parent
-                assertions.assertNotNull(parent) { "Parent should not be null for ${declaration::class} with text ${declaration.text}" }
+                // NB: for a legitimate `null` parent case, e.g., an anonymous object as a return value of reified inline function,
+                // it will not have an expected parent from the stack, and we can bail out early here.
+                val expectedParent = declarationStack.lastOrNull() ?: return
+                assertions.assertNotNull(context) {
+                    "context should not be null for ${declaration::class} with text ${declaration.text}"
+                }
+                assertions.assertNotNull(parent) {
+                    "Parent should not be null for ${declaration::class} with text ${declaration.text}"
+                }
                 assertions.assertEquals(expectedParent, parent) {
                     "Unexpected parent for ${declaration::class} with text ${declaration.text}"
                 }
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java
index 5c7b9b8..6bf3b43 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java
index d7f4dbc..4cad3d0 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java
index 8916c78..ea3a2bd 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java
index 0d620de..13ac529 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java
index 4d7ec17..7784759 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java
index 2703525..be37a78 100644
--- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java
+++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java
@@ -430,6 +430,12 @@
         }
 
         @Test
+        @TestMetadata("reifiedInlineReturnsObject.kt")
+        public void testReifiedInlineReturnsObject() throws Exception {
+            runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt");
+        }
+
+        @Test
         @TestMetadata("simpleFunctions.kt")
         public void testSimpleFunctions() throws Exception {
             runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/simpleFunctions.kt");
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.fir.java
new file mode 100644
index 0000000..c183cac
--- /dev/null
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.fir.java
@@ -0,0 +1,17 @@
+final class null /* null*/ extends PaginatedTableModel<R> {
+  @java.lang.Override()
+  @org.jetbrains.annotations.NotNull()
+  public java.util.List<R> getRows();//  getRows()
+
+  private  ();//  .ctor()
+}
+
+public abstract class PaginatedTableModel /* PaginatedTableModel*/<R>  {
+  @org.jetbrains.annotations.NotNull()
+  public abstract java.util.List<R> getRows();//  getRows()
+
+  public  PaginatedTableModel(int);//  .ctor(int)
+}
+
+public final class ReifiedInlineReturnsObjectKt /* ReifiedInlineReturnsObjectKt*/ {
+}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.java
new file mode 100644
index 0000000..e6264be
--- /dev/null
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.java
@@ -0,0 +1,16 @@
+final class null /* null*/ extends PaginatedTableModel<R> {
+  @org.jetbrains.annotations.NotNull()
+  public java.util.List<R> getRows();//  getRows()
+
+  private  ();//  .ctor()
+}
+
+public abstract class PaginatedTableModel /* PaginatedTableModel*/<R>  {
+  @org.jetbrains.annotations.NotNull()
+  public abstract java.util.List<R> getRows();//  getRows()
+
+  public  PaginatedTableModel(int);//  .ctor(int)
+}
+
+public final class ReifiedInlineReturnsObjectKt /* ReifiedInlineReturnsObjectKt*/ {
+}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt
new file mode 100644
index 0000000..81e69b6
--- /dev/null
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.kt
@@ -0,0 +1,9 @@
+abstract class PaginatedTableModel<R>(initialPageSize: Int) {
+    abstract val rows: List<R>
+}
+
+inline fun <reified R> MutableList<R>.asTableModel(pageSize : Int = 42) =
+    object : PaginatedTableModel<R>(pageSize) {
+        override val rows
+            get() = this@asTableModel
+    }
\ No newline at end of file
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.lib.java
new file mode 100644
index 0000000..042a246
--- /dev/null
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/reifiedInlineReturnsObject.lib.java
@@ -0,0 +1,9 @@
+public abstract class PaginatedTableModel /* PaginatedTableModel*/<R>  {
+  @org.jetbrains.annotations.NotNull()
+  public abstract java.util.List<R> getRows();//  getRows()
+
+  public  PaginatedTableModel(int);//  .ctor(int)
+}
+
+public final class ReifiedInlineReturnsObjectKt /* ReifiedInlineReturnsObjectKt*/ {
+}