From a26ffe360ca77dcb3b2ae1ad89a3538dff173286 Mon Sep 17 00:00:00 2001 From: Artem Olkov Date: Fri, 1 Mar 2024 15:23:54 +0100 Subject: [PATCH] KT-65907: add handling for nested classes #KT-65907 fixed --- .../sir/passes/builder/SirFromPsiBuilder.kt | 8 +-- .../classes/golden_result/result.swift | 56 +++++++++++++++++++ .../input_root/class_with_deeper_package.kt | 16 +++++- .../classes/input_root/class_with_package.kt | 2 +- .../testData/classes/input_root/classes.kt | 7 ++- .../classes/input_root/should_be_ignored.kt | 4 ++ 6 files changed, 83 insertions(+), 10 deletions(-) diff --git a/native/swift/sir-passes/src/org/jetbrains/sir/passes/builder/SirFromPsiBuilder.kt b/native/swift/sir-passes/src/org/jetbrains/sir/passes/builder/SirFromPsiBuilder.kt index 7f298cbef41..f0099185a6e 100644 --- a/native/swift/sir-passes/src/org/jetbrains/sir/passes/builder/SirFromPsiBuilder.kt +++ b/native/swift/sir-passes/src/org/jetbrains/sir/passes/builder/SirFromPsiBuilder.kt @@ -5,13 +5,11 @@ package org.jetbrains.sir.passes.builder -import com.sun.org.apache.xpath.internal.operations.Bool import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.descriptors.Modality -import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.isPublic import org.jetbrains.kotlin.sir.* @@ -43,13 +41,10 @@ private class PsiToSirTranslationCollector( private val res: MutableList, private val checker: PsiToSirTranslation, private val translator: PsiToSirTranslation, - private val isFirstLevel: Boolean = true, ) : KtTreeVisitorVoid() { override fun visitClassOrObject(classOrObject: KtClassOrObject) { - if (isFirstLevel) { - classOrObject.checkAndTranslate(null) - } + classOrObject.checkAndTranslate(null) } override fun visitNamedFunction(function: KtNamedFunction) { @@ -121,7 +116,6 @@ internal fun buildSirClassFromPsi(classOrObject: KtClassOrObject): SirNamedDecla declarations, PsiToSirTranslatableChecker(analysisSession), PsiToSirElementTranslation(analysisSession), - false ) ) }.also { resultedClass -> diff --git a/native/swift/swift-export-standalone/testData/classes/golden_result/result.swift b/native/swift/swift-export-standalone/testData/classes/golden_result/result.swift index a33eade1c0b..86e891776a7 100644 --- a/native/swift/swift-export-standalone/testData/classes/golden_result/result.swift +++ b/native/swift/swift-export-standalone/testData/classes/golden_result/result.swift @@ -6,6 +6,42 @@ public enum namespace { public class NAMESPACED_CLASS { } public class Foo { + public class INSIDE_CLASS { + public class DEEPER_INSIDE_CLASS { + public func foo() -> Swift.Bool { + fatalError() + } + public var my_value: Swift.UInt32 { + get { + fatalError() + } + } + public var my_variable: Swift.Int64 { + get { + fatalError() + } + set { + fatalError() + } + } + } + public func foo() -> Swift.Bool { + fatalError() + } + public var my_value: Swift.UInt32 { + get { + fatalError() + } + } + public var my_variable: Swift.Int64 { + get { + fatalError() + } + set { + fatalError() + } + } + } public func foo() -> Swift.Bool { fatalError() } @@ -27,6 +63,8 @@ public enum namespace { public class NAMESPACED_CLASS { } public class Foo { + public class INSIDE_CLASS { + } public func foo() -> Swift.Bool { fatalError() } @@ -47,6 +85,24 @@ public enum namespace { } public class Foo { + public class INSIDE_CLASS { + public func my_func() -> Swift.Bool { + fatalError() + } + public var my_value_inner: Swift.UInt32 { + get { + fatalError() + } + } + public var my_variable_inner: Swift.Int64 { + get { + fatalError() + } + set { + fatalError() + } + } + } public func foo() -> Swift.Bool { fatalError() } diff --git a/native/swift/swift-export-standalone/testData/classes/input_root/class_with_deeper_package.kt b/native/swift/swift-export-standalone/testData/classes/input_root/class_with_deeper_package.kt index e30521a8f66..a4aaa2c84b5 100644 --- a/native/swift/swift-export-standalone/testData/classes/input_root/class_with_deeper_package.kt +++ b/native/swift/swift-export-standalone/testData/classes/input_root/class_with_deeper_package.kt @@ -3,7 +3,21 @@ package namespace.deeper class NAMESPACED_CLASS class Foo { - class INSIDE_CLASS // this should be ignored currently + class INSIDE_CLASS { + class DEEPER_INSIDE_CLASS { + fun foo(): Boolean = TODO() + + val my_value: UInt = 5u + + var my_variable: Long = 5 + } + + fun foo(): Boolean = TODO() + + val my_value: UInt = 5u + + var my_variable: Long = 5 + } fun foo(): Boolean = TODO() diff --git a/native/swift/swift-export-standalone/testData/classes/input_root/class_with_package.kt b/native/swift/swift-export-standalone/testData/classes/input_root/class_with_package.kt index 2b786c504ef..1b747104f5b 100644 --- a/native/swift/swift-export-standalone/testData/classes/input_root/class_with_package.kt +++ b/native/swift/swift-export-standalone/testData/classes/input_root/class_with_package.kt @@ -3,7 +3,7 @@ package namespace class NAMESPACED_CLASS class Foo { - class INSIDE_CLASS // this should be ignored currently + class INSIDE_CLASS fun foo(): Boolean = TODO() diff --git a/native/swift/swift-export-standalone/testData/classes/input_root/classes.kt b/native/swift/swift-export-standalone/testData/classes/input_root/classes.kt index 5b2b123b5bb..848eb24305a 100644 --- a/native/swift/swift-export-standalone/testData/classes/input_root/classes.kt +++ b/native/swift/swift-export-standalone/testData/classes/input_root/classes.kt @@ -1,7 +1,12 @@ class Foo { - class INSIDE_CLASS // this should be ignored currently + class INSIDE_CLASS { + fun my_func(): Boolean = TODO() + val my_value_inner: UInt = 5u + + var my_variable_inner: Long = 5 + } fun foo(): Boolean = TODO() val my_value: UInt = 5u diff --git a/native/swift/swift-export-standalone/testData/classes/input_root/should_be_ignored.kt b/native/swift/swift-export-standalone/testData/classes/input_root/should_be_ignored.kt index 358bb02cf55..7fad1a22cad 100644 --- a/native/swift/swift-export-standalone/testData/classes/input_root/should_be_ignored.kt +++ b/native/swift/swift-export-standalone/testData/classes/input_root/should_be_ignored.kt @@ -19,8 +19,12 @@ object OBJECT data class DATA_CLASS(val a: Int) +data class DATA_CLASS_WITH_REF(val o: OBJECT) + inline class INLINE_CLASS(val a: Int) +inline class INLINE_CLASS_WITH_REF(val i: DATA_CLASS_WITH_REF) + abstract class ABSTRACT_CLASS sealed class SEALED {