SLC: add nullability annotation to value param of non-synthetic enum members

^KT-57567
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt
index ff90465..e0623fc 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt
@@ -14,6 +14,7 @@
 import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
 import org.jetbrains.kotlin.asJava.classes.lazyPub
 import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
+import org.jetbrains.kotlin.builtins.StandardNames
 import org.jetbrains.kotlin.light.classes.symbol.*
 import org.jetbrains.kotlin.light.classes.symbol.annotations.annotateByKtType
 import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
@@ -59,7 +60,12 @@
         if (isDeclaredAsVararg()) return NullabilityType.NotNull
 
         val nullabilityApplicable = !containingMethod.hasModifierProperty(PsiModifier.PRIVATE) &&
-                !containingMethod.containingClass.let { it.isAnnotationType || it.isEnum }
+                !containingMethod.containingClass.isAnnotationType &&
+                // `enum` synthetic members (e.g., values or valueOf) are not applicable for nullability.
+                // In other words, `enum` non-synthetic members are applicable for nullability.
+                // Technically, we should retrieve the symbol for the containing method and see if its origin is not synthetic.
+                // But, only `enum#valueOf` has a value parameter we want to filter out, so this is cheap yet feasible.
+                (!containingMethod.containingClass.isEnum || containingMethod.name != StandardNames.ENUM_VALUE_OF.identifier)
 
         return if (nullabilityApplicable) {
             parameterSymbolPointer.withSymbol(ktModule) { getTypeNullability(it.returnType) }
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/enumMembers.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/enumMembers.fir.java
index 6f0b945..4908a4dc 100644
--- a/compiler/testData/asJava/lightClasses/lightClassByPsi/enumMembers.fir.java
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/enumMembers.fir.java
@@ -23,7 +23,7 @@
 
   @kotlin.jvm.JvmStatic()
   @org.jetbrains.annotations.Nullable()
-  public static final Event upTo(State);//  upTo(State)
+  public static final Event upTo(@org.jetbrains.annotations.NotNull() State);//  upTo(State)
 
   @org.jetbrains.annotations.NotNull()
   public static Event valueOf(java.lang.String) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;//  valueOf(java.lang.String)
@@ -61,7 +61,7 @@
 
   private  State();//  .ctor()
 
-  public final boolean isAtLeast(State);//  isAtLeast(State)
+  public final boolean isAtLeast(@org.jetbrains.annotations.NotNull() State);//  isAtLeast(State)
 
   public final boolean isFinished();//  isFinished()