Back-end: write correct visibility flags for private inner classes
This commit is contained in:
@@ -96,7 +96,7 @@ public class FunctionGenTest extends CodegenTestCase {
|
||||
final Method f = foo.getMethod("f");
|
||||
final Object closure = f.invoke(obj);
|
||||
final Class<? extends Object> aClass = closure.getClass();
|
||||
final Field[] fields = aClass.getFields();
|
||||
final Field[] fields = aClass.getDeclaredFields();
|
||||
assertEquals(1, fields.length);
|
||||
assertEquals("$s", fields[0].getName());
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase {
|
||||
classVisitor = getClassVisitor(testedObject.kind, testedObject.name);
|
||||
cr.accept(classVisitor, ClassReader.SKIP_CODE);
|
||||
int expectedAccess = getExpectedFlags(fileText);
|
||||
assertEquals("Wrong access flag", expectedAccess, classVisitor.getAccess());
|
||||
assertEquals("Wrong access flag \n" + factory.asText(filename), expectedAccess, classVisitor.getAccess());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +126,9 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase {
|
||||
else if (visitorKind.equals("property")) {
|
||||
return new PropertyFlagsVisitor(testedObjectName);
|
||||
}
|
||||
else if (visitorKind.equals("innerClass")) {
|
||||
return new InnerClassFlagsVisitor(testedObjectName);
|
||||
}
|
||||
throw new IllegalArgumentException("Value of TESTED_OBJECT_KIND is incorrect: " + visitorKind);
|
||||
}
|
||||
|
||||
@@ -213,4 +216,25 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase {
|
||||
return access;
|
||||
}
|
||||
}
|
||||
|
||||
private static class InnerClassFlagsVisitor extends TestClassVisitor {
|
||||
private int access = 0;
|
||||
private final String innerClassName;
|
||||
|
||||
public InnerClassFlagsVisitor(String name) {
|
||||
innerClassName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInnerClass(String innerClassInternalName, String outerClassInternalName, String name, int access) {
|
||||
if (name.equals(innerClassName)) {
|
||||
this.access = access;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAccess() {
|
||||
return access;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ import org.jetbrains.jet.codegen.flags.AbstractWriteFlagsTest;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
|
||||
@TestMetadata("compiler/testData/writeFlags")
|
||||
@InnerTestClasses({WriteFlagsTestGenerated.Class.class, WriteFlagsTestGenerated.Function.class, WriteFlagsTestGenerated.Property.class})
|
||||
@InnerTestClasses({WriteFlagsTestGenerated.Class.class, WriteFlagsTestGenerated.Function.class, WriteFlagsTestGenerated.InnerClass.class, WriteFlagsTestGenerated.Property.class})
|
||||
public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInWriteFlags() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/class")
|
||||
@InnerTestClasses({Class.AccessFlags.class, Class.DeprecatedFlag.class})
|
||||
@InnerTestClasses({Class.AccessFlags.class, Class.DeprecatedFlag.class, Class.Visibility.class})
|
||||
public static class Class extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInClass() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/class"), "kt", true);
|
||||
@@ -102,11 +102,173 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/class/visibility")
|
||||
@InnerTestClasses({Visibility.Internal.class, Visibility.Private.class, Visibility.Public.class})
|
||||
public static class Visibility extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInVisibility() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/class/visibility"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/class/visibility/internal")
|
||||
public static class Internal extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInInternal() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/class/visibility/internal"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("class.kt")
|
||||
public void testClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/class.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enum.kt")
|
||||
public void testEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/enum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerClass.kt")
|
||||
public void testInnerClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/innerClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerEnum.kt")
|
||||
public void testInnerEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/innerEnum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerObject.kt")
|
||||
public void testInnerObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/innerObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerTrait.kt")
|
||||
public void testInnerTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/innerTrait.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("object.kt")
|
||||
public void testObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/object.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("trait.kt")
|
||||
public void testTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/internal/trait.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/class/visibility/private")
|
||||
public static class Private extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInPrivate() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/class/visibility/private"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("class.kt")
|
||||
public void testClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/class.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enum.kt")
|
||||
public void testEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/enum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerClass.kt")
|
||||
public void testInnerClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/innerClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerEnum.kt")
|
||||
public void testInnerEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/innerEnum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerObject.kt")
|
||||
public void testInnerObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/innerObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerTrait.kt")
|
||||
public void testInnerTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/innerTrait.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("object.kt")
|
||||
public void testObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/object.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("trait.kt")
|
||||
public void testTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/private/trait.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/class/visibility/public")
|
||||
public static class Public extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInPublic() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/class/visibility/public"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("class.kt")
|
||||
public void testClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/class.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enum.kt")
|
||||
public void testEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/enum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerClass.kt")
|
||||
public void testInnerClass() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/innerClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerEnum.kt")
|
||||
public void testInnerEnum() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/innerEnum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerObject.kt")
|
||||
public void testInnerObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/innerObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("innerTrait.kt")
|
||||
public void testInnerTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/innerTrait.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("object.kt")
|
||||
public void testObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/object.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("trait.kt")
|
||||
public void testTrait() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/class/visibility/public/trait.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Test innerSuite() {
|
||||
TestSuite suite = new TestSuite("Visibility");
|
||||
suite.addTestSuite(Visibility.class);
|
||||
suite.addTestSuite(Internal.class);
|
||||
suite.addTestSuite(Private.class);
|
||||
suite.addTestSuite(Public.class);
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
|
||||
public static Test innerSuite() {
|
||||
TestSuite suite = new TestSuite("Class");
|
||||
suite.addTestSuite(Class.class);
|
||||
suite.addTestSuite(AccessFlags.class);
|
||||
suite.addTestSuite(DeprecatedFlag.class);
|
||||
suite.addTest(Visibility.innerSuite());
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
@@ -194,8 +356,61 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/innerClass")
|
||||
@InnerTestClasses({InnerClass.Visibility.class})
|
||||
public static class InnerClass extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInInnerClass() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/innerClass"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/innerClass/visibility")
|
||||
public static class Visibility extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInVisibility() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/innerClass/visibility"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("internal.kt")
|
||||
public void testInternal() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/internal.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("internalClassObject.kt")
|
||||
public void testInternalClassObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/internalClassObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("private.kt")
|
||||
public void testPrivate() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/private.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("privateClassObject.kt")
|
||||
public void testPrivateClassObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/privateClassObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("public.kt")
|
||||
public void testPublic() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/public.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("publicClassObject.kt")
|
||||
public void testPublicClassObject() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/innerClass/visibility/publicClassObject.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Test innerSuite() {
|
||||
TestSuite suite = new TestSuite("InnerClass");
|
||||
suite.addTestSuite(InnerClass.class);
|
||||
suite.addTestSuite(Visibility.class);
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/property")
|
||||
@InnerTestClasses({Property.DeprecatedFlag.class})
|
||||
@InnerTestClasses({Property.DeprecatedFlag.class, Property.Visibility.class})
|
||||
public static class Property extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInProperty() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property"), "kt", true);
|
||||
@@ -219,10 +434,34 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/writeFlags/property/visibility")
|
||||
public static class Visibility extends AbstractWriteFlagsTest {
|
||||
public void testAllFilesPresentInVisibility() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property/visibility"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("internal.kt")
|
||||
public void testInternal() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/property/visibility/internal.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("private.kt")
|
||||
public void testPrivate() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/property/visibility/private.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("public.kt")
|
||||
public void testPublic() throws Exception {
|
||||
doTest("compiler/testData/writeFlags/property/visibility/public.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Test innerSuite() {
|
||||
TestSuite suite = new TestSuite("Property");
|
||||
suite.addTestSuite(Property.class);
|
||||
suite.addTestSuite(DeprecatedFlag.class);
|
||||
suite.addTestSuite(Visibility.class);
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
@@ -232,6 +471,7 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
|
||||
suite.addTestSuite(WriteFlagsTestGenerated.class);
|
||||
suite.addTest(Class.innerSuite());
|
||||
suite.addTest(Function.innerSuite());
|
||||
suite.addTest(InnerClass.innerSuite());
|
||||
suite.addTest(Property.innerSuite());
|
||||
return suite;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user