Ignore anonymous inner classes in LightAnalysisMode tests
This commit is contained in:
+1
-22
@@ -11,7 +11,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.TestsRuntimeError;
|
import org.jetbrains.kotlin.TestsRuntimeError;
|
||||||
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames;
|
|
||||||
import org.jetbrains.kotlin.codegen.ir.AbstractFirBlackBoxCodegenTest;
|
import org.jetbrains.kotlin.codegen.ir.AbstractFirBlackBoxCodegenTest;
|
||||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
@@ -74,27 +73,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
|
|||||||
String text =
|
String text =
|
||||||
BytecodeListingTextCollectingVisitor.Companion.getText(
|
BytecodeListingTextCollectingVisitor.Companion.getText(
|
||||||
classFileFactory,
|
classFileFactory,
|
||||||
new BytecodeListingTextCollectingVisitor.Filter() {
|
BytecodeListingTextCollectingVisitor.Filter.ForCodegenTests.INSTANCE
|
||||||
@Override
|
|
||||||
public boolean shouldWriteClass(int access, @NotNull String name) {
|
|
||||||
return !name.startsWith("helpers/");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldWriteMethod(int access, @NotNull String name, @NotNull String desc) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldWriteField(int access, @NotNull String name, @NotNull String desc) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldWriteInnerClass(@NotNull String name) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assertEqualsToFile(expectedFile, text);
|
assertEqualsToFile(expectedFile, text);
|
||||||
|
|||||||
+11
-10
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.codegen
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
import org.jetbrains.kotlin.utils.sure
|
import org.jetbrains.kotlin.utils.sure
|
||||||
@@ -22,12 +21,7 @@ abstract class AbstractBytecodeListingTest : CodegenTestCase() {
|
|||||||
classFileFactory,
|
classFileFactory,
|
||||||
withSignatures = isWithSignatures(wholeFile),
|
withSignatures = isWithSignatures(wholeFile),
|
||||||
withAnnotations = isWithAnnotations(wholeFile),
|
withAnnotations = isWithAnnotations(wholeFile),
|
||||||
filter = object : BytecodeListingTextCollectingVisitor.Filter {
|
filter = BytecodeListingTextCollectingVisitor.Filter.ForCodegenTests
|
||||||
override fun shouldWriteClass(access: Int, name: String): Boolean = !name.startsWith("helpers/")
|
|
||||||
override fun shouldWriteMethod(access: Int, name: String, desc: String): Boolean = true
|
|
||||||
override fun shouldWriteField(access: Int, name: String, desc: String): Boolean = true
|
|
||||||
override fun shouldWriteInnerClass(name: String): Boolean = true
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
val prefixes = when {
|
val prefixes = when {
|
||||||
@@ -119,13 +113,20 @@ class BytecodeListingTextCollectingVisitor(
|
|||||||
fun shouldWriteClass(access: Int, name: String): Boolean
|
fun shouldWriteClass(access: Int, name: String): Boolean
|
||||||
fun shouldWriteMethod(access: Int, name: String, desc: String): Boolean
|
fun shouldWriteMethod(access: Int, name: String, desc: String): Boolean
|
||||||
fun shouldWriteField(access: Int, name: String, desc: String): Boolean
|
fun shouldWriteField(access: Int, name: String, desc: String): Boolean
|
||||||
fun shouldWriteInnerClass(name: String): Boolean
|
fun shouldWriteInnerClass(name: String, outerName: String?, innerName: String?): Boolean
|
||||||
|
|
||||||
object EMPTY : Filter {
|
object EMPTY : Filter {
|
||||||
override fun shouldWriteClass(access: Int, name: String) = true
|
override fun shouldWriteClass(access: Int, name: String) = true
|
||||||
override fun shouldWriteMethod(access: Int, name: String, desc: String) = true
|
override fun shouldWriteMethod(access: Int, name: String, desc: String) = true
|
||||||
override fun shouldWriteField(access: Int, name: String, desc: String) = true
|
override fun shouldWriteField(access: Int, name: String, desc: String) = true
|
||||||
override fun shouldWriteInnerClass(name: String) = true
|
override fun shouldWriteInnerClass(name: String, outerName: String?, innerName: String?) = true
|
||||||
|
}
|
||||||
|
|
||||||
|
object ForCodegenTests : Filter {
|
||||||
|
override fun shouldWriteClass(access: Int, name: String): Boolean = !name.startsWith("helpers/")
|
||||||
|
override fun shouldWriteMethod(access: Int, name: String, desc: String): Boolean = true
|
||||||
|
override fun shouldWriteField(access: Int, name: String, desc: String): Boolean = true
|
||||||
|
override fun shouldWriteInnerClass(name: String, outerName: String?, innerName: String?): Boolean = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +321,7 @@ class BytecodeListingTextCollectingVisitor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitInnerClass(name: String, outerName: String?, innerName: String?, access: Int) {
|
override fun visitInnerClass(name: String, outerName: String?, innerName: String?, access: Int) {
|
||||||
if (!filter.shouldWriteInnerClass(name)) {
|
if (!filter.shouldWriteInnerClass(name, outerName, innerName)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -80,12 +80,12 @@ abstract class AbstractLightAnalysisModeTest : CodegenTestCase() {
|
|||||||
return super.shouldWriteClass(access, name)
|
return super.shouldWriteClass(access, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun shouldWriteInnerClass(name: String): Boolean {
|
override fun shouldWriteInnerClass(name: String, outerName: String?, innerName: String?): Boolean {
|
||||||
val classDescriptor = classInternalNames[name]
|
val classDescriptor = classInternalNames[name]
|
||||||
if (classDescriptor != null && shouldFilterClass(classDescriptor)) {
|
if (classDescriptor != null && shouldFilterClass(classDescriptor)) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return super.shouldWriteInnerClass(name)
|
return super.shouldWriteInnerClass(name, outerName, innerName)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shouldFilterClass(descriptor: ClassDescriptor): Boolean {
|
private fun shouldFilterClass(descriptor: ClassDescriptor): Boolean {
|
||||||
@@ -117,6 +117,7 @@ abstract class AbstractLightAnalysisModeTest : CodegenTestCase() {
|
|||||||
else -> true
|
else -> true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun shouldWriteInnerClass(name: String) = true
|
override fun shouldWriteInnerClass(name: String, outerName: String?, innerName: String?) =
|
||||||
|
outerName != null && innerName != null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user