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:
@@ -23,6 +23,7 @@ abstract class SirFunction : SirElementBase(), SirCallable {
|
||||
abstract val parameters: List<SirParameter>
|
||||
abstract val returnType: SirType
|
||||
abstract var body: SirFunctionBody?
|
||||
abstract var documentation: String?
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitFunction(this, data)
|
||||
|
||||
@@ -23,6 +23,7 @@ class SirFunctionBuilder {
|
||||
val parameters: MutableList<SirParameter> = mutableListOf()
|
||||
lateinit var returnType: SirType
|
||||
var body: SirFunctionBody? = null
|
||||
var documentation: String? = null
|
||||
|
||||
fun build(): SirFunction {
|
||||
return SirFunctionImpl(
|
||||
@@ -33,6 +34,7 @@ class SirFunctionBuilder {
|
||||
parameters,
|
||||
returnType,
|
||||
body,
|
||||
documentation,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -59,5 +61,6 @@ inline fun buildFunctionCopy(original: SirFunction, init: SirFunctionBuilder.()
|
||||
copyBuilder.parameters.addAll(original.parameters)
|
||||
copyBuilder.returnType = original.returnType
|
||||
copyBuilder.body = original.body
|
||||
copyBuilder.documentation = original.documentation
|
||||
return copyBuilder.apply(init).build()
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ internal class SirFunctionImpl(
|
||||
override val parameters: MutableList<SirParameter>,
|
||||
override val returnType: SirType,
|
||||
override var body: SirFunctionBody?,
|
||||
override var documentation: String?,
|
||||
) : SirFunction() {
|
||||
override lateinit var parent: SirDeclarationParent
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ sealed interface SirKotlinOrigin : SirOrigin.Foreign {
|
||||
get() = fqName.pathSegments().map { it.asString() }
|
||||
|
||||
interface Function : SirKotlinOrigin {
|
||||
val documentation: Documentation?
|
||||
val parameters: List<Parameter>
|
||||
val returnType: Type
|
||||
}
|
||||
@@ -26,4 +27,8 @@ sealed interface SirKotlinOrigin : SirOrigin.Foreign {
|
||||
interface Type {
|
||||
val name: String
|
||||
}
|
||||
|
||||
interface Documentation {
|
||||
val content: String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,13 @@ package org.jetbrains.kotlin.sir.mock
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.sir.SirKotlinOrigin
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
|
||||
data class MockFunction(
|
||||
override val fqName: FqName,
|
||||
override val parameters: List<SirKotlinOrigin.Parameter>,
|
||||
override val returnType: SirKotlinOrigin.Type,
|
||||
override val documentation: SirKotlinOrigin.Documentation? = null,
|
||||
) : SirKotlinOrigin.Function
|
||||
|
||||
data class MockParameter(
|
||||
@@ -22,3 +24,5 @@ data class MockParameter(
|
||||
data class MockKotlinType(
|
||||
override val name: String
|
||||
) : SirKotlinOrigin.Type
|
||||
|
||||
data class MockDocumentation(override val content: String) : SirKotlinOrigin.Documentation
|
||||
|
||||
@@ -17,7 +17,7 @@ typealias Model = org.jetbrains.kotlin.generators.tree.Model<Element>
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val generationPath = args.firstOrNull()?.let { File(it) }
|
||||
?: File("../../tree/gen").canonicalFile
|
||||
?: File("./native/swift/sir/gen/").canonicalFile
|
||||
val model = SwiftIrTree.build()
|
||||
generateTree(
|
||||
generationPath,
|
||||
|
||||
+3
-1
@@ -87,6 +87,8 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
+listField("parameters", parameterType)
|
||||
+field("returnType", typeType)
|
||||
+field("body", functionBodyType, nullable = true, mutable = true)
|
||||
|
||||
+field(name = "documentation", string, nullable = true, mutable = true)
|
||||
}
|
||||
|
||||
val foreignFunction by element {
|
||||
@@ -96,4 +98,4 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
|
||||
visitorParameterName = "function"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user