[SLC] Order parent classes before nested classes in structure test results

- This improves the readability of the result files.
This commit is contained in:
Marco Pennekamp
2023-09-22 15:13:40 +02:00
committed by Space Team
parent 9ac639e0d3
commit 223c793258
5 changed files with 139 additions and 138 deletions
@@ -16,18 +16,6 @@ BaseInterface.class:
]
EnumClassWithInterface.class:
KtEnumEntry:
line: 7
name: NewFirstEntry
qualifier: one.two.EnumClassWithInterface.NewFirstEntry
light: null
KtEnumEntry:
line: 9
name: NewSecondEntryWithBody
qualifier: one.two.EnumClassWithInterface.NewSecondEntryWithBody
light: null
KtClass:
line: 6
name: EnumClassWithInterface
@@ -48,19 +36,19 @@ EnumClassWithInterface.class:
KtLightClassForDecompiledDeclaration: BaseInterface (one.two.BaseInterface)
]
EnumEntries.class:
KtEnumEntry:
line: 7
name: FirstEntry
qualifier: one.two.EnumEntries.FirstEntry
name: NewFirstEntry
qualifier: one.two.EnumClassWithInterface.NewFirstEntry
light: null
KtEnumEntry:
line: 9
name: SecondEntryWithBody
qualifier: one.two.EnumEntries.SecondEntryWithBody
name: NewSecondEntryWithBody
qualifier: one.two.EnumClassWithInterface.NewSecondEntryWithBody
light: null
EnumEntries.class:
KtClass:
line: 6
name: EnumEntries
@@ -77,3 +65,15 @@ EnumEntries.class:
ClsClassImpl: Enum (java.lang.Enum)
]
KtEnumEntry:
line: 7
name: FirstEntry
qualifier: one.two.EnumEntries.FirstEntry
light: null
KtEnumEntry:
line: 9
name: SecondEntryWithBody
qualifier: one.two.EnumEntries.SecondEntryWithBody
light: null
@@ -14,6 +14,22 @@ KtClass:
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 5
name: EnumEntries
qualifier: one.two.EnumEntries
light: SymbolLightClassForClassOrObject
name: EnumEntries
qualifier: one.two.EnumEntries
superTypes: [
PsiType:Enum<EnumEntries>
]
superClass: ClsClassImpl: Enum (java.lang.Enum)
interfaces: []
supers: [
ClsClassImpl: Enum (java.lang.Enum)
]
KtEnumEntry:
line: 6
name: FirstEntry
@@ -37,19 +53,23 @@ KtEnumEntry:
]
KtClass:
line: 5
name: EnumEntries
qualifier: one.two.EnumEntries
line: 14
name: EnumClassWithInterface
qualifier: one.two.EnumClassWithInterface
light: SymbolLightClassForClassOrObject
name: EnumEntries
qualifier: one.two.EnumEntries
name: EnumClassWithInterface
qualifier: one.two.EnumClassWithInterface
superTypes: [
PsiType:Enum<EnumEntries>
PsiType:Enum<EnumClassWithInterface>
PsiType:BaseInterface
]
superClass: ClsClassImpl: Enum (java.lang.Enum)
interfaces: []
interfaces: [
SymbolLightClassForInterface: BaseInterface (one.two.BaseInterface)
]
supers: [
ClsClassImpl: Enum (java.lang.Enum)
SymbolLightClassForInterface: BaseInterface (one.two.BaseInterface)
]
KtEnumEntry:
@@ -74,23 +94,3 @@ KtEnumEntry:
SymbolLightClassForClassOrObject: EnumClassWithInterface (one.two.EnumClassWithInterface)
]
KtClass:
line: 14
name: EnumClassWithInterface
qualifier: one.two.EnumClassWithInterface
light: SymbolLightClassForClassOrObject
name: EnumClassWithInterface
qualifier: one.two.EnumClassWithInterface
superTypes: [
PsiType:Enum<EnumClassWithInterface>
PsiType:BaseInterface
]
superClass: ClsClassImpl: Enum (java.lang.Enum)
interfaces: [
SymbolLightClassForInterface: BaseInterface (one.two.BaseInterface)
]
supers: [
ClsClassImpl: Enum (java.lang.Enum)
SymbolLightClassForInterface: BaseInterface (one.two.BaseInterface)
]
@@ -1,4 +1,20 @@
B.class:
KtClass:
line: 4
name: B
qualifier: B
light: KtLightClassForDecompiledDeclaration
name: B
qualifier: B
superTypes: [
PsiType:A
]
superClass: KtLightClassForDecompiledDeclaration: A (A)
interfaces: []
supers: [
KtLightClassForDecompiledDeclaration: A (A)
]
KtClass:
line: 5
name: NestedInB
@@ -31,23 +47,39 @@ B.class:
ClsClassImpl: Object (java.lang.Object)
]
A.class:
KtClass:
line: 4
name: B
qualifier: B
name: A
qualifier: A
light: KtLightClassForDecompiledDeclaration
name: B
qualifier: B
name: A
qualifier: A
superTypes: [
PsiType:A
PsiType:Object
]
superClass: KtLightClassForDecompiledDeclaration: A (A)
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
KtLightClassForDecompiledDeclaration: A (A)
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 5
name: NestedInA
qualifier: A.NestedInA
light: KtLightClassForDecompiledDeclaration
name: NestedInA
qualifier: A.NestedInA
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
A.class:
KtClass:
line: 6
name: NestedInNestedInA
@@ -81,12 +113,12 @@ A.class:
]
KtClass:
line: 5
name: NestedInA
qualifier: A.NestedInA
line: 13
name: InnerInA
qualifier: A.InnerInA
light: KtLightClassForDecompiledDeclaration
name: NestedInA
qualifier: A.NestedInA
name: InnerInA
qualifier: A.InnerInA
superTypes: [
PsiType:Object
]
@@ -111,35 +143,3 @@ A.class:
supers: [
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 13
name: InnerInA
qualifier: A.InnerInA
light: KtLightClassForDecompiledDeclaration
name: InnerInA
qualifier: A.InnerInA
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 4
name: A
qualifier: A
light: KtLightClassForDecompiledDeclaration
name: A
qualifier: A
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
@@ -1,3 +1,35 @@
KtClass:
line: 1
name: A
qualifier: A
light: SymbolLightClassForClassOrObject
name: A
qualifier: A
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 2
name: NestedInA
qualifier: A.NestedInA
light: SymbolLightClassForClassOrObject
name: NestedInA
qualifier: A.NestedInA
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 3
name: NestedInNestedInA
@@ -31,12 +63,12 @@ KtClass:
]
KtClass:
line: 2
name: NestedInA
qualifier: A.NestedInA
line: 8
name: InnerInA
qualifier: A.InnerInA
light: SymbolLightClassForClassOrObject
name: NestedInA
qualifier: A.NestedInA
name: InnerInA
qualifier: A.InnerInA
superTypes: [
PsiType:Object
]
@@ -63,35 +95,19 @@ KtClass:
]
KtClass:
line: 8
name: InnerInA
qualifier: A.InnerInA
line: 13
name: B
qualifier: B
light: SymbolLightClassForClassOrObject
name: InnerInA
qualifier: A.InnerInA
name: B
qualifier: B
superTypes: [
PsiType:Object
PsiType:A
]
superClass: ClsClassImpl: Object (java.lang.Object)
superClass: SymbolLightClassForClassOrObject: A (A)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 1
name: A
qualifier: A
light: SymbolLightClassForClassOrObject
name: A
qualifier: A
superTypes: [
PsiType:Object
]
superClass: ClsClassImpl: Object (java.lang.Object)
interfaces: []
supers: [
ClsClassImpl: Object (java.lang.Object)
SymbolLightClassForClassOrObject: A (A)
]
KtClass:
@@ -126,18 +142,3 @@ KtClass:
ClsClassImpl: Object (java.lang.Object)
]
KtClass:
line: 13
name: B
qualifier: B
light: SymbolLightClassForClassOrObject
name: B
qualifier: B
superTypes: [
PsiType:A
]
superClass: SymbolLightClassForClassOrObject: A (A)
interfaces: []
supers: [
SymbolLightClassForClassOrObject: A (A)
]
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtEnumEntry
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfTypeInPreorder
import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
@@ -109,7 +109,7 @@ open class AbstractSymbolLightClassesStructureTestBase(
val classOrObject = ktFile.declarations.singleOrNull() as? KtClassOrObject ?: return
handleCompiledClassDeclaration(classOrObject, text)
} else {
ktFile.forEachDescendantOfType<KtClassOrObject> { classOrObject ->
ktFile.forEachDescendantOfTypeInPreorder<KtClassOrObject> { classOrObject ->
handleClassDeclaration(classOrObject, text)
appendLine()
}
@@ -121,6 +121,9 @@ open class AbstractSymbolLightClassesStructureTestBase(
* compiled code in this test results in exceptions. Hence, we have to traverse nested classes and enum entries manually.
*/
private fun PrettyPrinter.handleCompiledClassDeclaration(classOrObject: KtClassOrObject, text: String) {
handleClassDeclaration(classOrObject, text)
appendLine()
classOrObject.declarations.forEach { declaration ->
when (declaration) {
is KtEnumEntry -> {
@@ -131,9 +134,6 @@ open class AbstractSymbolLightClassesStructureTestBase(
is KtClassOrObject -> handleCompiledClassDeclaration(declaration, text)
}
}
handleClassDeclaration(classOrObject, text)
appendLine()
}
private fun PrettyPrinter.handleClassDeclaration(declaration: KtClassOrObject, fileText: String) {