Stub generation infrastructure (except for metadata generation) for KAPT+K2
This commit includes the basic Java stubs generation infrastructure and the corresponding tests. The main entry point is called Kapt4StubGenerator. Calls to it from production code will be added in a separate commit. #KT-51982
This commit is contained in:
committed by
Space Team
parent
ae4fab8483
commit
2002542ad2
+5
@@ -9,13 +9,16 @@ import com.intellij.core.CoreApplicationEnvironment
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.application.Application
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
|
||||
public class StandaloneAnalysisAPISession internal constructor(
|
||||
kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment,
|
||||
public val createPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
modulesWithFilesProvider: () -> Map<KtModule, List<PsiFile>>
|
||||
) {
|
||||
// TODO: better to limit exposure? Current usages are: addExtension, jarFileSystem
|
||||
public val coreApplicationEnvironment: CoreApplicationEnvironment = kotlinCoreProjectEnvironment.environment
|
||||
@@ -29,4 +32,6 @@ public class StandaloneAnalysisAPISession internal constructor(
|
||||
ReplaceWith("project")
|
||||
)
|
||||
public val mockProject: MockProject = kotlinCoreProjectEnvironment.project
|
||||
|
||||
public val modulesWithFiles: Map<KtModule, List<PsiFile>> by lazy(modulesWithFilesProvider)
|
||||
}
|
||||
+10
-1
@@ -11,12 +11,14 @@ import com.intellij.openapi.application.Application
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.FirStandaloneServiceRegistrar
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
||||
import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleProviderBuilder
|
||||
@@ -150,6 +152,8 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
PackagePartProviderFactory::class.java,
|
||||
KotlinStaticPackagePartProviderFactory(packagePartProvider)
|
||||
)
|
||||
|
||||
registerService(JvmFirDeserializedSymbolProviderFactory::class.java, JvmFirDeserializedSymbolProviderFactory::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +212,12 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
return StandaloneAnalysisAPISession(
|
||||
kotlinCoreProjectEnvironment,
|
||||
createPackagePartProvider,
|
||||
)
|
||||
) {
|
||||
projectStructureProvider.allSourceFiles
|
||||
.asSequence()
|
||||
.filterIsInstance<PsiFile>()
|
||||
.groupBy { projectStructureProvider.getModule(it.originalElement, null) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user