diff --git a/native/swift/sir-analysis-api/build.gradle.kts b/native/swift/sir-analysis-api/build.gradle.kts index 929ff94e9b1..65600bdd0e4 100644 --- a/native/swift/sir-analysis-api/build.gradle.kts +++ b/native/swift/sir-analysis-api/build.gradle.kts @@ -4,6 +4,10 @@ plugins { description = "Build Swift IR from Analysis API" +kotlin { + explicitApi() +} + dependencies { compileOnly(kotlinStdlib()) diff --git a/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt b/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt index f283060ff38..2c8771388bb 100644 --- a/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt +++ b/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt @@ -17,11 +17,11 @@ import org.jetbrains.kotlin.sir.analysisapi.transformers.toForeignFunction /** * A root interface for classes that produce Swift IR elements. */ -interface SirFactory { - fun build(fromFile: KtFile): List +public interface SirFactory { + public fun build(fromFile: KtFile): List } -class SirGenerator : SirFactory { +public class SirGenerator : SirFactory { override fun build(fromFile: KtFile): List = analyze(fromFile) { val res = mutableListOf() fromFile.accept(Visitor(res)) diff --git a/native/swift/sir-compiler-bridge/build.gradle.kts b/native/swift/sir-compiler-bridge/build.gradle.kts index df492f7808d..adf2b0bab6a 100644 --- a/native/swift/sir-compiler-bridge/build.gradle.kts +++ b/native/swift/sir-compiler-bridge/build.gradle.kts @@ -4,6 +4,10 @@ plugins { description = "SIR to Kotlin bindings generator" +kotlin { + explicitApi() +} + dependencies { compileOnly(kotlinStdlib()) diff --git a/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/BridgeGenerator.kt b/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/BridgeGenerator.kt index d0e6e89e608..c2a19d218d0 100644 --- a/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/BridgeGenerator.kt +++ b/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/BridgeGenerator.kt @@ -16,10 +16,10 @@ import org.jetbrains.kotlin.sir.bridge.impl.KotlinBridgePrinter * @param function SIR function we are generating bridge for * @param bridgeName C name of the bridge */ -class BridgeRequest( - val function: SirFunction, - val bridgeName: String, - val fqName: List, +public class BridgeRequest( + public val function: SirFunction, + public val bridgeName: String, + public val fqName: List, ) /** @@ -27,9 +27,9 @@ class BridgeRequest( * Abstracts away all nuances of Kotlin compiler ABI, making it possible * to call Kotlin code from other environments. */ -class FunctionBridge( - val kotlinFunctionBridge: KotlinFunctionBridge, - val cDeclarationBridge: CFunctionBridge, +public class FunctionBridge( + public val kotlinFunctionBridge: KotlinFunctionBridge, + public val cDeclarationBridge: CFunctionBridge, ) /** @@ -38,9 +38,9 @@ class FunctionBridge( * @param lines with function declaration. * @param headerDependencies required headers. */ -class CFunctionBridge( - val lines: List, - val headerDependencies: List, +public class CFunctionBridge( + public val lines: List, + public val headerDependencies: List, ) /** @@ -49,39 +49,39 @@ class CFunctionBridge( * @param lines definition of Kotlin bridge. * @param packageDependencies required packages to make sources compile. */ -class KotlinFunctionBridge( - val lines: List, - val packageDependencies: List, +public class KotlinFunctionBridge( + public val lines: List, + public val packageDependencies: List, ) /** * Generates [FunctionBridge] that binds SIR function to its Kotlin origin. */ -interface BridgeGenerator { - fun generate(request: BridgeRequest): FunctionBridge +public interface BridgeGenerator { + public fun generate(request: BridgeRequest): FunctionBridge } /** * A common interface for classes that serialize [FunctionBridge] in some form. */ -interface BridgePrinter { +public interface BridgePrinter { /** * Populate printer with an additional [bridge]. */ - fun add(bridge: FunctionBridge) + public fun add(bridge: FunctionBridge) /** * Outputs the aggregated result. */ - fun print(): Sequence + public fun print(): Sequence } -fun createBridgeGenerator(): BridgeGenerator = +public fun createBridgeGenerator(): BridgeGenerator = BridgeGeneratorImpl() -fun createCBridgePrinter(): BridgePrinter = +public fun createCBridgePrinter(): BridgePrinter = CBridgePrinter() -fun createKotlinBridgePrinter(): BridgePrinter = +public fun createKotlinBridgePrinter(): BridgePrinter = KotlinBridgePrinter() diff --git a/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/impl/BridgeGeneratorImpl.kt b/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/impl/BridgeGeneratorImpl.kt index 26cd6d6009c..50aebf1181b 100644 --- a/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/impl/BridgeGeneratorImpl.kt +++ b/native/swift/sir-compiler-bridge/src/org/jetbrains/kotlin/sir/bridge/impl/BridgeGeneratorImpl.kt @@ -96,7 +96,7 @@ private fun bridgeParameter(parameter: SirParameter): BridgeParameter { ) } -fun createBridgeParameterName(kotlinName: String): String { +public fun createBridgeParameterName(kotlinName: String): String { // TODO: Post-process because C has stricter naming conventions. return kotlinName } @@ -111,7 +111,7 @@ internal data class CBridgeParameter( val type: CType, ) -enum class CType(val repr: String) { +public enum class CType(public val repr: String) { Bool("_Bool"), Int8("int8_t"), diff --git a/native/swift/sir-passes/build.gradle.kts b/native/swift/sir-passes/build.gradle.kts index 5c31d4d3940..5446c6a17f9 100644 --- a/native/swift/sir-passes/build.gradle.kts +++ b/native/swift/sir-passes/build.gradle.kts @@ -4,6 +4,10 @@ plugins { description = "Infrastructure of transformations over SIR" +kotlin { + explicitApi() +} + dependencies { compileOnly(kotlinStdlib()) diff --git a/native/swift/sir-passes/src/org/jetbrains/sir/passes/SirPass.kt b/native/swift/sir-passes/src/org/jetbrains/sir/passes/SirPass.kt index 5e045800190..06172d196eb 100644 --- a/native/swift/sir-passes/src/org/jetbrains/sir/passes/SirPass.kt +++ b/native/swift/sir-passes/src/org/jetbrains/sir/passes/SirPass.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.sir.SirElement * Swift IR is supposed to be transformed by a series of passes. * This is a base interface that all such passes should implement. */ -interface SirPass { +public interface SirPass { /** * Executes the pass over the given [SirElement]. @@ -20,5 +20,5 @@ interface SirPass { * @param data Additional data that is required to run the pass. * @return The result of the pass. */ - fun run(element: SirElement, data: T): R + public fun run(element: SirElement, data: T): R } \ No newline at end of file diff --git a/native/swift/sir-passes/src/org/jetbrains/sir/passes/translation/ForeignIntoSwiftFunctionTranslationPass.kt b/native/swift/sir-passes/src/org/jetbrains/sir/passes/translation/ForeignIntoSwiftFunctionTranslationPass.kt index a7d76fdb72e..47033ba9ea2 100644 --- a/native/swift/sir-passes/src/org/jetbrains/sir/passes/translation/ForeignIntoSwiftFunctionTranslationPass.kt +++ b/native/swift/sir-passes/src/org/jetbrains/sir/passes/translation/ForeignIntoSwiftFunctionTranslationPass.kt @@ -22,7 +22,7 @@ import java.lang.IllegalStateException * or `element` does not contain origin of type `SirOrigin.KotlinEntity.Function`, * returns original element. */ -class ForeignIntoSwiftFunctionTranslationPass : SirPass { +public class ForeignIntoSwiftFunctionTranslationPass : SirPass { private class Transformer : SirTransformer() { override fun transformElement(element: E, data: Unit): E { diff --git a/native/swift/sir-printer/build.gradle.kts b/native/swift/sir-printer/build.gradle.kts index 03769de14ff..0ad2151f2dd 100644 --- a/native/swift/sir-printer/build.gradle.kts +++ b/native/swift/sir-printer/build.gradle.kts @@ -4,6 +4,10 @@ plugins { description = "Printer for SIR" +kotlin { + explicitApi() +} + dependencies { compileOnly(kotlinStdlib()) diff --git a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt index eee4ec5e3c9..a38098ac915 100644 --- a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt +++ b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt @@ -11,12 +11,12 @@ import org.jetbrains.kotlin.utils.SmartPrinter private const val DEFAULT_INDENT: String = " " -class SirAsSwiftSourcesPrinter : SirVisitor() { - fun print(element: SirElement): String = buildString { +public class SirAsSwiftSourcesPrinter : SirVisitor() { + public fun print(element: SirElement): String = buildString { element.accept(this@SirAsSwiftSourcesPrinter, SmartPrinter(this)) }.trim() - override fun visitModule(module: SirModule, data: SmartPrinter) = with(data) { + override fun visitModule(module: SirModule, data: SmartPrinter): Unit = with(data) { module.declarations.forEach { it.accept(this@SirAsSwiftSourcesPrinter, this) if (module.declarations.last() != it) {