diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt index c7918316638..be819795dc8 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt @@ -65,7 +65,7 @@ public class PropertyReferenceCodegen( v.defineClass( element, V1_6, - ACC_FINAL or ACC_SUPER or AsmUtil.getVisibilityAccessFlagForAnonymous(classDescriptor), // TODO: test inline + ACC_FINAL or ACC_SUPER or AsmUtil.getVisibilityAccessFlagForAnonymous(classDescriptor), asmType.getInternalName(), null, superAsmType.getInternalName(), diff --git a/compiler/testData/writeFlags/callableReference/visibility/functionReference.kt b/compiler/testData/writeFlags/callableReference/visibility/functionReference.kt new file mode 100644 index 00000000000..6ff451d264e --- /dev/null +++ b/compiler/testData/writeFlags/callableReference/visibility/functionReference.kt @@ -0,0 +1,9 @@ +class A { + fun foo() {} + + val bar = A::foo +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: A$bar$1 +// FLAGS: ACC_FINAL, ACC_SUPER diff --git a/compiler/testData/writeFlags/callableReference/visibility/functionReferenceInInlineFunction.kt b/compiler/testData/writeFlags/callableReference/visibility/functionReferenceInInlineFunction.kt new file mode 100644 index 00000000000..ac3186c0552 --- /dev/null +++ b/compiler/testData/writeFlags/callableReference/visibility/functionReferenceInInlineFunction.kt @@ -0,0 +1,9 @@ +class A { + fun foo() {} + + inline fun bar() = A::foo +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: A$bar$1 +// FLAGS: ACC_FINAL, ACC_PUBLIC, ACC_SUPER diff --git a/compiler/testData/writeFlags/callableReference/visibility/propertyReference.kt b/compiler/testData/writeFlags/callableReference/visibility/propertyReference.kt new file mode 100644 index 00000000000..8f737e2a173 --- /dev/null +++ b/compiler/testData/writeFlags/callableReference/visibility/propertyReference.kt @@ -0,0 +1,9 @@ +class A { + val foo = "" + + val bar = A::foo +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: A$bar$1 +// FLAGS: ACC_FINAL, ACC_SUPER diff --git a/compiler/testData/writeFlags/callableReference/visibility/propertyReferenceInInlineFunction.kt b/compiler/testData/writeFlags/callableReference/visibility/propertyReferenceInInlineFunction.kt new file mode 100644 index 00000000000..261fa973e3e --- /dev/null +++ b/compiler/testData/writeFlags/callableReference/visibility/propertyReferenceInInlineFunction.kt @@ -0,0 +1,9 @@ +class A { + val foo = "" + + inline fun bar() = A::foo +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: A$bar$1 +// FLAGS: ACC_FINAL, ACC_PUBLIC, ACC_SUPER diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java index e94cfa19831..41638666d1d 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -35,6 +35,48 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("compiler/testData/writeFlags/callableReference") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class CallableReference extends AbstractWriteFlagsTest { + public void testAllFilesPresentInCallableReference() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags/callableReference"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("compiler/testData/writeFlags/callableReference/visibility") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Visibility extends AbstractWriteFlagsTest { + public void testAllFilesPresentInVisibility() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags/callableReference/visibility"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("functionReference.kt") + public void testFunctionReference() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/writeFlags/callableReference/visibility/functionReference.kt"); + doTest(fileName); + } + + @TestMetadata("functionReferenceInInlineFunction.kt") + public void testFunctionReferenceInInlineFunction() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/writeFlags/callableReference/visibility/functionReferenceInInlineFunction.kt"); + doTest(fileName); + } + + @TestMetadata("propertyReference.kt") + public void testPropertyReference() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/writeFlags/callableReference/visibility/propertyReference.kt"); + doTest(fileName); + } + + @TestMetadata("propertyReferenceInInlineFunction.kt") + public void testPropertyReferenceInInlineFunction() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/writeFlags/callableReference/visibility/propertyReferenceInInlineFunction.kt"); + doTest(fileName); + } + } + } + @TestMetadata("compiler/testData/writeFlags/class") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)