JVM: remove lookupLocation from SourceCompilerForInline

This commit is contained in:
pyos
2021-05-27 18:39:49 +02:00
committed by max-kammerer
parent b6e9f64e18
commit 1109348b6d
3 changed files with 19 additions and 33 deletions
@@ -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
@@ -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)