Refactoring: introduced val location: LocationInfo? in LookupLocation and use it in LookupTracker::record
This commit is contained in:
@@ -16,7 +16,26 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.incremental
|
package org.jetbrains.kotlin.incremental
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.getLineAndColumnInPsiFile
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo.Position
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
|
import org.jetbrains.kotlin.psi.doNotAnalyze
|
||||||
|
|
||||||
class KotlinLookupLocation(val element: KtElement) : LookupLocation
|
class KotlinLookupLocation(val element: KtElement) : LookupLocation {
|
||||||
|
|
||||||
|
override val location: LocationInfo?
|
||||||
|
get() {
|
||||||
|
val containingJetFile = element.getContainingJetFile()
|
||||||
|
|
||||||
|
if (containingJetFile.doNotAnalyze != null) return null
|
||||||
|
|
||||||
|
return object : LocationInfo {
|
||||||
|
override val filePath = containingJetFile.virtualFile.path
|
||||||
|
|
||||||
|
override val position: Position
|
||||||
|
get() = getLineAndColumnInPsiFile(containingJetFile, element.textRange).let { Position(it.line, it.column) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+3
-2
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.rmi.kotlinr
|
package org.jetbrains.kotlin.rmi.kotlinr
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
||||||
@@ -64,8 +65,8 @@ public class CompilerCallbackServicesFacadeServer(
|
|||||||
incrementalCompilationComponents!!.getIncrementalCache(target).close()
|
incrementalCompilationComponents!!.getIncrementalCache(target).close()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun lookupTracker_record(lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
override fun lookupTracker_record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
||||||
incrementalCompilationComponents!!.getLookupTracker().record(lookupContainingFile, lookupLine, lookupColumn, scopeFqName, scopeKind, name)
|
incrementalCompilationComponents!!.getLookupTracker().record(locationInfo, scopeFqName, scopeKind, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val lookupTracker_isDoNothing: Boolean = incrementalCompilationComponents != null && incrementalCompilationComponents.getLookupTracker() == LookupTracker.DO_NOTHING
|
private val lookupTracker_isDoNothing: Boolean = incrementalCompilationComponents != null && incrementalCompilationComponents.getLookupTracker() == LookupTracker.DO_NOTHING
|
||||||
|
|||||||
+2
-8
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.rmi
|
package org.jetbrains.kotlin.rmi
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
|
||||||
import org.jetbrains.kotlin.modules.TargetId
|
import org.jetbrains.kotlin.modules.TargetId
|
||||||
@@ -71,14 +72,7 @@ public interface CompilerCallbackServicesFacade : Remote {
|
|||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
// LookupTracker
|
// LookupTracker
|
||||||
@Throws(RemoteException::class)
|
@Throws(RemoteException::class)
|
||||||
fun lookupTracker_record(
|
fun lookupTracker_record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String)
|
||||||
lookupContainingFile: String,
|
|
||||||
lookupLine: Int?,
|
|
||||||
lookupColumn: Int?,
|
|
||||||
scopeFqName: String,
|
|
||||||
scopeKind: ScopeKind,
|
|
||||||
name: String
|
|
||||||
)
|
|
||||||
|
|
||||||
@Throws(RemoteException::class)
|
@Throws(RemoteException::class)
|
||||||
fun lookupTracker_isDoNothing(): Boolean
|
fun lookupTracker_isDoNothing(): Boolean
|
||||||
|
|||||||
+3
-3
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.rmi.service
|
package org.jetbrains.kotlin.rmi.service
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.rmi.CompilerCallbackServicesFacade
|
import org.jetbrains.kotlin.rmi.CompilerCallbackServicesFacade
|
||||||
@@ -24,13 +25,12 @@ import org.jetbrains.kotlin.rmi.Profiler
|
|||||||
|
|
||||||
|
|
||||||
class RemoteLookupTrackerClient(val facade: CompilerCallbackServicesFacade, val profiler: Profiler = DummyProfiler()) : LookupTracker {
|
class RemoteLookupTrackerClient(val facade: CompilerCallbackServicesFacade, val profiler: Profiler = DummyProfiler()) : LookupTracker {
|
||||||
|
|
||||||
private val isDoNothing = profiler.withMeasure(this) { facade.lookupTracker_isDoNothing() }
|
private val isDoNothing = profiler.withMeasure(this) { facade.lookupTracker_isDoNothing() }
|
||||||
|
|
||||||
override fun record(lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
override fun record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
||||||
if (!isDoNothing) {
|
if (!isDoNothing) {
|
||||||
profiler.withMeasure(this) {
|
profiler.withMeasure(this) {
|
||||||
facade.lookupTracker_record(lookupContainingFile, lookupLine, lookupColumn, scopeFqName, scopeKind, name)
|
facade.lookupTracker_record(locationInfo, scopeFqName, scopeKind, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,16 @@
|
|||||||
package org.jetbrains.kotlin.incremental.components
|
package org.jetbrains.kotlin.incremental.components
|
||||||
|
|
||||||
public interface LookupLocation {
|
public interface LookupLocation {
|
||||||
|
val location: LocationInfo?
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LocationInfo {
|
||||||
|
val filePath: String
|
||||||
|
|
||||||
|
// only for tests
|
||||||
|
val position: Position
|
||||||
|
|
||||||
|
data class Position(val line: Int, val column: Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum class NoLookupLocation : LookupLocation {
|
public enum class NoLookupLocation : LookupLocation {
|
||||||
@@ -37,5 +47,7 @@ public enum class NoLookupLocation : LookupLocation {
|
|||||||
WHEN_TYPING,
|
WHEN_TYPING,
|
||||||
WHEN_GET_SUPER_MEMBERS,
|
WHEN_GET_SUPER_MEMBERS,
|
||||||
FOR_NON_TRACKED_SCOPE,
|
FOR_NON_TRACKED_SCOPE,
|
||||||
FROM_SYNTHETIC_SCOPE
|
FROM_SYNTHETIC_SCOPE;
|
||||||
|
|
||||||
|
override val location: LocationInfo? = null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.incremental.components
|
package org.jetbrains.kotlin.incremental.components
|
||||||
|
|
||||||
public interface LookupTracker {
|
public interface LookupTracker {
|
||||||
// used in tests for more accurate checks
|
|
||||||
val requiresLookupLineAndColumn: Boolean
|
|
||||||
get() = false
|
|
||||||
|
|
||||||
fun record(
|
fun record(
|
||||||
lookupContainingFile: String,
|
locationInfo: LocationInfo,
|
||||||
lookupLine: Int?,
|
|
||||||
lookupColumn: Int?,
|
|
||||||
scopeFqName: String,
|
scopeFqName: String,
|
||||||
scopeKind: ScopeKind,
|
scopeKind: ScopeKind,
|
||||||
name: String
|
name: String
|
||||||
@@ -32,14 +26,7 @@ public interface LookupTracker {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val DO_NOTHING: LookupTracker = object : LookupTracker {
|
val DO_NOTHING: LookupTracker = object : LookupTracker {
|
||||||
override fun record(
|
override fun record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
||||||
lookupContainingFile: String,
|
|
||||||
lookupLine: Int?,
|
|
||||||
lookupColumn: Int?,
|
|
||||||
scopeFqName: String,
|
|
||||||
scopeKind: ScopeKind,
|
|
||||||
name: String
|
|
||||||
) {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-11
@@ -18,27 +18,18 @@ package org.jetbrains.kotlin.incremental
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.getLineAndColumnInPsiFile
|
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.doNotAnalyze
|
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||||
import org.jetbrains.kotlin.resolve.scopes.KtScope
|
import org.jetbrains.kotlin.resolve.scopes.KtScope
|
||||||
|
|
||||||
public fun LookupTracker.record(from: LookupLocation, inScope: KtScope, name: Name) {
|
public fun LookupTracker.record(from: LookupLocation, inScope: KtScope, name: Name) {
|
||||||
if (this == LookupTracker.DO_NOTHING || from is NoLookupLocation) return
|
if (this == LookupTracker.DO_NOTHING || from is NoLookupLocation) return
|
||||||
|
|
||||||
if (from !is KotlinLookupLocation) throw AssertionError("Unexpected location type: ${from.javaClass}")
|
val location = from.location ?: return
|
||||||
|
|
||||||
val containingJetFile = from.element.getContainingJetFile()
|
|
||||||
|
|
||||||
if (containingJetFile.doNotAnalyze != null) return
|
|
||||||
|
|
||||||
val containingFilePath = containingJetFile.virtualFile.path
|
|
||||||
val lineAndColumn = if (requiresLookupLineAndColumn) getLineAndColumnInPsiFile(containingJetFile, from.element.textRange) else null
|
|
||||||
|
|
||||||
val scopeContainingDeclaration = inScope.getContainingDeclaration()
|
val scopeContainingDeclaration = inScope.getContainingDeclaration()
|
||||||
|
|
||||||
@@ -49,5 +40,5 @@ public fun LookupTracker.record(from: LookupLocation, inScope: KtScope, name: Na
|
|||||||
else -> throw AssertionError("Unexpected containing declaration type: ${scopeContainingDeclaration.javaClass}")
|
else -> throw AssertionError("Unexpected containing declaration type: ${scopeContainingDeclaration.javaClass}")
|
||||||
}
|
}
|
||||||
|
|
||||||
record(containingFilePath, lineAndColumn?.line, lineAndColumn?.column, scopeContainingDeclaration.fqNameUnsafe.asString(), scopeKind, name.asString())
|
record(location, scopeContainingDeclaration.fqNameUnsafe.asString(), scopeKind, name.asString())
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.jps.build
|
package org.jetbrains.kotlin.jps.build
|
||||||
|
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import org.jetbrains.kotlin.incremental.components.LocationInfo
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.test.JetTestUtils
|
import org.jetbrains.kotlin.test.JetTestUtils
|
||||||
@@ -55,8 +56,8 @@ abstract class AbstractLookupTrackerTest : AbstractIncrementalJpsTest(
|
|||||||
|
|
||||||
val lines = text.lines().toArrayList()
|
val lines = text.lines().toArrayList()
|
||||||
|
|
||||||
for ((line, lookupsFromLine) in lookupsFromFile.groupBy { it.lookupLine!! }) {
|
for ((line, lookupsFromLine) in lookupsFromFile.groupBy { it.lookupLine }) {
|
||||||
val columnToLookups = lookupsFromLine.groupBy { it.lookupColumn!! }.toList().sortedBy { it.first }
|
val columnToLookups = lookupsFromLine.groupBy { it.lookupColumn }.toList().sortedBy { it.first }
|
||||||
|
|
||||||
val lineContent = lines[line - 1]
|
val lineContent = lines[line - 1]
|
||||||
val parts = ArrayList<CharSequence>(columnToLookups.size * 2)
|
val parts = ArrayList<CharSequence>(columnToLookups.size * 2)
|
||||||
@@ -135,8 +136,8 @@ abstract class AbstractLookupTrackerTest : AbstractIncrementalJpsTest(
|
|||||||
|
|
||||||
private data class LookupInfo(
|
private data class LookupInfo(
|
||||||
val lookupContainingFile: String,
|
val lookupContainingFile: String,
|
||||||
val lookupLine: Int?,
|
val lookupLine: Int,
|
||||||
val lookupColumn: Int?,
|
val lookupColumn: Int,
|
||||||
val scopeFqName: String,
|
val scopeFqName: String,
|
||||||
val scopeKind: ScopeKind,
|
val scopeKind: ScopeKind,
|
||||||
val name: String
|
val name: String
|
||||||
@@ -145,14 +146,9 @@ private data class LookupInfo(
|
|||||||
private class TestLookupTracker : LookupTracker {
|
private class TestLookupTracker : LookupTracker {
|
||||||
val lookups = arrayListOf<LookupInfo>()
|
val lookups = arrayListOf<LookupInfo>()
|
||||||
|
|
||||||
override val requiresLookupLineAndColumn: Boolean
|
override fun record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
||||||
get() = true
|
val (line, column) = locationInfo.position
|
||||||
|
lookups.add(LookupInfo(locationInfo.filePath, line, column, scopeFqName, scopeKind, name))
|
||||||
override fun record(
|
|
||||||
lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?,
|
|
||||||
scopeFqName: String, scopeKind: ScopeKind, name: String
|
|
||||||
) {
|
|
||||||
lookups.add(LookupInfo(lookupContainingFile, lookupLine, lookupColumn, scopeFqName, scopeKind, name))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user