FIR: forbid nullable source for function type parameters
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 15deba9..b923b91 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
@@ -22,7 +22,7 @@
 
     private fun check(typeRef: FirFunctionTypeParameter, context: CheckerContext, reporter: DiagnosticReporter) {
         val name = typeRef.name ?: return
-        val typeRefSource = typeRef.source ?: return
+        val typeRefSource = typeRef.source
         FirJvmNamesChecker.checkNameAndReport(name, typeRefSource, context, reporter)
     }
 }
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypesChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypesChecker.kt
index 2bde134..3e7732f 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypesChecker.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypesChecker.kt
@@ -237,7 +237,6 @@
     }
 
     private fun FirFunctionTypeParameter.findSourceForParameterName(): KtSourceElement? {
-        val source = this.source ?: return null
         val name = this.name ?: return null
         val treeStructure = source.treeStructure
         val nodes = source.lighterASTNode.getChildren(treeStructure)
diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt
index ca3b5c5..ecccb6f 100644
--- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt
+++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt
@@ -44,7 +44,7 @@
     // Existing @ParameterName annotation takes precedence
     if (attributes.parameterNameAttribute != null) return this
 
-    val fakeSource = parameter.source?.fakeElement(KtFakeSourceElementKind.ParameterNameAnnotationCall)
+    val fakeSource = parameter.source.fakeElement(KtFakeSourceElementKind.ParameterNameAnnotationCall)
     val parameterNameAnnotationCall = buildAnnotation {
         source = fakeSource
         annotationTypeRef =
diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFunctionTypeParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFunctionTypeParameter.kt
index 0f4d951..5a9d471 100644
--- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFunctionTypeParameter.kt
+++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/FirFunctionTypeParameter.kt
@@ -18,7 +18,7 @@
  * Generated from: [org.jetbrains.kotlin.fir.tree.generator.FirTree.functionTypeParameter]
  */
 abstract class FirFunctionTypeParameter : FirPureAbstractElement(), FirElement {
-    abstract override val source: KtSourceElement?
+    abstract override val source: KtSourceElement
     abstract val name: Name?
     abstract val returnTypeRef: FirTypeRef
 
diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFunctionTypeParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFunctionTypeParameterBuilder.kt
index c44cb83..8f755c4 100644
--- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFunctionTypeParameterBuilder.kt
+++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/builder/FirFunctionTypeParameterBuilder.kt
@@ -19,7 +19,7 @@
 
 @FirBuilderDsl
 class FirFunctionTypeParameterBuilder {
-    var source: KtSourceElement? = null
+    lateinit var source: KtSourceElement
     var name: Name? = null
     lateinit var returnTypeRef: FirTypeRef
 
diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFunctionTypeParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFunctionTypeParameterImpl.kt
index 95cacb8..ab225ad 100644
--- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFunctionTypeParameterImpl.kt
+++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/impl/FirFunctionTypeParameterImpl.kt
@@ -18,7 +18,7 @@
 import org.jetbrains.kotlin.name.Name
 
 internal class FirFunctionTypeParameterImpl(
-    override val source: KtSourceElement?,
+    override val source: KtSourceElement,
     override val name: Name?,
     override var returnTypeRef: FirTypeRef,
 ) : FirFunctionTypeParameter() {
diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTree.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTree.kt
index d3ab2d4..951fb7e 100644
--- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTree.kt
+++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTree.kt
@@ -672,6 +672,7 @@
     val functionTypeParameter: Element by element(Other) {
         parent(rootElement)
 
+        +field("source", sourceElementType, nullable = false)
         +field("name", nameType, nullable = true)
         +field("returnTypeRef", typeRef)
     }