FIR LC: fix invalid type param upper bound
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt
index 34da108..de2ffaf 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/firLightUtils.kt
@@ -36,7 +36,7 @@
     psiContext: PsiElement,
     kotlinCollectionAsIs: Boolean = false
 ): PsiClassType? {
-    if (type !is KtNonErrorClassType) return null
+    if (type is KtClassErrorType) return null
     val psiType = type.asPsiType(
         psiContext,
         if (kotlinCollectionAsIs) KtTypeMappingMode.SUPER_TYPE_KOTLIN_COLLECTIONS_AS_IS else KtTypeMappingMode.SUPER_TYPE,
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt
index 0c401be..d3e713b 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/FirLightTypeParameter.kt
@@ -13,21 +13,17 @@
 import com.intellij.psi.impl.light.LightElement
 import com.intellij.psi.javadoc.PsiDocComment
 import com.intellij.psi.search.SearchScope
+import org.jetbrains.kotlin.analysis.api.isValid
+import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
+import org.jetbrains.kotlin.analysis.api.types.KtClassErrorType
+import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
 import org.jetbrains.kotlin.asJava.classes.KotlinSuperTypeListBuilder
 import org.jetbrains.kotlin.asJava.classes.cannotModify
 import org.jetbrains.kotlin.asJava.classes.lazyPub
 import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
 import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
 import org.jetbrains.kotlin.idea.KotlinLanguage
-import org.jetbrains.kotlin.analysis.api.isValid
-import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
-import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
 import org.jetbrains.kotlin.light.classes.symbol.*
-import org.jetbrains.kotlin.light.classes.symbol.FirLightTypeParameterListForSymbol
-import org.jetbrains.kotlin.light.classes.symbol.analyzeWithSymbolAsContext
-import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
-import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
-import org.jetbrains.kotlin.light.classes.symbol.mapSuperType
 import org.jetbrains.kotlin.name.StandardClassIds
 import org.jetbrains.kotlin.psi.KtTypeParameter
 import org.jetbrains.kotlin.psi.psiUtil.startOffset
@@ -66,8 +62,13 @@
         )
         analyzeWithSymbolAsContext(typeParameterSymbol) {
             typeParameterSymbol.upperBounds
-                .filterIsInstance<KtNonErrorClassType>()
-                .filter { it.classId != StandardClassIds.Any }
+                .filter { type ->
+                    when (type) {
+                        is KtNonErrorClassType -> type.classId != StandardClassIds.Any
+                        is KtClassErrorType -> false
+                        else -> true
+                    }
+                }
                 .mapNotNull {
                     mapSuperType(it, this@FirLightTypeParameter, kotlinCollectionAsIs = true)
                 }
@@ -84,11 +85,11 @@
 
     //PsiClass simple implementation
     override fun getImplementsList(): PsiReferenceList? = null
-    override fun getImplementsListTypes(): Array<PsiClassType> = PsiClassType.EMPTY_ARRAY
-    override fun getSuperClass(): PsiClass? = null
-    override fun getInterfaces(): Array<PsiClass> = PsiClass.EMPTY_ARRAY
-    override fun getSupers(): Array<PsiClass> = PsiClass.EMPTY_ARRAY
-    override fun getSuperTypes(): Array<PsiClassType> = PsiClassType.EMPTY_ARRAY
+    override fun getImplementsListTypes(): Array<PsiClassType> = PsiClassImplUtil.getImplementsListTypes(this)
+    override fun getSuperClass(): PsiClass? = PsiClassImplUtil.getSuperClass(this)
+    override fun getInterfaces(): Array<PsiClass> = PsiClassImplUtil.getInterfaces(this)
+    override fun getSupers(): Array<PsiClass> = PsiClassImplUtil.getSupers(this)
+    override fun getSuperTypes(): Array<PsiClassType> = PsiClassImplUtil.getSuperTypes(this)
     override fun getConstructors(): Array<PsiMethod> = PsiMethod.EMPTY_ARRAY
     override fun getInitializers(): Array<PsiClassInitializer> = PsiClassInitializer.EMPTY_ARRAY
     override fun getAllFields(): Array<PsiField> = PsiField.EMPTY_ARRAY
diff --git a/compiler/testData/asJava/ultraLightClasses/generics.fir.java b/compiler/testData/asJava/ultraLightClasses/generics.fir.java
index b5dac50..c98d7b7 100644
--- a/compiler/testData/asJava/ultraLightClasses/generics.fir.java
+++ b/compiler/testData/asJava/ultraLightClasses/generics.fir.java
@@ -52,7 +52,7 @@
 
   public  C(@org.jetbrains.annotations.NotNull() java.util.List<? extends java.lang.CharSequence>);//  .ctor(java.util.List<? extends java.lang.CharSequence>)
 
-  public final <V, U> T foo(V, @org.jetbrains.annotations.NotNull() C<V>, error.NonExistentClass);// <V, U>  foo(V, C<V>, error.NonExistentClass)
+  public final <V, U extends V> T foo(V, @org.jetbrains.annotations.NotNull() C<V>, error.NonExistentClass);// <V, U extends V>  foo(V, C<V>, error.NonExistentClass)
 
   public final Q getW(Q);//  getW(Q)
 
@@ -78,4 +78,4 @@
 public final class Sub /* Sub*/ extends K<K<?>> {
   public  Sub();//  .ctor()
 
-}
+}
\ No newline at end of file