KT-65907: add handling for nested classes #KT-65907 fixed

This commit is contained in:
Artem Olkov
2024-03-01 15:23:54 +01:00
committed by Space Team
parent 8ef2d49ab0
commit a26ffe360c
6 changed files with 83 additions and 10 deletions
@@ -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<SirDeclaration>,
private val checker: PsiToSirTranslation<Boolean>,
private val translator: PsiToSirTranslation<SirDeclaration>,
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 ->
@@ -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()
}
@@ -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()
@@ -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()
@@ -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
@@ -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 {