Make default methods for inlineOnly and reified functions package private
This commit is contained in:
@@ -50,6 +50,7 @@ import org.jetbrains.kotlin.psi.KtParameter;
|
|||||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||||
|
import org.jetbrains.kotlin.resolve.annotations.AnnotationUtilKt;
|
||||||
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
||||||
import org.jetbrains.kotlin.resolve.constants.ArrayValue;
|
import org.jetbrains.kotlin.resolve.constants.ArrayValue;
|
||||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||||
@@ -847,7 +848,9 @@ public class FunctionCodegen {
|
|||||||
|
|
||||||
// $default methods are never private to be accessible from other class files (e.g. inner) without the need of synthetic accessors
|
// $default methods are never private to be accessible from other class files (e.g. inner) without the need of synthetic accessors
|
||||||
// $default methods are never protected to be accessible from subclass nested classes
|
// $default methods are never protected to be accessible from subclass nested classes
|
||||||
int visibilityFlag = Visibilities.isPrivate(functionDescriptor.getVisibility()) ? AsmUtil.NO_FLAG_PACKAGE_PRIVATE : Opcodes.ACC_PUBLIC;
|
int visibilityFlag = Visibilities.isPrivate(functionDescriptor.getVisibility()) ||
|
||||||
|
AnnotationUtilKt.isInlineOnlyOrReified(functionDescriptor) ?
|
||||||
|
AsmUtil.NO_FLAG_PACKAGE_PRIVATE : Opcodes.ACC_PUBLIC;
|
||||||
int flags = visibilityFlag | getDeprecatedAccessFlag(functionDescriptor) | ACC_SYNTHETIC;
|
int flags = visibilityFlag | getDeprecatedAccessFlag(functionDescriptor) | ACC_SYNTHETIC;
|
||||||
if (!(functionDescriptor instanceof ConstructorDescriptor)) {
|
if (!(functionDescriptor instanceof ConstructorDescriptor)) {
|
||||||
flags |= ACC_STATIC | ACC_BRIDGE;
|
flags |= ACC_STATIC | ACC_BRIDGE;
|
||||||
|
|||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
class MyClass() {
|
||||||
|
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
inline fun test(s: String = "") {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TESTED_OBJECT_KIND: function
|
||||||
|
// TESTED_OBJECTS: MyClass, test$default
|
||||||
|
// FLAGS: ACC_STATIC, ACC_BRIDGE, ACC_SYNTHETIC
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
class MyClass() {
|
||||||
|
inline fun <reified T> test(s: String = "") {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TESTED_OBJECT_KIND: function
|
||||||
|
// TESTED_OBJECTS: MyClass, test$default
|
||||||
|
// FLAGS: ACC_STATIC, ACC_BRIDGE, ACC_SYNTHETIC
|
||||||
@@ -555,6 +555,18 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inlineOnlyFunInClass.kt")
|
||||||
|
public void testInlineOnlyFunInClass() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/inlineOnlyFunInClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("reifiedFunInClass.kt")
|
||||||
|
public void testReifiedFunInClass() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/reifiedFunInClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("topLevelFun.kt")
|
@TestMetadata("topLevelFun.kt")
|
||||||
public void testTopLevelFun() throws Exception {
|
public void testTopLevelFun() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/topLevelFun.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/function/withDefaultArguments/topLevelFun.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user