JVM: remove lookupLocation from SourceCompilerForInline
This commit is contained in:
+3
-3
@@ -54,8 +54,6 @@ class PsiSourceCompilerForInline(
|
|||||||
additionalInnerClasses
|
additionalInnerClasses
|
||||||
) as MethodContext
|
) as MethodContext
|
||||||
|
|
||||||
override val lookupLocation = KotlinLookupLocation(callElement)
|
|
||||||
|
|
||||||
override val callElementText: String by lazy { callElement.text }
|
override val callElementText: String by lazy { callElement.text }
|
||||||
|
|
||||||
override val callsiteFile by lazy { callElement.containingFile }
|
override val callsiteFile by lazy { callElement.containingFile }
|
||||||
@@ -247,7 +245,9 @@ class PsiSourceCompilerForInline(
|
|||||||
|
|
||||||
val asmMethod = if (callDefault) mapDefault() else jvmSignature.asmMethod
|
val asmMethod = if (callDefault) mapDefault() else jvmSignature.asmMethod
|
||||||
if (asmMethod.name != functionDescriptor.name.asString()) {
|
if (asmMethod.name != functionDescriptor.name.asString()) {
|
||||||
trackLookup(DescriptorUtils.getFqNameSafe(functionDescriptor.containingDeclaration), asmMethod.name) // ?
|
KotlinLookupLocation(callElement).location?.let {
|
||||||
|
state.trackLookup(DescriptorUtils.getFqNameSafe(functionDescriptor.containingDeclaration), asmMethod.name, it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val directMember = getDirectMemberAndCallableFromObject()
|
val directMember = getDirectMemberAndCallableFromObject()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.Position
|
import org.jetbrains.kotlin.incremental.components.Position
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -30,8 +30,6 @@ interface SourceCompilerForInline {
|
|||||||
|
|
||||||
val callElement: Any
|
val callElement: Any
|
||||||
|
|
||||||
val lookupLocation: LookupLocation
|
|
||||||
|
|
||||||
val callElementText: String
|
val callElementText: String
|
||||||
|
|
||||||
val callsiteFile: PsiFile?
|
val callsiteFile: PsiFile?
|
||||||
@@ -68,13 +66,11 @@ interface SourceCompilerForInline {
|
|||||||
fun reportSuspensionPointInsideMonitor(stackTraceElement: String)
|
fun reportSuspensionPointInsideMonitor(stackTraceElement: String)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun SourceCompilerForInline.trackLookup(container: FqName, functionName: String) {
|
fun GenerationState.trackLookup(container: FqName, functionName: String, location: LocationInfo) {
|
||||||
val lookupTracker = state.configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: return
|
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: return
|
||||||
val location = lookupLocation.location ?: return
|
|
||||||
val position = if (lookupTracker.requiresPosition) location.position else Position.NO_POSITION
|
|
||||||
lookupTracker.record(
|
lookupTracker.record(
|
||||||
location.filePath,
|
location.filePath,
|
||||||
position,
|
if (lookupTracker.requiresPosition) location.position else Position.NO_POSITION,
|
||||||
container.asString(),
|
container.asString(),
|
||||||
ScopeKind.CLASSIFIER,
|
ScopeKind.CLASSIFIER,
|
||||||
functionName
|
functionName
|
||||||
|
|||||||
+12
-22
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||||
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
|
||||||
import org.jetbrains.kotlin.incremental.components.Position
|
import org.jetbrains.kotlin.incremental.components.Position
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -46,26 +45,6 @@ class IrSourceCompilerForInline(
|
|||||||
internal val codegen: ExpressionCodegen,
|
internal val codegen: ExpressionCodegen,
|
||||||
private val data: BlockInfo
|
private val data: BlockInfo
|
||||||
) : SourceCompilerForInline {
|
) : SourceCompilerForInline {
|
||||||
|
|
||||||
override val lookupLocation: LookupLocation
|
|
||||||
get() = object : LookupLocation {
|
|
||||||
override val location: LocationInfo?
|
|
||||||
get() {
|
|
||||||
val ktFile = codegen.irFunction.fileParent.getKtFile()
|
|
||||||
?.takeUnless { it.doNotAnalyze != null } ?: return null
|
|
||||||
|
|
||||||
return object : LocationInfo {
|
|
||||||
override val filePath = ktFile.virtualFilePath
|
|
||||||
|
|
||||||
override val position: Position
|
|
||||||
get() = DiagnosticUtils.getLineAndColumnInPsiFile(
|
|
||||||
ktFile,
|
|
||||||
TextRange(callElement.startOffset, callElement.endOffset)
|
|
||||||
).let { Position(it.line, it.column) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override val callElementText: String
|
override val callElementText: String
|
||||||
get() = ir2string(callElement)
|
get() = ir2string(callElement)
|
||||||
|
|
||||||
@@ -110,7 +89,18 @@ class IrSourceCompilerForInline(
|
|||||||
return it
|
return it
|
||||||
}
|
}
|
||||||
if (jvmSignature.asmMethod.name != callee.name.asString()) {
|
if (jvmSignature.asmMethod.name != callee.name.asString()) {
|
||||||
trackLookup(callee.parentAsClass.kotlinFqName, jvmSignature.asmMethod.name) // ?
|
val ktFile = codegen.irFunction.fileParent.getKtFile()
|
||||||
|
if (ktFile != null && ktFile.doNotAnalyze == null) {
|
||||||
|
state.trackLookup(callee.parentAsClass.kotlinFqName, jvmSignature.asmMethod.name, object : LocationInfo {
|
||||||
|
override val filePath = ktFile.virtualFilePath
|
||||||
|
|
||||||
|
override val position: Position
|
||||||
|
get() = DiagnosticUtils.getLineAndColumnInPsiFile(
|
||||||
|
ktFile,
|
||||||
|
TextRange(callElement.startOffset, callElement.endOffset)
|
||||||
|
).let { Position(it.line, it.column) }
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
callee.parentClassId?.let {
|
callee.parentClassId?.let {
|
||||||
return loadCompiledInlineFunction(it, jvmSignature.asmMethod, callee.isSuspend, callee.hasMangledReturnType, state)
|
return loadCompiledInlineFunction(it, jvmSignature.asmMethod, callee.isSuspend, callee.hasMangledReturnType, state)
|
||||||
|
|||||||
Reference in New Issue
Block a user