Record inner class info for interface and DefaultImpls

This commit is contained in:
Denis Zharkov
2015-09-25 13:59:51 +03:00
parent c1bed7efc7
commit fd0c92e307
13 changed files with 104 additions and 13 deletions
@@ -143,6 +143,12 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
doTest(fileName);
}
@TestMetadata("interfaceDefaultImpl.kt")
public void testInterfaceDefaultImpl() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/interfaceDefaultImpl.kt");
doTest(fileName);
}
@TestMetadata("javaExtensionPropertyIntrinsic.kt")
public void testJavaExtensionPropertyIntrinsic() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/javaExtensionPropertyIntrinsic.kt");
@@ -16,6 +16,8 @@
package org.jetbrains.kotlin.codegen;
import kotlin.CollectionsKt;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.backend.common.output.OutputFile;
@@ -86,6 +88,7 @@ public class InnerClassInfoGenTest extends CodegenTestCase {
checkAccess("A", "Annotation", ACC_PUBLIC | ACC_STATIC | ACC_INTERFACE | ACC_ABSTRACT | ACC_ANNOTATION);
checkAccess("A", "Enum", ACC_PUBLIC | ACC_STATIC | ACC_FINAL | ACC_ENUM);
checkAccess("A", "Trait", ACC_PUBLIC | ACC_STATIC | ACC_INTERFACE | ACC_ABSTRACT);
checkAccess("A$Trait", "DefaultImpls", ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
checkAccess("A", "OpenStaticClass", ACC_PUBLIC | ACC_STATIC);
checkAccess("A", "FinalStaticClass", ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
@@ -102,10 +105,20 @@ public class InnerClassInfoGenTest extends CodegenTestCase {
private void checkAccess(@NotNull String outerName, @NotNull String innerName, int accessFlags) {
private void checkAccess(@NotNull String outerName, @NotNull final String innerName, int accessFlags) {
String name = outerName + "$" + innerName;
InnerClassAttribute attribute = new InnerClassAttribute(name, outerName, innerName, accessFlags);
extractAndCompareInnerClasses(name, attribute);
InnerClassAttribute attribute = CollectionsKt.single(extractInnerClasses(name),
new Function1<InnerClassAttribute, Boolean>() {
@Override
public Boolean invoke(InnerClassAttribute attribute) {
return innerName.equals(attribute.innerName);
}
}
);
InnerClassAttribute expectedAttribute = new InnerClassAttribute(name, outerName, innerName, accessFlags);
assertEquals(expectedAttribute, attribute);
}
private void extractAndCompareInnerClasses(@NotNull String className, @NotNull InnerClassAttribute... expectedInnerClasses) {
@@ -59,6 +59,12 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege
doTestWithJava(fileName);
}
@TestMetadata("interfaceDefaultImpls")
public void testInterfaceDefaultImpls() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/interfaceDefaultImpls/");
doTestWithJava(fileName);
}
@TestMetadata("platformName")
public void testPlatformName() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/platformName/");