add export from kotlin into swift of class content #KT-65896 fixed

Merge-request: KT-MR-14624
Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
Artem Olkov
2024-02-29 18:37:38 +00:00
committed by Space Team
parent 078f0ff6e1
commit e16714fcf9
18 changed files with 299 additions and 54 deletions
@@ -0,0 +1,21 @@
public class Foo {
public func foo(
arg1: Swift.Bool,
arg2: Swift.Int8,
arg3: Swift.Int16,
arg4: Swift.Int32,
arg5: Swift.Int64,
arg6: Swift.Double,
arg7: Swift.Float
) -> Swift.Bool {
fatalError()
}
public func bar(
arg1: Swift.UInt8,
arg2: Swift.UInt16,
arg3: Swift.UInt32,
arg4: Swift.UInt64
) -> Swift.Bool {
fatalError()
}
}
@@ -0,0 +1,8 @@
public class Foo {
public var my_variable1: Swift.Bool {
get
}
public var my_variable2: Swift.Int8 {
get
}
}
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.sir.printer
import org.jetbrains.kotlin.sir.*
import org.jetbrains.kotlin.sir.builder.buildClass
import org.jetbrains.kotlin.sir.builder.buildEnum
import org.jetbrains.kotlin.sir.builder.buildFunction
import org.jetbrains.kotlin.sir.builder.buildModule
import org.jetbrains.kotlin.sir.builder.*
import org.jetbrains.kotlin.sir.util.SirSwiftModule
import org.jetbrains.kotlin.test.services.JUnit5Assertions
import org.jetbrains.kotlin.test.util.KtTestUtil
@@ -372,6 +369,136 @@ class SirAsSwiftSourcesPrinterTests {
)
}
@Test
fun `should print class with function`() {
val module = buildModule {
name = "Test"
declarations.add(
buildClass {
origin = SirOrigin.Unknown
name = "Foo"
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
kind = SirCallableKind.INSTANCE_METHOD
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.addAll(
listOf(
SirParameter(
argumentName = "arg1",
type = SirNominalType(SirSwiftModule.bool)
),
SirParameter(
argumentName = "arg2",
type = SirNominalType(SirSwiftModule.int8)
),
SirParameter(
argumentName = "arg3",
type = SirNominalType(SirSwiftModule.int16)
),
SirParameter(
argumentName = "arg4",
type = SirNominalType(SirSwiftModule.int32)
),
SirParameter(
argumentName = "arg5",
type = SirNominalType(SirSwiftModule.int64)
),
SirParameter(
argumentName = "arg6",
type = SirNominalType(SirSwiftModule.double)
),
SirParameter(
argumentName = "arg7",
type = SirNominalType(SirSwiftModule.float)
),
)
)
returnType = SirNominalType(SirSwiftModule.bool)
}
)
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
kind = SirCallableKind.INSTANCE_METHOD
visibility = SirVisibility.PUBLIC
name = "bar"
parameters.addAll(
listOf(
SirParameter(
argumentName = "arg1",
type = SirNominalType(SirSwiftModule.uint8)
),
SirParameter(
argumentName = "arg2",
type = SirNominalType(SirSwiftModule.uint16)
),
SirParameter(
argumentName = "arg3",
type = SirNominalType(SirSwiftModule.uint32)
),
SirParameter(
argumentName = "arg4",
type = SirNominalType(SirSwiftModule.uint64)
),
)
)
returnType = SirNominalType(SirSwiftModule.bool)
}
)
}
)
}
runTest(
module,
"testData/class_with_function"
)
}
@Test
fun `should print class with variable`() {
val module = buildModule {
name = "Test"
declarations.add(
buildClass {
origin = SirOrigin.Unknown
name = "Foo"
declarations.add(
buildVariable {
name = "my_variable1"
type = SirNominalType(SirSwiftModule.bool)
getter = buildGetter {
kind = SirCallableKind.INSTANCE_METHOD
}
}
)
declarations.add(
buildVariable {
name = "my_variable2"
type = SirNominalType(SirSwiftModule.int8)
getter = buildGetter {
kind = SirCallableKind.INSTANCE_METHOD
}
}
)
}
)
}
runTest(
module,
"testData/class_with_variable"
)
}
private fun runTest(module: SirModule, goldenDataFile: String) {
val expectedSwiftSrc = File(KtTestUtil.getHomeDirectory()).resolve("$goldenDataFile.golden.swift")