Refactoring: introduced val location: LocationInfo? in LookupLocation and use it in LookupTracker::record

This commit is contained in:
Zalim Bashorov
2015-09-22 21:03:59 +03:00
parent 81a288b42c
commit a5d8b47083
8 changed files with 53 additions and 53 deletions
@@ -16,7 +16,26 @@
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.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) }
}
}
}
@@ -1,53 +0,0 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
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.LookupTracker
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.incremental.components.ScopeKind
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.doNotAnalyze
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.scopes.KtScope
public fun LookupTracker.record(from: LookupLocation, inScope: KtScope, name: Name) {
if (this == LookupTracker.DO_NOTHING || from is NoLookupLocation) return
if (from !is KotlinLookupLocation) throw AssertionError("Unexpected location type: ${from.javaClass}")
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 scopeKind =
when (scopeContainingDeclaration) {
is ClassifierDescriptor -> ScopeKind.CLASSIFIER
is PackageFragmentDescriptor -> ScopeKind.PACKAGE
else -> throw AssertionError("Unexpected containing declaration type: ${scopeContainingDeclaration.javaClass}")
}
record(containingFilePath, lineAndColumn?.line, lineAndColumn?.column, scopeContainingDeclaration.fqNameUnsafe.asString(), scopeKind, name.asString())
}
@@ -16,6 +16,7 @@
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.ScopeKind
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
@@ -64,8 +65,8 @@ public class CompilerCallbackServicesFacadeServer(
incrementalCompilationComponents!!.getIncrementalCache(target).close()
}
override fun lookupTracker_record(lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?, scopeFqName: String, scopeKind: ScopeKind, name: String) {
incrementalCompilationComponents!!.getLookupTracker().record(lookupContainingFile, lookupLine, lookupColumn, scopeFqName, scopeKind, name)
override fun lookupTracker_record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String) {
incrementalCompilationComponents!!.getLookupTracker().record(locationInfo, scopeFqName, scopeKind, name)
}
private val lookupTracker_isDoNothing: Boolean = incrementalCompilationComponents != null && incrementalCompilationComponents.getLookupTracker() == LookupTracker.DO_NOTHING
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.rmi
import org.jetbrains.kotlin.incremental.components.LocationInfo
import org.jetbrains.kotlin.incremental.components.ScopeKind
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
import org.jetbrains.kotlin.modules.TargetId
@@ -71,14 +72,7 @@ public interface CompilerCallbackServicesFacade : Remote {
// ----------------------------------------------------
// LookupTracker
@Throws(RemoteException::class)
fun lookupTracker_record(
lookupContainingFile: String,
lookupLine: Int?,
lookupColumn: Int?,
scopeFqName: String,
scopeKind: ScopeKind,
name: String
)
fun lookupTracker_record(locationInfo: LocationInfo, scopeFqName: String, scopeKind: ScopeKind, name: String)
@Throws(RemoteException::class)
fun lookupTracker_isDoNothing(): Boolean
@@ -16,6 +16,7 @@
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.ScopeKind
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 {
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) {
profiler.withMeasure(this) {
facade.lookupTracker_record(lookupContainingFile, lookupLine, lookupColumn, scopeFqName, scopeKind, name)
facade.lookupTracker_record(locationInfo, scopeFqName, scopeKind, name)
}
}
}