add Initial support for comments in SIR #KT-65174 Fixed
Merge-request: KT-MR-14007 Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
+2
@@ -41,6 +41,8 @@ public class ForeignIntoSwiftFunctionTranslationPass : SirPass<SirElement, Nothi
|
||||
kotlinOrigin.parameters.mapTo(parameters) { it.toSir() }
|
||||
|
||||
returnType = kotlinOrigin.returnType.toSir()
|
||||
|
||||
documentation = kotlinOrigin.documentation?.content
|
||||
}.apply {
|
||||
parent = function.parent
|
||||
}
|
||||
|
||||
@@ -6,14 +6,10 @@
|
||||
package org.jetbrains.kotlin.sir.passes
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.sir.SirFunction
|
||||
import org.jetbrains.kotlin.sir.SirNominalType
|
||||
import org.jetbrains.kotlin.sir.SirParameter
|
||||
import org.jetbrains.kotlin.sir.SirVisibility
|
||||
import org.jetbrains.kotlin.sir.builder.buildEnum
|
||||
import org.jetbrains.kotlin.sir.builder.buildForeignFunction
|
||||
import org.jetbrains.kotlin.sir.builder.buildModule
|
||||
import org.jetbrains.kotlin.sir.*
|
||||
import org.jetbrains.kotlin.sir.builder.*
|
||||
import org.jetbrains.kotlin.sir.constants.*
|
||||
import org.jetbrains.kotlin.sir.mock.MockDocumentation
|
||||
import org.jetbrains.kotlin.sir.mock.MockFunction
|
||||
import org.jetbrains.kotlin.sir.mock.MockKotlinType
|
||||
import org.jetbrains.kotlin.sir.mock.MockParameter
|
||||
@@ -149,4 +145,51 @@ class SirPassTests {
|
||||
)
|
||||
assertSirFunctionsEquals(actual = result, expected = exp)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `foreign toplevel function with kdoc should be translated`() {
|
||||
val module = buildModule {
|
||||
name = "demo"
|
||||
}
|
||||
val mySirElement = buildForeignFunction {
|
||||
origin = MockFunction(
|
||||
fqName = FqName.fromSegments(listOf("foo")),
|
||||
parameters = emptyList(),
|
||||
returnType = MockKotlinType(BOOLEAN),
|
||||
documentation = MockDocumentation(
|
||||
"""
|
||||
/**
|
||||
* Function foo description
|
||||
*
|
||||
* @param p first Integer to consume
|
||||
* @param p2 second Double to consume
|
||||
* @return empty String
|
||||
*/
|
||||
""".trimIndent()
|
||||
)
|
||||
)
|
||||
visibility = SirVisibility.PUBLIC
|
||||
}
|
||||
mySirElement.parent = module
|
||||
val myPass = ForeignIntoSwiftFunctionTranslationPass()
|
||||
val result = myPass.runWithAsserts(mySirElement, null) as? SirFunction
|
||||
assertNotNull(result, "SirFunction should be produced")
|
||||
val exp = MockSirFunction(
|
||||
name = "foo",
|
||||
parameters = emptyList(),
|
||||
returnType = SirNominalType(SirSwiftModule.bool),
|
||||
parent = module,
|
||||
isStatic = false,
|
||||
documentation = """
|
||||
/**
|
||||
* Function foo description
|
||||
*
|
||||
* @param p first Integer to consume
|
||||
* @param p2 second Double to consume
|
||||
* @return empty String
|
||||
*/
|
||||
""".trimIndent()
|
||||
)
|
||||
assertSirFunctionsEquals(actual = result, expected = exp)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -29,4 +29,8 @@ fun assertSirFunctionsEquals(expected: SirFunction, actual: SirFunction) {
|
||||
actual = actual.isStatic,
|
||||
expected = expected.isStatic
|
||||
)
|
||||
assertEquals(
|
||||
actual = actual.documentation,
|
||||
expected = expected.documentation
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ class MockSirFunction(
|
||||
override val name: String,
|
||||
override val parameters: List<SirParameter>,
|
||||
override val returnType: SirType,
|
||||
override var documentation: String? = null,
|
||||
) : SirFunction() {
|
||||
override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) = Unit
|
||||
override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) = Unit
|
||||
|
||||
Reference in New Issue
Block a user