[analysis api] move analysis session classes to separate packages, use KtAnalysisApiInternals to mark internal API

This commit is contained in:
Ilya Kirillov
2022-05-10 17:29:32 +02:00
parent eb9085c083
commit b5ad6f5db4
228 changed files with 521 additions and 534 deletions
@@ -1,25 +0,0 @@
/*
* Copyright 2010-2021 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.
*/
package org.jetbrains.kotlin.analysis.api
@RequiresOptIn
public annotation class ForbidKtResolveInternals
public object ForbidKtResolve {
@OptIn(ForbidKtResolveInternals::class)
public inline fun <R> forbidResolveIn(actionName: String, action: () -> R): R {
if (resovleIsForbidenInActionWithName.get() != null) return action()
resovleIsForbidenInActionWithName.set(actionName)
return try {
action()
} finally {
resovleIsForbidenInActionWithName.set(null)
}
}
@ForbidKtResolveInternals
public val resovleIsForbidenInActionWithName: ThreadLocal<String?> = ThreadLocal.withInitial { null }
}
@@ -0,0 +1,22 @@
/*
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api
public object KtAnalysisAllowanceManager {
@OptIn(KtAnalysisApiInternals::class)
public inline fun <R> forbidAnalysisInside(actionName: String, action: () -> R): R {
if (resolveIsForbiddenInActionWithName.get() != null) return action()
resolveIsForbiddenInActionWithName.set(actionName)
return try {
action()
} finally {
resolveIsForbiddenInActionWithName.set(null)
}
}
@KtAnalysisApiInternals
public val resolveIsForbiddenInActionWithName: ThreadLocal<String?> = ThreadLocal.withInitial { null }
}
@@ -6,11 +6,12 @@
package org.jetbrains.kotlin.analysis.api
import org.jetbrains.kotlin.analysis.api.components.*
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolProvider
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolProviderMixIn
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
@@ -5,7 +5,9 @@
package org.jetbrains.kotlin.analysis.api
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.types.Variance
@@ -3,14 +3,16 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.session
@file:OptIn(KtAnalysisApiInternals::class)
package org.jetbrains.kotlin.analysis.api
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.Task
import com.intellij.openapi.util.Computable
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeTokenFactory
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenFactory
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
@@ -27,7 +29,6 @@ import org.jetbrains.kotlin.psi.KtFile
* @see KtAnalysisSession
* @see analyzeWithReadAction
*/
@OptIn(InvalidWayOfUsingAnalysisSession::class)
public inline fun <R> analyze(
useSiteKtElement: KtElement,
nonDefaultLifetimeTokenFactory: KtLifetimeTokenFactory? = null,
@@ -37,7 +38,6 @@ public inline fun <R> analyze(
.analyse(useSiteKtElement, nonDefaultLifetimeTokenFactory, action)
@OptIn(InvalidWayOfUsingAnalysisSession::class)
public inline fun <R> analyze(
ktModule: KtModule,
nonDefaultLifetimeTokenFactory: KtLifetimeTokenFactory? = null,
@@ -49,8 +49,6 @@ public inline fun <R> analyze(
}
@OptIn(InvalidWayOfUsingAnalysisSession::class)
public inline fun <R> analyzeInDependedAnalysisSession(
originalFile: KtFile,
elementToReanalyze: KtElement,
@@ -0,0 +1,13 @@
/*
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api
@RequiresOptIn("Internal Analysis API component which should not be used outside the Analysis API implementation modules as it does not have any compatibility guarantees")
public annotation class KtAnalysisApiInternals
@RequiresOptIn("Analysis should not be allowed to be ran from EDT thread, otherwise it may cause IDE freezes")
public annotation class KtAllowAnalysisOnEdt
@@ -1,9 +0,0 @@
/*
* Copyright 2010-2021 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.
*/
package org.jetbrains.kotlin.analysis.api
@RequiresOptIn
public annotation class KtInternalApiMarker
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.analysis.api.annotations
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.name.ClassId
/**
@@ -5,12 +5,12 @@
package org.jetbrains.kotlin.analysis.api.calls
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.psi.KtExpression
/**
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
public abstract class KtAnalysisSessionComponent : KtLifetimeOwner {
protected abstract val analysisSession: KtAnalysisSession
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtImportDirective
@@ -5,13 +5,13 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.scopes.*
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.psi.KtExpression
public abstract class KtSmartCastProvider : KtAnalysisSessionComponent() {
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.analysis.api.components
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.types.KtFlexibleType
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.analysis.api.diagnostics
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import kotlin.reflect.KClass
public interface KtDiagnostic : KtLifetimeOwner {
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api.tokens
package org.jetbrains.kotlin.analysis.api.lifetime
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker
@@ -3,23 +3,25 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.session
package org.jetbrains.kotlin.analysis.api.lifetime
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeTokenFactory
import org.jetbrains.kotlin.analysis.api.tokens.ReadActionConfinementValidityTokenFactory
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
@KtAnalysisApiInternals
public abstract class KtDefaultLifetimeTokenProvider {
public abstract fun getDefaultLifetimeTokenFactory(): KtLifetimeTokenFactory
public companion object {
@KtAnalysisApiInternals
public fun getService(project: Project): KtDefaultLifetimeTokenProvider =
project.getService(KtDefaultLifetimeTokenProvider::class.java)
}
}
@KtAnalysisApiInternals
public class KtReadActionConfinementDefaultLifetimeTokenProvider: KtDefaultLifetimeTokenProvider() {
override fun getDefaultLifetimeTokenFactory(): KtLifetimeTokenFactory {
return ReadActionConfinementValidityTokenFactory
return KtReadActionConfinementLifetimeTokenFactory
}
}
@@ -1,12 +1,9 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.tokens.assertIsValidAndAccessible
package org.jetbrains.kotlin.analysis.api.lifetime
public interface KtLifetimeOwner {
public val token: KtLifetimeToken
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api.tokens
package org.jetbrains.kotlin.analysis.api.lifetime
import com.intellij.openapi.project.Project
import kotlin.reflect.KClass
@@ -1,17 +1,21 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api.tokens
@file:OptIn(KtAnalysisApiInternals::class)
package org.jetbrains.kotlin.analysis.api.lifetime
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker
import org.jetbrains.kotlin.analysis.api.*
import org.jetbrains.kotlin.analysis.api.session.InvalidWayOfUsingAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtAnalysisAllowanceManager
import kotlin.reflect.KClass
@OptIn(KtAllowAnalysisOnEdt::class)
public class KtReadActionConfinementLifetimeToken(project: Project) : KtLifetimeToken() {
private val modificationTracker = project.createProjectWideOutOfBlockModificationTracker()
private val onCreatedTimeStamp = modificationTracker.modificationCount
@@ -20,44 +24,41 @@ public class KtReadActionConfinementLifetimeToken(project: Project) : KtLifetime
return onCreatedTimeStamp == modificationTracker.modificationCount
}
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class)
override fun getInvalidationReason(): String {
if (onCreatedTimeStamp != modificationTracker.modificationCount) return "PSI has changed since creation"
error("Getting invalidation reason for valid validity token")
}
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class, ForbidKtResolveInternals::class, InvalidWayOfUsingAnalysisSession::class)
override fun isAccessible(): Boolean {
val application = ApplicationManager.getApplication()
if (application.isDispatchThread && !allowOnEdt.get()) return false
if (ForbidKtResolve.resovleIsForbidenInActionWithName.get() != null) return false
if (KtAnalysisAllowanceManager.resolveIsForbiddenInActionWithName.get() != null) return false
if (!application.isReadAccessAllowed) return false
if (!ReadActionConfinementValidityTokenFactory.isInsideAnalysisContext()) return false
if (!KtReadActionConfinementLifetimeTokenFactory.isInsideAnalysisContext()) return false
return true
}
@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class, ForbidKtResolveInternals::class, InvalidWayOfUsingAnalysisSession::class)
override fun getInaccessibilityReason(): String {
val application = ApplicationManager.getApplication()
if (application.isDispatchThread && !allowOnEdt.get()) return "Called in EDT thread"
if (!application.isReadAccessAllowed) return "Called outside read action"
ForbidKtResolve.resovleIsForbidenInActionWithName.get()?.let { actionName ->
KtAnalysisAllowanceManager.resolveIsForbiddenInActionWithName.get()?.let { actionName ->
return "Resolve is forbidden in $actionName"
}
if (!ReadActionConfinementValidityTokenFactory.isInsideAnalysisContext()) return "Called outside analyse method"
if (!KtReadActionConfinementLifetimeTokenFactory.isInsideAnalysisContext()) return "Called outside analyse method"
error("Getting inaccessibility reason for validity token when it is accessible")
}
public companion object {
@HackToForceAllowRunningAnalyzeOnEDT
@KtAnalysisApiInternals
public val allowOnEdt: ThreadLocal<Boolean> = ThreadLocal.withInitial { false }
}
public override val factory: KtLifetimeTokenFactory = ReadActionConfinementValidityTokenFactory
public override val factory: KtLifetimeTokenFactory = KtReadActionConfinementLifetimeTokenFactory
}
public object ReadActionConfinementValidityTokenFactory : KtLifetimeTokenFactory() {
public object KtReadActionConfinementLifetimeTokenFactory : KtLifetimeTokenFactory() {
override val identifier: KClass<out KtLifetimeToken> = KtReadActionConfinementLifetimeToken::class
override fun create(project: Project): KtLifetimeToken = KtReadActionConfinementLifetimeToken(project)
@@ -75,18 +76,13 @@ public object ReadActionConfinementValidityTokenFactory : KtLifetimeTokenFactory
internal fun isInsideAnalysisContext() = currentAnalysisContextEnteringCount.get() > 0
}
@RequiresOptIn("All frontend related work should not be allowed to be ran from EDT thread. Only use it as a temporary solution")
public annotation class HackToForceAllowRunningAnalyzeOnEDT
/**
* All frontend related work should not be allowed to be ran from EDT thread. Only use it as a temporary solution.
*
* @see KtAnalysisSession
* @see KtReadActionConfinementLifetimeToken
*/
@HackToForceAllowRunningAnalyzeOnEDT
public inline fun <T> hackyAllowRunningOnEdt(action: () -> T): T {
@KtAllowAnalysisOnEdt
public inline fun <T> allowAnalysisOnEdt(action: () -> T): T {
if (KtReadActionConfinementLifetimeToken.allowOnEdt.get()) return action()
KtReadActionConfinementLifetimeToken.allowOnEdt.set(true)
try {
@@ -1,15 +1,16 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 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.
*/
package org.jetbrains.kotlin.analysis.api
package org.jetbrains.kotlin.analysis.api.lifetime.impl
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationListener
import com.intellij.openapi.application.ApplicationManager
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
@KtInternalApiMarker
@KtAnalysisApiInternals
public class NoWriteActionInAnalyseCallChecker(parentDisposable: Disposable) {
init {
val listener = object : ApplicationListener {
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.analysis.api.scopes
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.name.Name
@@ -10,41 +10,31 @@ import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtInternalApiMarker
import org.jetbrains.kotlin.analysis.api.NoWriteActionInAnalyseCallChecker
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.lifetime.impl.NoWriteActionInAnalyseCallChecker
import org.jetbrains.kotlin.analysis.api.lifetime.KtDefaultLifetimeTokenProvider
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeTokenFactory
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenFactory
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
@RequiresOptIn("To use analysis session, consider using analyze/analyzeWithReadAction/analyseInModalWindow methods")
public annotation class InvalidWayOfUsingAnalysisSession
@RequiresOptIn
public annotation class KtAnalysisSessionProviderInternals
/**
* Provides [KtAnalysisSession] by [contextElement]
* Should not be used directly, consider using [analyse]/[analyzeWithReadAction]/[analyzeInModalWindow] instead
*/
@InvalidWayOfUsingAnalysisSession
@KtAnalysisApiInternals
public abstract class KtAnalysisSessionProvider(public val project: Project) : Disposable {
@Suppress("LeakingThis")
@OptIn(KtInternalApiMarker::class)
public val noWriteActionInAnalyseCallChecker: NoWriteActionInAnalyseCallChecker = NoWriteActionInAnalyseCallChecker(this)
@InvalidWayOfUsingAnalysisSession
public abstract fun getAnalysisSession(useSiteKtElement: KtElement, factory: KtLifetimeTokenFactory): KtAnalysisSession
@InvalidWayOfUsingAnalysisSession
public abstract fun getAnalysisSessionBySymbol(contextSymbol: KtSymbol): KtAnalysisSession
@InvalidWayOfUsingAnalysisSession
public abstract fun getAnalysisSessionByUseSiteKtModule(useSiteKtModule: KtModule, factory: KtLifetimeTokenFactory): KtAnalysisSession
@InvalidWayOfUsingAnalysisSession
public inline fun <R> analyzeWithSymbolAsContext(
contextSymbol: KtSymbol,
action: KtAnalysisSession.() -> R
@@ -53,7 +43,6 @@ public abstract class KtAnalysisSessionProvider(public val project: Project) : D
return action(analysisSession)
}
@InvalidWayOfUsingAnalysisSession
public inline fun <R> analyseInDependedAnalysisSession(
originalFile: KtFile,
elementToReanalyze: KtElement,
@@ -69,7 +58,6 @@ public abstract class KtAnalysisSessionProvider(public val project: Project) : D
return analyse(dependedAnalysisSession, factory, action)
}
@InvalidWayOfUsingAnalysisSession
public inline fun <R> analyse(
useSiteKtElement: KtElement,
nonDefaultLifetimeTokenFactory: KtLifetimeTokenFactory?,
@@ -80,7 +68,6 @@ public abstract class KtAnalysisSessionProvider(public val project: Project) : D
return analyse(getAnalysisSession(useSiteKtElement, factory), factory, action)
}
@InvalidWayOfUsingAnalysisSession
public inline fun <R> analyze(
useSiteKtModule: KtModule,
nonDefaultLifetimeTokenFactory: KtLifetimeTokenFactory?,
@@ -92,8 +79,6 @@ public abstract class KtAnalysisSessionProvider(public val project: Project) : D
return analyse(getAnalysisSessionByUseSiteKtModule(useSiteKtModule, factory), factory, action)
}
@OptIn(KtAnalysisSessionProviderInternals::class, KtInternalApiMarker::class)
@InvalidWayOfUsingAnalysisSession
public inline fun <R> analyse(
analysisSession: KtAnalysisSession,
factory: KtLifetimeTokenFactory,
@@ -115,6 +100,7 @@ public abstract class KtAnalysisSessionProvider(public val project: Project) : D
override fun dispose() {}
public companion object {
@KtAnalysisApiInternals
public fun getInstance(project: Project): KtAnalysisSessionProvider =
ServiceManager.getService(project, KtAnalysisSessionProvider::class.java)
}
@@ -5,14 +5,14 @@
package org.jetbrains.kotlin.analysis.api.symbols
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
import org.jetbrains.kotlin.analysis.api.annotations.KtConstantAnnotationValue
import org.jetbrains.kotlin.analysis.api.annotations.annotationsByClassId
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.types.KtSubstitutor
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.analysis.api.symbols
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
public interface KtSymbol : KtLifetimeOwner {
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
* * for class & type alias symbols if its qualified name was not changed
* * for package symbol if the package is still exists
*
* @see org.jetbrains.kotlin.analysis.api.ReadActionConfinementValidityToken
* @see org.jetbrains.kotlin.analysis.api.ReadActionConfinementKtLifetimeToken
*/
public abstract class KtSymbolPointer<out S : KtSymbol> {
/**
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.analysis.api.types
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
public interface KtSubstitutor : KtLifetimeOwner {
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.analysis.api.types
import org.jetbrains.kotlin.analysis.api.KtTypeArgument
import org.jetbrains.kotlin.analysis.api.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotated
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol