init research

This commit is contained in:
2026-02-08 11:20:43 -10:00
commit bdf064f54d
3041 changed files with 1592200 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
## :plugins:public-api-modifier
This compiler plugin makes `@AccessApiOverload` annotated functions internal.
It could help to produce two artifacts from the same code: one with the full API, one with a reduced API.
This is an exploratory plugin that is NOT actually enabled.
See https://github.com/Kotlin/dataframe/pull/959 for more information.
You can test it by adding `compilerPluginClasspath(projects.pluginApiModifier)` in
[`:core`](../../core/build.gradle.kts).
+22
View File
@@ -0,0 +1,22 @@
plugins {
with(convention.plugins) {
alias(kotlinJvm8)
}
}
group = "org.jetbrains.kotlinx.dataframe"
dependencies {
compileOnly(libs.kotlin.compiler)
}
sourceSets {
main {
java.setSrcDirs(listOf("src"))
resources.setSrcDirs(listOf("resources"))
}
test {
java.setSrcDirs(listOf("tests", "tests-gen"))
resources.setSrcDirs(listOf("testResources"))
}
}
@@ -0,0 +1,6 @@
#
# Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
# Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
#
org.jetbrains.kotlinx.dataframe.PublicApiModifierRegistrar
@@ -0,0 +1,52 @@
package org.jetbrains.kotlinx.dataframe
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.copy
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
import org.jetbrains.kotlin.fir.extensions.FirStatusTransformerExtension
import org.jetbrains.kotlin.fir.resolve.fqName
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.name.FqName
@OptIn(ExperimentalCompilerApi::class)
public class PublicApiModifierRegistrar : CompilerPluginRegistrar() {
override val supportsK2: Boolean = true
override val pluginId: String = "org.jetbrains.kotlinx.dataframe.PublicApiModifier"
override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) {
FirExtensionRegistrarAdapter.registerExtension(Extensions())
}
}
public class Extensions : FirExtensionRegistrar() {
override fun ExtensionRegistrarContext.configurePlugin() {
+::StatusTransformer
}
}
public class StatusTransformer(session: FirSession) : FirStatusTransformerExtension(session) {
public companion object {
public val apiOverload: FqName = FqName("org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload")
}
override fun needTransformStatus(declaration: FirDeclaration): Boolean =
declaration.annotations.any {
it.fqName(session) == apiOverload
}
override fun transformStatus(
status: FirDeclarationStatus,
function: FirSimpleFunction,
containingClass: FirClassLikeSymbol<*>?,
isLocal: Boolean,
): FirDeclarationStatus = status.copy(visibility = Visibilities.Internal)
}