SLC: use proper source PSI for no-arg constructor

If no-arg constructor stems from the primary constructor
(e.g., when all arguments have a default value), that primary
constructor should be used as source PSI.
Otherwise, i.e., literally default constructor, the containing class is
the source PSI.

^KT-70491 fixed
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
index 7e4dd46..6bf2432 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
@@ -168,7 +168,11 @@
     val primaryConstructor = constructors.singleOrNull { it.isPrimary }
     if (primaryConstructor != null && shouldGenerateNoArgOverload(primaryConstructor, constructors)) {
         result.add(
-            noArgConstructor(primaryConstructor.compilerVisibility.externalDisplayName, METHOD_INDEX_FOR_NO_ARG_OVERLOAD_CTOR)
+            noArgConstructor(
+                primaryConstructor.compilerVisibility.externalDisplayName,
+                primaryConstructor.sourcePsiSafe(),
+                METHOD_INDEX_FOR_NO_ARG_OVERLOAD_CTOR
+            )
         )
     }
 }
@@ -198,14 +202,15 @@
         else -> PsiModifier.PUBLIC
     }
 
-    return noArgConstructor(visibility, METHOD_INDEX_FOR_DEFAULT_CTOR)
+    return noArgConstructor(visibility, classOrObject, METHOD_INDEX_FOR_DEFAULT_CTOR)
 }
 
 private fun SymbolLightClassBase.noArgConstructor(
     visibility: String,
+    declaration: KtDeclaration?,
     methodIndex: Int,
 ): KtLightMethod = SymbolLightNoArgConstructor(
-    kotlinOrigin?.let {
+    declaration?.let {
         LightMemberOriginForDeclaration(
             originalElement = it,
             originKind = JvmDeclarationOriginKind.OTHER,
diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.fir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.fir.txt
index dede3b6..b2fa288 100644
--- a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.fir.txt
+++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.fir.txt
@@ -34,7 +34,7 @@
 /**
  * public final class Foo : kotlin/Any {
  *
- *   // signature: <init>(ZBCCSIJFDLjava/lang/String;[I[J[D[Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;LEm;[LEm;)V
+ *   // signature: <init>(ZBCCSIJFDLjava/lang/String;[I[J[DLkotlin/Array;Ljava/lang/Class;Lkotlin/Array;LEm;Lkotlin/Array;)V
  *   public constructor(z: kotlin/Boolean (* = ... *), b: kotlin/Byte (* = ... *), c: kotlin/Char (* = ... *), c2: kotlin/Char (* = ... *), sh: kotlin/Short (* = ... *), i: kotlin/Int (* = ... *), l: kotlin/Long (* = ... *), f: kotlin/Float (* = ... *), d: kotlin/Double (* = ... *), s: kotlin/String (* = ... *), iarr: kotlin/IntArray (* = ... *), larr: kotlin/LongArray (* = ... *), darr: kotlin/DoubleArray (* = ... *), sarr: kotlin/Array<kotlin/String> (* = ... *), cl: java/lang/Class<*> (* = ... *), clarr: kotlin/Array<java/lang/Class<*>> (* = ... *), em: Em (* = ... *), emarr: kotlin/Array<Em> (* = ... *))
  *
  *   // signature: foo(I)V
diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.fir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.fir.txt
index 6a2c315..0d5767a 100644
--- a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.fir.txt
+++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.fir.txt
@@ -34,7 +34,7 @@
 /**
  * public final class Foo : kotlin/Any {
  *
- *   // signature: <init>(ZBCCSIJFDLjava/lang/String;[I[J[D[Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;LEm;[LEm;)V
+ *   // signature: <init>(ZBCCSIJFDLjava/lang/String;[I[J[DLkotlin/Array;Ljava/lang/Class;Lkotlin/Array;LEm;Lkotlin/Array;)V
  *   public constructor(z: kotlin/Boolean (* = ... *), b: kotlin/Byte (* = ... *), c: kotlin/Char (* = ... *), c2: kotlin/Char (* = ... *), sh: kotlin/Short (* = ... *), i: kotlin/Int (* = ... *), l: kotlin/Long (* = ... *), f: kotlin/Float (* = ... *), d: kotlin/Double (* = ... *), s: kotlin/String (* = ... *), iarr: kotlin/IntArray (* = ... *), larr: kotlin/LongArray (* = ... *), darr: kotlin/DoubleArray (* = ... *), sarr: kotlin/Array<kotlin/String> (* = ... *), cl: java/lang/Class<*> (* = ... *), clarr: kotlin/Array<java/lang/Class<*>> (* = ... *), em: Em (* = ... *), emarr: kotlin/Array<Em> (* = ... *))
  *
  *   // signature: foo(I)V