JVM_IR: make constructors of named local classes public
They are accessible through reflection
This commit is contained in:
@@ -17,6 +17,8 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.util.PatchDeclarationParentsVisitor
|
||||
import org.jetbrains.kotlin.ir.util.isAnonymousObject
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
@@ -122,7 +124,10 @@ internal val localDeclarationsPhase = makeIrFilePhase<CommonBackendContext>(
|
||||
}
|
||||
|
||||
override fun forConstructor(declaration: IrConstructor, inInlineFunctionScope: Boolean): Visibility =
|
||||
scopedVisibility(inInlineFunctionScope)
|
||||
if (declaration.parentAsClass.isAnonymousObject)
|
||||
scopedVisibility(inInlineFunctionScope)
|
||||
else
|
||||
declaration.visibility
|
||||
|
||||
private fun scopedVisibility(inInlineFunctionScope: Boolean): Visibility =
|
||||
if (inInlineFunctionScope) Visibilities.PUBLIC else JavaVisibilities.PACKAGE_VISIBILITY
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
class Foo {
|
||||
fun a() {
|
||||
class S
|
||||
}
|
||||
}
|
||||
|
||||
// TESTED_OBJECT_KIND: function
|
||||
// TESTED_OBJECTS: Foo$a$S, <init>
|
||||
// FLAGS: ACC_PUBLIC
|
||||
+5
@@ -477,6 +477,11 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/enum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("localClass.kt")
|
||||
public void testLocalClass() throws Exception {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/localClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectInClass.kt")
|
||||
public void testObjectInClass() throws Exception {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/objectInClass.kt");
|
||||
|
||||
+5
@@ -477,6 +477,11 @@ public class IrWriteFlagsTestGenerated extends AbstractIrWriteFlagsTest {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/enum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("localClass.kt")
|
||||
public void testLocalClass() throws Exception {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/localClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectInClass.kt")
|
||||
public void testObjectInClass() throws Exception {
|
||||
runTest("compiler/testData/writeFlags/function/constructors/objectInClass.kt");
|
||||
|
||||
Reference in New Issue
Block a user