diff --git a/analysis/symbol-light-classes/testData/structure/EnumEntries.lib.txt b/analysis/symbol-light-classes/testData/structure/EnumEntries.lib.txt index e54dac24082..41b38269122 100644 --- a/analysis/symbol-light-classes/testData/structure/EnumEntries.lib.txt +++ b/analysis/symbol-light-classes/testData/structure/EnumEntries.lib.txt @@ -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 + diff --git a/analysis/symbol-light-classes/testData/structure/EnumEntries.txt b/analysis/symbol-light-classes/testData/structure/EnumEntries.txt index 948cf513669..c454aaed0e5 100644 --- a/analysis/symbol-light-classes/testData/structure/EnumEntries.txt +++ b/analysis/symbol-light-classes/testData/structure/EnumEntries.txt @@ -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 + ] + 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 + PsiType:Enum + 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 - 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) - ] - diff --git a/analysis/symbol-light-classes/testData/structure/NestedClasses.lib.txt b/analysis/symbol-light-classes/testData/structure/NestedClasses.lib.txt index a8a7007d72e..2c0e3aabecc 100644 --- a/analysis/symbol-light-classes/testData/structure/NestedClasses.lib.txt +++ b/analysis/symbol-light-classes/testData/structure/NestedClasses.lib.txt @@ -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) - ] diff --git a/analysis/symbol-light-classes/testData/structure/NestedClasses.txt b/analysis/symbol-light-classes/testData/structure/NestedClasses.txt index 1d99daeb867..aee459c3ab7 100644 --- a/analysis/symbol-light-classes/testData/structure/NestedClasses.txt +++ b/analysis/symbol-light-classes/testData/structure/NestedClasses.txt @@ -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) - ] diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTestBase.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTestBase.kt index 0af090b806e..978a910e46f 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTestBase.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTestBase.kt @@ -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 { classOrObject -> + ktFile.forEachDescendantOfTypeInPreorder { 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) {