fixup! [FIR] do not use FirValueParameter for function type parameter
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt
index b74b7d1..af54411 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt
@@ -15,12 +15,11 @@
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirOfType
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirSafe
-import org.jetbrains.kotlin.fir.FirLabel
-import org.jetbrains.kotlin.fir.FirPackageDirective
+import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError
+import org.jetbrains.kotlin.fir.*
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.declarations.utils.isSuspend
 import org.jetbrains.kotlin.fir.expressions.*
-import org.jetbrains.kotlin.fir.psi
 import org.jetbrains.kotlin.fir.references.FirNamedReference
 import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
 import org.jetbrains.kotlin.fir.references.FirSuperReference
@@ -99,8 +98,12 @@
         val firDeclaration = if (isAnonymousFunction(declaration))
             declaration.toFirAnonymousFunction()
         else
-            declaration.getOrBuildFirOfType<FirCallableDeclaration>(firResolveSession)
-        return firDeclaration.returnTypeRef.coneType.asKtType()
+            declaration.getOrBuildFir(firResolveSession)
+        return when (firDeclaration) {
+            is FirCallableDeclaration -> firDeclaration.returnTypeRef.coneType.asKtType()
+            is FirFunctionTypeParameter -> firDeclaration.returnTypeRef.coneType.asKtType()
+            else -> unexpectedElementError<FirElement>(firDeclaration)
+        }
     }
 
     override fun getFunctionalTypeForKtFunction(declaration: KtFunction): KtType {
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt
index 768c16f..03de7b0 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt
@@ -121,7 +121,7 @@
                     append(classId.asSingleFqName().toString())
                     val parameters = buildList {
                         receiverTypeRef?.let(::add)
-                        valueParameters.mapTo(this) { it.returnTypeRef }
+                        parameters.mapTo(this) { it.returnTypeRef }
                         returnTypeRef.let(::add)
                     }
                     if (parameters.isNotEmpty()) {
diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/types/functionalTypeArgument.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/types/functionalTypeArgument.txt
index 0130de8..17750fb 100644
--- a/analysis/low-level-api-fir/testdata/getOrBuildFir/types/functionalTypeArgument.txt
+++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/types/functionalTypeArgument.txt
@@ -1,6 +1,6 @@
 KT element: KtParameter
-FIR element: FirValueParameterImpl
+FIR element: FirFunctionTypeParameterImpl
 FIR source kind: KtRealSourceElementKind
 
 FIR element rendered:
-R|kotlin/Int|
+R|kotlin/Int|
\ No newline at end of file
diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmNamesChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmNamesChecker.kt
index 16d4588..dfac804 100644
--- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmNamesChecker.kt
+++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmNamesChecker.kt
@@ -21,22 +21,22 @@
     private val DANGEROUS_CHARS = setOf('?', '*', '"', '|', '%')
 
 
-    fun checkNameAndReport(name: Name, source: KtSourceElement?, context: CheckerContext, reporter: DiagnosticReporter) {
-        if (source != null &&
-            source.kind !is KtFakeSourceElementKind &&
+    fun checkNameAndReport(name: Name, declarationSource: KtSourceElement?, context: CheckerContext, reporter: DiagnosticReporter) {
+        if (declarationSource != null &&
+            declarationSource.kind !is KtFakeSourceElementKind &&
             !name.isSpecial
         ) {
             val nameString = name.asString()
             if (nameString.any { it in INVALID_CHARS }) {
                 reporter.reportOn(
-                    source,
+                    declarationSource,
                     FirErrors.INVALID_CHARACTERS,
                     "contains illegal characters: ${INVALID_CHARS.intersect(nameString.toSet()).joinToString("")}",
                     context
                 )
             } else if (nameString.any { it in DANGEROUS_CHARS }) {
                 reporter.reportOn(
-                    source,
+                    declarationSource,
                     FirErrors.DANGEROUS_CHARACTERS,
                     DANGEROUS_CHARS.intersect(nameString.toSet()).joinToString(""),
                     context
diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/type/FirFunctionalTypeParameterNameChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/type/FirFunctionalTypeParameterNameChecker.kt
index 8ab5211..02a2be7 100644
--- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/type/FirFunctionalTypeParameterNameChecker.kt
+++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/type/FirFunctionalTypeParameterNameChecker.kt
@@ -6,14 +6,12 @@
 package org.jetbrains.kotlin.fir.analysis.jvm.checkers.type
 
 import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
-import org.jetbrains.kotlin.diagnostics.nameIdentifier
 import org.jetbrains.kotlin.fir.FirFunctionTypeParameter
 import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
 import org.jetbrains.kotlin.fir.analysis.checkers.type.FirTypeRefChecker
 import org.jetbrains.kotlin.fir.analysis.jvm.FirJvmNamesChecker
 import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
 import org.jetbrains.kotlin.fir.types.FirTypeRef
-import org.jetbrains.kotlin.toKtLightSourceElement
 
 object FirFunctionalTypeParameterNameChecker : FirTypeRefChecker() {
     override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) {
@@ -26,11 +24,6 @@
     private fun check(typeRef: FirFunctionTypeParameter, context: CheckerContext, reporter: DiagnosticReporter) {
         val name = typeRef.name ?: return
         val typeRefSource = typeRef.source ?: return
-        FirJvmNamesChecker.checkNameAndReport(
-            name,
-            typeRefSource.treeStructure.nameIdentifier(typeRefSource.lighterASTNode)?.toKtLightSourceElement(typeRefSource.treeStructure),
-            context,
-            reporter
-        )
+        FirJvmNamesChecker.checkNameAndReport(name, typeRefSource, context, reporter)
     }
 }
\ No newline at end of file
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
index 57121a4..57a5afc 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt
@@ -18,8 +18,8 @@
 import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
 import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
 import org.jetbrains.kotlin.fir.analysis.getChild
-import org.jetbrains.kotlin.fir.containingClassLookupTag
 import org.jetbrains.kotlin.fir.containingClassForLocalAttr
+import org.jetbrains.kotlin.fir.containingClassLookupTag
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.declarations.utils.*
 import org.jetbrains.kotlin.fir.expressions.*
@@ -540,10 +540,10 @@
             }
         }
         is FirFunctionTypeRef -> {
-            val paramters = delegatedTypeRef.parameters
+            val parameters = delegatedTypeRef.parameters
 
             delegatedTypeRef.receiverTypeRef?.let { result.add(FirTypeRefSource(it, it.source)) }
-            for (valueParameter in paramters) {
+            for (valueParameter in parameters) {
                 val valueParamTypeRef = valueParameter.returnTypeRef
                 result.add(FirTypeRefSource(valueParamTypeRef, valueParamTypeRef.source))
             }
diff --git a/compiler/testData/diagnostics/tests/DefaultValueForParameterInFunctionType.kt b/compiler/testData/diagnostics/tests/DefaultValueForParameterInFunctionType.kt
index e71d64c..77169ad 100644
--- a/compiler/testData/diagnostics/tests/DefaultValueForParameterInFunctionType.kt
+++ b/compiler/testData/diagnostics/tests/DefaultValueForParameterInFunctionType.kt
@@ -1,11 +1,21 @@
 // FIR_IDENTICAL
 // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
 
+fun f(x: Int = 0) {}
+
+val inVal: (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
+
+fun inParam(fn: (x: Int = <!UNSUPPORTED!>0<!>)->Unit) {}
+
+fun inParamNested(fn1: (fn2: (n: Int = <!UNSUPPORTED!>0<!>)->Unit)->Unit) {}
+
+fun inReturn(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
+
 class A : (Int)->Unit {
     override fun invoke(p1: Int) {
         var lambda: (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
     }
 
     val prop: (x: Int = <!UNSUPPORTED!>0<!>)->Unit
-        get(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
+    get(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
 }