Fix visibility flags for lambda classes in InnerClasses attribute

This commit is contained in:
Alexander Udalov
2016-02-18 20:56:44 +03:00
parent 343735e36c
commit 36de3008e3
11 changed files with 102 additions and 18 deletions
@@ -103,6 +103,15 @@ public class InnerClassInfoGenTest extends CodegenTestCase {
checkAccess("A", "PublicClass", ACC_PUBLIC);
}
public void testLambdaClassFlags() {
InnerClassAttribute foo = new InnerClassAttribute("A$foo$1", null, null, ACC_STATIC | ACC_FINAL);
InnerClassAttribute bar = new InnerClassAttribute("A$bar$1", null, null, ACC_STATIC | ACC_FINAL);
extractAndCompareInnerClasses("A", foo, bar);
extractAndCompareInnerClasses("A$foo$1", foo);
extractAndCompareInnerClasses("A$bar$1", bar);
}
private void checkAccess(@NotNull String outerName, @NotNull final String innerName, int accessFlags) {
@@ -644,6 +644,27 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
}
}
@TestMetadata("compiler/testData/writeFlags/lambda")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Lambda extends AbstractWriteFlagsTest {
public void testAllFilesPresentInLambda() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags/lambda"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("lambdaInInlineFunction.kt")
public void testLambdaInInlineFunction() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/lambda/lambdaInInlineFunction.kt");
doTest(fileName);
}
@TestMetadata("simpleLambda.kt")
public void testSimpleLambda() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/lambda/simpleLambda.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/writeFlags/lateinit")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)