Skip to content

Commit b5dd1a0

Browse files
ting-yuanKSP Auto Pick
authored and
KSP Auto Pick
committed
UPDATE_AA_VERSION: 2.2.0-dev-745
(cherry picked from commit 9284800)
1 parent 83a3e34 commit b5dd1a0

File tree

8 files changed

+56
-17
lines changed

8 files changed

+56
-17
lines changed

gradle.properties

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ junit5Version=5.8.2
99
junitPlatformVersion=1.8.2
1010
googleTruthVersion=1.1
1111

12-
aaKotlinBaseVersion=2.1.20-dev-8066
13-
aaIntellijVersion=233.13135.128
12+
aaKotlinBaseVersion=2.2.0-dev-745
13+
aaIntellijVersion=241.19416.19
1414
aaGuavaVersion=33.2.0-jre
1515
aaAsmVersion=9.0
16-
aaFastutilVersion=8.5.11-18
16+
aaFastutilVersion=8.5.13-jb4
1717
aaStax2Version=4.2.1
1818
aaAaltoXmlVersion=1.3.0
1919
aaStreamexVersion=0.7.2

kotlin-analysis-api/build.gradle.kts

+4
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ dependencies {
4949
"com.jetbrains.intellij.platform:core-impl",
5050
"com.jetbrains.intellij.platform:extensions",
5151
"com.jetbrains.intellij.platform:diagnostic",
52+
"com.jetbrains.intellij.platform:diagnostic-telemetry",
5253
"com.jetbrains.intellij.java:java-frontback-psi",
5354
"com.jetbrains.intellij.java:java-frontback-psi-impl",
5455
"com.jetbrains.intellij.java:java-psi",
@@ -102,6 +103,8 @@ dependencies {
102103
}
103104
implementation("org.jetbrains:annotations:24.1.0")
104105

106+
implementation("io.opentelemetry:opentelemetry-api:1.34.1") { isTransitive = false }
107+
105108
compileOnly(project(":common-deps"))
106109

107110
implementation(project(":api"))
@@ -117,6 +120,7 @@ dependencies {
117120
testImplementation("org.jetbrains.kotlin:kotlin-compiler-internal-test-framework:$aaKotlinBaseVersion")
118121
testImplementation(project(":common-deps"))
119122
testImplementation(project(":test-utils"))
123+
testImplementation("org.jetbrains.kotlin:analysis-api-test-framework:$aaKotlinBaseVersion")
120124

121125
libsForTesting(kotlin("stdlib", aaKotlinBaseVersion))
122126
libsForTesting(kotlin("test", aaKotlinBaseVersion))

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt

+32-7
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import com.google.devtools.ksp.symbol.Origin
4444
import com.intellij.core.CoreApplicationEnvironment
4545
import com.intellij.mock.MockProject
4646
import com.intellij.openapi.Disposable
47+
import com.intellij.openapi.application.ApplicationManager
48+
import com.intellij.openapi.application.runWriteAction
4749
import com.intellij.openapi.project.Project
4850
import com.intellij.openapi.util.Disposer
4951
import com.intellij.openapi.vfs.StandardFileSystems
@@ -53,6 +55,7 @@ import com.intellij.psi.PsiManager
5355
import com.intellij.psi.PsiTreeChangeAdapter
5456
import com.intellij.psi.PsiTreeChangeListener
5557
import com.intellij.psi.search.GlobalSearchScope
58+
import com.intellij.util.ui.EDT
5659
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
5760
import org.jetbrains.kotlin.analysis.api.KaImplementationDetail
5861
import org.jetbrains.kotlin.analysis.api.platform.KotlinMessageBusProvider
@@ -539,12 +542,14 @@ class KotlinSymbolProcessing(
539542
}
540543

541544
fun dropCaches() {
542-
KotlinGlobalModificationService.getInstance(project).publishGlobalSourceModuleStateModification()
543-
KaSessionProvider.getInstance(project).clearCaches()
544-
psiManager.dropResolveCaches()
545-
psiManager.dropPsiCaches()
545+
maybeRunInWriteAction {
546+
KotlinGlobalModificationService.getInstance(project).publishGlobalSourceModuleStateModification()
547+
KaSessionProvider.getInstance(project).clearCaches()
548+
psiManager.dropResolveCaches()
549+
psiManager.dropPsiCaches()
546550

547-
KSObjectCacheManager.clear()
551+
KSObjectCacheManager.clear()
552+
}
548553
}
549554

550555
var rounds = 0
@@ -623,7 +628,9 @@ class KotlinSymbolProcessing(
623628
dropCaches()
624629
codeGenerator.closeFiles()
625630
} finally {
626-
Disposer.dispose(projectDisposable)
631+
maybeRunInWriteAction {
632+
Disposer.dispose(projectDisposable)
633+
}
627634
}
628635

629636
return if (logger.hasError) ExitCode.PROCESSING_ERROR else ExitCode.OK
@@ -668,6 +675,8 @@ fun String?.toKotlinVersion(): KotlinVersion {
668675
@Suppress("unused")
669676
@OptIn(KaImplementationDetail::class)
670677
internal val DEAR_SHADOW_JAR_PLEASE_DO_NOT_REMOVE_THESE = listOf(
678+
it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap::class.java,
679+
it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap::class.java,
671680
org.jetbrains.kotlin.analysis.api.impl.base.java.source.JavaElementSourceWithSmartPointerFactory::class.java,
672681
org.jetbrains.kotlin.analysis.api.impl.base.projectStructure.KaBaseModuleProvider::class.java,
673682
org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService::class.java,
@@ -677,7 +686,7 @@ internal val DEAR_SHADOW_JAR_PLEASE_DO_NOT_REMOVE_THESE = listOf(
677686
org.jetbrains.kotlin.analysis.api.standalone.base.declarations.KotlinStandaloneFirDirectInheritorsProvider::class.java,
678687
org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLRealFirElementByPsiElementChooser::class.java,
679688
org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionInvalidationService::class.java,
680-
org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.LLStubBasedLibrarySymbolProviderFactory::class.java,
689+
org.jetbrains.kotlin.analysis.low.level.api.fir.symbolProviders.factories.LLStubOriginLibrarySymbolProviderFactory::class.java,
681690
org.jetbrains.kotlin.analysis.api.impl.base.permissions.KaBaseAnalysisPermissionChecker::class.java,
682691
org.jetbrains.kotlin.analysis.api.impl.base.permissions.KaBaseAnalysisPermissionRegistry::class.java,
683692
org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaBasePsiSymbolPointerCreator::class.java,
@@ -698,6 +707,8 @@ internal val DEAR_SHADOW_JAR_PLEASE_DO_NOT_REMOVE_THESE = listOf(
698707
com.intellij.diagnostic.ActivityCategory::class.java,
699708
com.intellij.openapi.application.JetBrainsProtocolHandler::class.java,
700709
com.intellij.openapi.editor.impl.EditorDocumentPriorities::class.java,
710+
com.intellij.platform.diagnostic.telemetry.TelemetryManager::class.java,
711+
com.intellij.psi.impl.PsiSubstitutorImpl::class.java,
701712
com.intellij.psi.tree.ChildRoleBase::class.java,
702713
com.intellij.util.xmlb.Constants::class.java,
703714
com.intellij.xml.CommonXmlStrings::class.java,
@@ -725,3 +736,17 @@ fun TargetPlatform.getPlatformInfo(kspConfig: KSPConfig): List<PlatformInfo> =
725736
else -> UnknownPlatformInfoImpl(platform.toString())
726737
}
727738
}
739+
740+
private fun <R> maybeRunInWriteAction(f: () -> R) {
741+
synchronized(EDT::class.java) {
742+
if (!EDT.isCurrentThreadEdt())
743+
EDT.updateEdt()
744+
if (ApplicationManager.getApplication() != null) {
745+
runWriteAction {
746+
f()
747+
}
748+
} else {
749+
f()
750+
}
751+
}
752+
}

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSAnnotationImpl.kt

+2
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ class KSAnnotationImpl private constructor(
137137
CONSTRUCTOR_PARAMETER -> AnnotationUseSiteTarget.PARAM
138138
SETTER_PARAMETER -> AnnotationUseSiteTarget.SETPARAM
139139
PROPERTY_DELEGATE_FIELD -> AnnotationUseSiteTarget.DELEGATE
140+
// FIXME
141+
ALL -> null
140142
}
141143
}
142144

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/resolved/KSAnnotationResolvedImpl.kt

+2
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ class KSAnnotationResolvedImpl private constructor(
132132
CONSTRUCTOR_PARAMETER -> AnnotationUseSiteTarget.PARAM
133133
SETTER_PARAMETER -> AnnotationUseSiteTarget.SETPARAM
134134
PROPERTY_DELEGATE_FIELD -> AnnotationUseSiteTarget.DELEGATE
135+
// FIXME:
136+
ALL -> null
135137
}
136138
}
137139

kotlin-analysis-api/src/test/kotlin/com/google/devtools/ksp/test/AbstractKSPAATest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ abstract class AbstractKSPAATest : AbstractKSPTest(FrontendKinds.FIR) {
9191
override fun compileModule(module: TestModule, testServices: TestServices) {
9292
module.writeKtFiles()
9393
val javaFiles = module.writeJavaFiles()
94-
val dependencies = module.allDependencies.map { outDirForModule(it.moduleName) }
94+
val dependencies = module.allDependencies.map { outDirForModule(it.dependencyModule.name) }
9595
compileKotlin(dependencies, module.kotlinSrc.path, module.javaDir.path, module.outDir, module.name)
9696
val classpath = (dependencies + KtTestUtil.getAnnotationsJar() + module.outDir)
9797
.joinToString(File.pathSeparator) { it.absolutePath }

kotlin-analysis-api/src/test/kotlin/com/google/devtools/ksp/test/AbstractKSPTest.kt

+11-6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import com.intellij.openapi.Disposable
2222
import com.intellij.openapi.project.Project
2323
import com.intellij.openapi.util.Disposer
2424
import com.intellij.testFramework.TestDataFile
25+
import org.jetbrains.kotlin.analysis.test.framework.services.TargetPlatformDirectives
26+
import org.jetbrains.kotlin.analysis.test.framework.services.TargetPlatformProviderForAnalysisApiTests
27+
import org.jetbrains.kotlin.cli.common.disposeRootInWriteAction
2528
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
2629
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
2730
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
@@ -58,13 +61,13 @@ abstract class DisposableTest {
5861
protected val disposable: Disposable get() = _disposable!!
5962

6063
@BeforeEach
61-
private fun initDisposable(testInfo: TestInfo) {
64+
fun initDisposable(testInfo: TestInfo) {
6265
_disposable = Disposer.newDisposable("disposable for ${testInfo.displayName}")
6366
}
6467

6568
@AfterEach
66-
private fun disposeDisposable() {
67-
_disposable?.let { Disposer.dispose(it) }
69+
fun disposeDisposable() {
70+
_disposable?.let { disposeRootInWriteAction(it) }
6871
_disposable = null
6972
}
7073
}
@@ -121,9 +124,11 @@ abstract class AbstractKSPTest(frontend: FrontendKind<*>) : DisposableTest() {
121124
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
122125
useAdditionalService<ApplicationDisposableProvider> { ExecutionListenerBasedDisposableProvider() }
123126
useAdditionalService<KotlinStandardLibrariesPathProvider> { StandardLibrariesPathProviderForKotlinProject }
127+
useAdditionalService<TargetPlatformProvider>(::TargetPlatformProviderForAnalysisApiTests)
124128

125129
useDirectives(*AbstractKotlinCompilerTest.defaultDirectiveContainers.toTypedArray())
126130
useDirectives(JvmEnvironmentConfigurationDirectives)
131+
useDirectives(TargetPlatformDirectives)
127132

128133
defaultDirectives {
129134
+JvmEnvironmentConfigurationDirectives.FULL_JDK
@@ -163,7 +168,7 @@ abstract class AbstractKSPTest(frontend: FrontendKind<*>) : DisposableTest() {
163168
open fun compileModule(module: TestModule, testServices: TestServices) {
164169
val javaFiles = module.writeJavaFiles()
165170
val compilerConfiguration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
166-
val dependencies = module.allDependencies.map { outDirForModule(it.moduleName) }
171+
val dependencies = module.allDependencies.map { outDirForModule(it.dependencyModule.name) }
167172
compilerConfiguration.addJvmClasspathRoots(dependencies)
168173
compilerConfiguration.addJavaSourceRoot(module.javaDir)
169174

@@ -196,8 +201,8 @@ abstract class AbstractKSPTest(frontend: FrontendKind<*>) : DisposableTest() {
196201
path,
197202
testConfiguration.directives,
198203
)
199-
val dependencyProvider = DependencyProviderImpl(testServices, moduleStructure.modules)
200-
testServices.registerDependencyProvider(dependencyProvider)
204+
val dependencyProvider = ArtifactsProvider(testServices, moduleStructure.modules)
205+
testServices.registerArtifactsProvider(dependencyProvider)
201206
testServices.register(TestModuleStructure::class, moduleStructure)
202207

203208
val mainModule = moduleStructure.modules.last()

symbol-processing-aa-embeddable/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ val prefixesToRelocate = listOf(
4646
"com.intellij.",
4747
"com.sun.jna.",
4848
"gnu.trove.",
49+
"io.opentelemetry.api.",
4950
"it.unimi.dsi.",
5051
"javaslang.",
5152
"javax.inject.",

0 commit comments

Comments
 (0)