IR Inliner: Add KDocs for InlineFunctionUseSiteChecker.isPermitted
^KT-69172
^KT-69173
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt
index ae3ab9a..19b5e38 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt
@@ -34,6 +34,19 @@
)
fun interface InlineFunctionUseSiteChecker {
+ /**
+ * Check if the given use site of the inline function is permitted at the current phase of IR validation.
+ *
+ * Example 1: Check use sites after inlining all private functions.
+ * It is permitted to have only use sites of non-private functions in the whole IR tree. So, for a use site
+ * of a private inline function we should return `false` if it is met in the IR. For any other use site
+ * we should return `true` (== permitted).
+ *
+ * Example 2: Check use sites after inlining all functions.
+ * Normally, no use sites of inline functions should remain in the whole IR tree. So, if we met one we shall
+ * return `false` (== not permitted). However, there are a few exceptions that are temporarily permitted.
+ * For example, `inline external` intrinsics in Native (KT-66734).
+ */
fun isPermitted(inlineFunctionUseSite: IrMemberAccessExpression<IrFunctionSymbol>): Boolean
}