IR Inliner: Handle all functions in local classes at the 1st stage of inlining
* Inline all functions in local classes
* Generate accessors (even in private inline functions)
diff --git a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt
index 1570eb4..a0ae98e 100644
--- a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt
+++ b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt
@@ -18,7 +18,7 @@
import org.jetbrains.kotlin.backend.common.lower.at
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames
-import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
+import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.isPrivate
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
@@ -792,6 +792,8 @@
}
/**
- * Checks if the given function should be treated by 1st phase of inlining (inlining of private functions).
+ * Checks if the given function should be treated by 1st phase of inlining (inlining of private functions):
+ * - Either the function is private.
+ * - Or the function is declared inside a local class.
*/
-fun IrFunction.isConsideredAsPrivateForInlining(): Boolean = DescriptorVisibilities.isPrivate(visibility)
+fun IrFunction.isConsideredAsPrivateForInlining(): Boolean = isPrivate(visibility) || isLocal
diff --git a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/SyntheticAccessorLowering.kt b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/SyntheticAccessorLowering.kt
index 5e4cfdf..9cb07fb 100644
--- a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/SyntheticAccessorLowering.kt
+++ b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/SyntheticAccessorLowering.kt
@@ -25,6 +25,7 @@
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.utils.addToStdlib.getOrSetIfNull
import org.jetbrains.kotlin.utils.addToStdlib.runIf
+import org.jetbrains.kotlin.utils.addToStdlib.runUnless
/**
* Generates synthetic accessor functions for private declarations that are referenced from non-private inline functions,
@@ -153,15 +154,11 @@
val generatedAccessors = irFile::generatedAccessors.getOrSetIfNull(::GeneratedAccessors)
override fun visitFunction(declaration: IrFunction, data: TransformerData?): IrStatement {
- val newData = if (declaration.isInline) {
- if (!declaration.isConsideredAsPrivateForInlining()) {
- // By the time this lowering is executed, there must be no private inline functions, however, there are exceptions, for example,
- // suspendCoroutineUninterceptedOrReturn, which are somewhat magical.
- // If we encounter one, just ignore it.
- TransformerData(declaration)
- } else null
- } else {
- data
+ val newData = data ?: runIf(declaration.isInline && !declaration.isConsideredAsPrivateForInlining()) {
+ // By the time this lowering is executed, there must be no private inline functions; however,
+ // there are exceptions, for example, `suspendCoroutineUninterceptedOrReturn` which are somewhat magical.
+ // If we encounter one, ignore it.
+ TransformerData(declaration)
}
// Wrap it to the stage controller to avoid JS BE failing with not found lowered declaration signature
@@ -219,7 +216,7 @@
*/
private class GeneratedAccessor(
val accessor: IrFunction,
- val targetSymbol: IrSymbol
+ val targetSymbol: IrSymbol,
) {
val inlineFunctions: MutableSet<IrFunction> = hashSetOf()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt
new file mode 100644
index 0000000..6f95516
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<main> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ local class <no name provided>
+ private inline fun impl(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ public fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ internal fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt
new file mode 100644
index 0000000..1ba63dc
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<main> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ local class <no name provided>
+ private inline fun impl(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ public fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ public fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
index e42b446..6cbb66d 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
@@ -1,7 +1,3 @@
-// IGNORE_BACKEND: ANY
-// ^^^ Muted because IR validation fails due to presence of a link to `privateMethod()` inside the body of `inline fun impl()`
-// in anonymous object that was copied to the call site in another file. To be fixed in KT-71078.
-
// FILE: A.kt
internal inline fun internalInlineMethod(crossinline f: () -> String) = object {
private inline fun impl() = privateMethod() + f()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt
new file mode 100644
index 0000000..a0147a2
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<main> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ internal fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
index 93f62e0..8ee9a18 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
@@ -3,9 +3,11 @@
/* FILE package=<root> fileName=A.kt */
internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
- local class <no name provided>
- public inline fun run(): String
- /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
/* TARGET declaration */ private fun privateMethod(): String
/* ACCESSOR declaration */ public fun access$privateMethod$tAKt(): String
/* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
index d1f7f4b..7705e8a 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossFilePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
@@ -1,5 +1,3 @@
-// IDENTICAL_KLIB_SYNTHETIC_ACCESSOR_DUMPS
-
// FILE: A.kt
internal inline fun internalInlineMethod(crossinline f: () -> String) = object {
public inline fun run() = privateMethod() + f()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt
new file mode 100644
index 0000000..07bb243
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors-narrowed.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<lib> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ local class <no name provided>
+ private inline fun impl(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ public fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ internal fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt
new file mode 100644
index 0000000..4d52492
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.accessors.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<lib> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ local class <no name provided>
+ private inline fun impl(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ public fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ public fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
index 7c96bf4..a6c1fb8 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPrivateInlineMethodInLocalObject.kt
@@ -1,7 +1,3 @@
-// IGNORE_BACKEND: ANY
-// ^^^ Muted because IR validation fails due to presence of a link to `privateMethod()` inside the body of `inline fun impl()`
-// in anonymous object that was copied to the call site in another module. To be fixed in KT-71078.
-
// MODULE: lib
// FILE: A.kt
internal inline fun internalInlineMethod(crossinline f: () -> String) = object {
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt
new file mode 100644
index 0000000..c90e2e7
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors-narrowed.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<lib> */
+
+/* FILE package=<root> fileName=A.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ internal fun access$privateMethod$tAKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
index 4d2096d..5e4570e 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.accessors.txt
@@ -3,9 +3,11 @@
/* FILE package=<root> fileName=A.kt */
internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
- local class <no name provided>
- public inline fun run(): String
- /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
+ /* ACCESSOR use-site */ access$privateMethod$tAKt()
/* TARGET declaration */ private fun privateMethod(): String
/* ACCESSOR declaration */ public fun access$privateMethod$tAKt(): String
/* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
index 69d6376..2e9855d 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/crossModulePrivateLeak/leakingPrivateTopLevelFunThroughPublicInlineMethodInLocalObject.kt
@@ -1,5 +1,3 @@
-// IDENTICAL_KLIB_SYNTHETIC_ACCESSOR_DUMPS
-
// MODULE: lib
// FILE: A.kt
internal inline fun internalInlineMethod(crossinline f: () -> String) = object {
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors-narrowed.txt
index 3cdb98e..a307ee0 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors-narrowed.txt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors-narrowed.txt
@@ -5,7 +5,7 @@
internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
local class <no name provided>
private inline fun impl(): String
- /* TARGET use-site */ privateMethod()
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePrivateInlineMethodInLocalObjectKt()
public fun run(): String
/* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePrivateInlineMethodInLocalObjectKt()
/* TARGET declaration */ private fun privateMethod(): String
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors.txt
index d0a621f..e5adcc7 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors.txt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePrivateInlineMethodInLocalObject.accessors.txt
@@ -5,7 +5,7 @@
internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
local class <no name provided>
private inline fun impl(): String
- /* TARGET use-site */ privateMethod()
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePrivateInlineMethodInLocalObjectKt()
public fun run(): String
/* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePrivateInlineMethodInLocalObjectKt()
/* TARGET declaration */ private fun privateMethod(): String
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors-narrowed.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors-narrowed.txt
new file mode 100644
index 0000000..8fa3e80
--- /dev/null
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors-narrowed.txt
@@ -0,0 +1,13 @@
+/* MODULE name=<main> */
+
+/* FILE package=<root> fileName=usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt */
+
+internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt()
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt()
+/* TARGET declaration */ private fun privateMethod(): String
+/* ACCESSOR declaration */ internal fun access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt(): String
+ /* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors.txt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors.txt
index 65022c7..4f344ba 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors.txt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.accessors.txt
@@ -3,9 +3,11 @@
/* FILE package=<root> fileName=usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt */
internal inline fun internalInlineMethod(crossinline f: Function0<String>): String
- local class <no name provided>
- public inline fun run(): String
- /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt()
+ val this: <no name provided> =
+ local class <no name provided>
+ public inline fun run(): String
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt()
+ /* ACCESSOR use-site */ access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt()
/* TARGET declaration */ private fun privateMethod(): String
/* ACCESSOR declaration */ public fun access$privateMethod$tUsePrivateTopLevelFunInsidePublicInlineMethodInLocalObjectKt(): String
/* TARGET use-site */ privateMethod()
diff --git a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt
index 6e1391b..ae67869 100644
--- a/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt
+++ b/compiler/testData/klib/syntheticAccessors/topLevelPrivate/singleFile/usePrivateTopLevelFunInsidePublicInlineMethodInLocalObject.kt
@@ -1,5 +1,3 @@
-// IDENTICAL_KLIB_SYNTHETIC_ACCESSOR_DUMPS
-
internal inline fun internalInlineMethod(crossinline f: () -> String) = object {
public inline fun run() = privateMethod() + f()
}.run()