Rename: JetElement#getLazyResolveSession() -> getResolutionFacade

Rename local variables and fields of type ResolutionFacade
This commit is contained in:
Pavel V. Talanov
2014-11-20 18:50:08 +03:00
parent b2ce3da99c
commit 63b402e93c
21 changed files with 87 additions and 92 deletions
@@ -24,25 +24,25 @@ import org.jetbrains.jet.lang.psi.JetDeclaration
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
public fun JetElement.getLazyResolveSession(): ResolutionFacade { public fun JetElement.getResolutionFacade(): ResolutionFacade {
return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this)) return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this))
} }
public fun JetDeclaration.resolveToDescriptor(): DeclarationDescriptor { public fun JetDeclaration.resolveToDescriptor(): DeclarationDescriptor {
return getLazyResolveSession().resolveToDescriptor(this) return getResolutionFacade().resolveToDescriptor(this)
} }
public fun JetElement.analyze(): BindingContext { public fun JetElement.analyze(): BindingContext {
return getLazyResolveSession().analyze(this) return getResolutionFacade().analyze(this)
} }
public fun JetElement.analyzeAndGetResult(): AnalysisResult { public fun JetElement.analyzeAndGetResult(): AnalysisResult {
val resolutionFacade = getLazyResolveSession() val resolutionFacade = getResolutionFacade()
return AnalysisResult.success(resolutionFacade.analyze(this), resolutionFacade.findModuleDescriptor(this)) return AnalysisResult.success(resolutionFacade.analyze(this), resolutionFacade.findModuleDescriptor(this))
} }
public fun JetElement.findModuleDescriptor(): ModuleDescriptor { public fun JetElement.findModuleDescriptor(): ModuleDescriptor {
return getLazyResolveSession().findModuleDescriptor(this) return getResolutionFacade().findModuleDescriptor(this)
} }
public fun JetElement.analyzeFully(): BindingContext { public fun JetElement.analyzeFully(): BindingContext {
@@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.psi.JetExpression
import org.jetbrains.jet.lang.psi.JetCallExpression import org.jetbrains.jet.lang.psi.JetCallExpression
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression import org.jetbrains.jet.lang.psi.JetSimpleNameExpression
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession import org.jetbrains.jet.plugin.caches.resolve.getResolutionFacade
import org.jetbrains.jet.lang.psi.JetQualifiedExpression import org.jetbrains.jet.lang.psi.JetQualifiedExpression
import java.util.LinkedHashMap import java.util.LinkedHashMap
@@ -58,7 +58,7 @@ object JetFileReferencesResolver {
} }
private class ResolveAllReferencesVisitor(file: JetFile, val resolveQualifiers: Boolean, val resolveShortNames: Boolean) : JetTreeVisitorVoid() { private class ResolveAllReferencesVisitor(file: JetFile, val resolveQualifiers: Boolean, val resolveShortNames: Boolean) : JetTreeVisitorVoid() {
private val resolveSession = file.getLazyResolveSession() private val resolutionFacade = file.getResolutionFacade()
private val resolveMap = LinkedHashMap<JetReferenceExpression, BindingContext>() private val resolveMap = LinkedHashMap<JetReferenceExpression, BindingContext>()
public val result: Map<JetReferenceExpression, BindingContext> = resolveMap public val result: Map<JetReferenceExpression, BindingContext> = resolveMap
@@ -71,27 +71,27 @@ object JetFileReferencesResolver {
if (resolveShortNames || userType.getQualifier() != null) { if (resolveShortNames || userType.getQualifier() != null) {
val referenceExpression = userType.getReferenceExpression() val referenceExpression = userType.getReferenceExpression()
if (referenceExpression != null) { if (referenceExpression != null) {
resolveMap[referenceExpression] = resolveSession.analyze(referenceExpression) resolveMap[referenceExpression] = resolutionFacade.analyze(referenceExpression)
} }
} }
} }
override fun visitQualifiedExpression(expression: JetQualifiedExpression) { override fun visitQualifiedExpression(expression: JetQualifiedExpression) {
val receiverExpression = expression.getReceiverExpression() val receiverExpression = expression.getReceiverExpression()
if (resolveQualifiers || resolveSession.analyze(expression)[BindingContext.QUALIFIER, receiverExpression] == null) { if (resolveQualifiers || resolutionFacade.analyze(expression)[BindingContext.QUALIFIER, receiverExpression] == null) {
receiverExpression.accept(this) receiverExpression.accept(this)
} }
val referenceExpression = expression.getSelectorExpression()?.referenceExpression() val referenceExpression = expression.getSelectorExpression()?.referenceExpression()
if (referenceExpression != null) { if (referenceExpression != null) {
resolveMap[referenceExpression] = resolveSession.analyze(referenceExpression) resolveMap[referenceExpression] = resolutionFacade.analyze(referenceExpression)
} }
expression.getSelectorExpression()?.accept(this) expression.getSelectorExpression()?.accept(this)
} }
override fun visitSimpleNameExpression(expression: JetSimpleNameExpression) { override fun visitSimpleNameExpression(expression: JetSimpleNameExpression) {
if (resolveShortNames) { if (resolveShortNames) {
resolveMap[expression] = resolveSession.analyze(expression) resolveMap[expression] = resolutionFacade.analyze(expression)
} }
} }
} }
@@ -26,7 +26,7 @@ import java.util.HashSet;
import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.PsiTreeUtil
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiDocumentManager
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession import org.jetbrains.jet.plugin.caches.resolve.getResolutionFacade
import org.jetbrains.jet.lang.resolve.DescriptorUtils import org.jetbrains.jet.lang.resolve.DescriptorUtils
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.analyzer.analyzeInContext import org.jetbrains.jet.analyzer.analyzeInContext
@@ -153,13 +153,13 @@ public object ShortenReferences {
val elementFilter: (PsiElement) -> FilterResult, val elementFilter: (PsiElement) -> FilterResult,
val resolveMap: Map<JetReferenceExpression, BindingContext>, val resolveMap: Map<JetReferenceExpression, BindingContext>,
val importInserter: ImportInserter) : JetVisitorVoid() { val importInserter: ImportInserter) : JetVisitorVoid() {
protected val resolveSession: ResolutionFacade protected val resolutionFacade: ResolutionFacade
get() = file.getLazyResolveSession() get() = file.getResolutionFacade()
protected val elementsToShorten: MutableSet<T> = LinkedHashSet() protected val elementsToShorten: MutableSet<T> = LinkedHashSet()
protected fun bindingContext(element: JetElement): BindingContext protected fun bindingContext(element: JetElement): BindingContext
= resolveMap[element] ?: resolveSession.analyze(element) = resolveMap[element] ?: resolutionFacade.analyze(element)
protected abstract fun getShortenedElement(element: T): JetElement? protected abstract fun getShortenedElement(element: T): JetElement?
@@ -193,7 +193,7 @@ public object ShortenReferences {
if (target == null) return false if (target == null) return false
val typeReference = PsiTreeUtil.getParentOfType(userType, javaClass<JetTypeReference>())!! val typeReference = PsiTreeUtil.getParentOfType(userType, javaClass<JetTypeReference>())!!
val scope = resolveSession.analyze(typeReference)[BindingContext.TYPE_RESOLUTION_SCOPE, typeReference]!! val scope = resolutionFacade.analyze(typeReference)[BindingContext.TYPE_RESOLUTION_SCOPE, typeReference]!!
val name = target.getName() val name = target.getName()
val targetByName = scope.getClassifier(name) val targetByName = scope.getClassifier(name)
if (targetByName == null) { if (targetByName == null) {
@@ -39,7 +39,7 @@ import org.jetbrains.jet.plugin.util.extensionsUtils.isExtensionCallable
public class KotlinIndicesHelper( public class KotlinIndicesHelper(
private val project: Project, private val project: Project,
private val resolveSession: ResolutionFacade, private val resolutionFacade: ResolutionFacade,
private val scope: GlobalSearchScope, private val scope: GlobalSearchScope,
private val moduleDescriptor: ModuleDescriptor, private val moduleDescriptor: ModuleDescriptor,
private val visibilityFilter: (DeclarationDescriptor) -> Boolean private val visibilityFilter: (DeclarationDescriptor) -> Boolean
@@ -73,7 +73,7 @@ public class KotlinIndicesHelper(
} }
public fun getTopLevelCallablesByName(name: String, context: JetExpression /*TODO: to be dropped*/): Collection<CallableDescriptor> { public fun getTopLevelCallablesByName(name: String, context: JetExpression /*TODO: to be dropped*/): Collection<CallableDescriptor> {
val jetScope = resolveSession.analyze(context).get(BindingContext.RESOLUTION_SCOPE, context) ?: return listOf() val jetScope = resolutionFacade.analyze(context).get(BindingContext.RESOLUTION_SCOPE, context) ?: return listOf()
val result = HashSet<CallableDescriptor>() val result = HashSet<CallableDescriptor>()
@@ -127,7 +127,7 @@ public class KotlinIndicesHelper(
val sourceNames = JetTopLevelFunctionsFqnNameIndex.getInstance().getAllKeys(project).stream() + JetTopLevelPropertiesFqnNameIndex.getInstance().getAllKeys(project).stream() val sourceNames = JetTopLevelFunctionsFqnNameIndex.getInstance().getAllKeys(project).stream() + JetTopLevelPropertiesFqnNameIndex.getInstance().getAllKeys(project).stream()
val allFqNames = sourceNames.map { FqName(it) } + JetFromJavaDescriptorHelper.getTopLevelCallableFqNames(project, scope, false).stream() val allFqNames = sourceNames.map { FqName(it) } + JetFromJavaDescriptorHelper.getTopLevelCallableFqNames(project, scope, false).stream()
val jetScope = resolveSession.analyze(context).get(BindingContext.RESOLUTION_SCOPE, context) ?: return listOf() val jetScope = resolutionFacade.analyze(context).get(BindingContext.RESOLUTION_SCOPE, context) ?: return listOf()
return allFqNames.filter { nameFilter(it.shortName().asString()) } return allFqNames.filter { nameFilter(it.shortName().asString()) }
.toSet() .toSet()
@@ -135,7 +135,7 @@ public class KotlinIndicesHelper(
} }
public fun getCallableExtensions(nameFilter: (String) -> Boolean, expression: JetSimpleNameExpression): Collection<CallableDescriptor> { public fun getCallableExtensions(nameFilter: (String) -> Boolean, expression: JetSimpleNameExpression): Collection<CallableDescriptor> {
val bindingContext = resolveSession.analyze(expression) val bindingContext = resolutionFacade.analyze(expression)
val dataFlowInfo = bindingContext.getDataFlowInfo(expression) val dataFlowInfo = bindingContext.getDataFlowInfo(expression)
val functionsIndex = JetTopLevelFunctionsFqnNameIndex.getInstance() val functionsIndex = JetTopLevelFunctionsFqnNameIndex.getInstance()
@@ -109,7 +109,7 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Refere
} }
} }
catch (e: ProcessCanceledException) { catch (e: ProcessCanceledException) {
// supposedly session can only be canceled from another thread // supposedly analysis can only be canceled from another thread
// do not log ProcessCanceledException as it is rethrown by IdeaLogger and code won't be copied // do not log ProcessCanceledException as it is rethrown by IdeaLogger and code won't be copied
LOG.error("ProcessCanceledException while analyzing references in ${file.getName()}. References can't be processed.") LOG.error("ProcessCanceledException while analyzing references in ${file.getName()}. References can't be processed.")
return listOf() return listOf()
@@ -31,11 +31,10 @@ import org.jetbrains.jet.plugin.caches.KotlinIndicesHelper
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
class AllClassesCompletion(val parameters: CompletionParameters, class AllClassesCompletion(val parameters: CompletionParameters,
val resolveSession: ResolutionFacade, val resolutionFacade: ResolutionFacade,
val moduleDescriptor: ModuleDescriptor, val moduleDescriptor: ModuleDescriptor,
val scope: GlobalSearchScope, val scope: GlobalSearchScope,
val prefixMatcher: PrefixMatcher, val prefixMatcher: PrefixMatcher,
@@ -45,7 +44,7 @@ class AllClassesCompletion(val parameters: CompletionParameters,
val builtIns = KotlinBuiltIns.getInstance().getNonPhysicalClasses().filter { kindFilter(it.getKind()) && prefixMatcher.prefixMatches(it.getName().asString()) } val builtIns = KotlinBuiltIns.getInstance().getNonPhysicalClasses().filter { kindFilter(it.getKind()) && prefixMatcher.prefixMatches(it.getName().asString()) }
result.addDescriptorElements(builtIns, suppressAutoInsertion = true) result.addDescriptorElements(builtIns, suppressAutoInsertion = true)
val helper = KotlinIndicesHelper(scope.getProject(), resolveSession, scope, moduleDescriptor, visibilityFilter) val helper = KotlinIndicesHelper(scope.getProject(), resolutionFacade, scope, moduleDescriptor, visibilityFilter)
result.addDescriptorElements(helper.getClassDescriptors({ prefixMatcher.prefixMatches(it) }, kindFilter), result.addDescriptorElements(helper.getClassDescriptors({ prefixMatcher.prefixMatches(it) }, kindFilter),
suppressAutoInsertion = true) suppressAutoInsertion = true)
@@ -51,9 +51,9 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess
protected val position: PsiElement = parameters.getPosition() protected val position: PsiElement = parameters.getPosition()
protected val jetReference: JetSimpleNameReference? = position.getParent()?.getReferences()?.filterIsInstance(javaClass<JetSimpleNameReference>())?.firstOrNull() protected val jetReference: JetSimpleNameReference? = position.getParent()?.getReferences()?.filterIsInstance(javaClass<JetSimpleNameReference>())?.firstOrNull()
private val file = position.getContainingFile() as JetFile private val file = position.getContainingFile() as JetFile
protected val resolveSession: ResolutionFacade = file.getLazyResolveSession() protected val resolutionFacade: ResolutionFacade = file.getResolutionFacade()
protected val moduleDescriptor: ModuleDescriptor = resolveSession.findModuleDescriptor(file) protected val moduleDescriptor: ModuleDescriptor = resolutionFacade.findModuleDescriptor(file)
protected val bindingContext: BindingContext? = jetReference?.let { resolveSession.analyze(it.expression) } protected val bindingContext: BindingContext? = jetReference?.let { resolutionFacade.analyze(it.expression) }
protected val inDescriptor: DeclarationDescriptor? = jetReference?.let { bindingContext!!.get(BindingContext.RESOLUTION_SCOPE, it.expression)?.getContainingDeclaration() } protected val inDescriptor: DeclarationDescriptor? = jetReference?.let { bindingContext!!.get(BindingContext.RESOLUTION_SCOPE, it.expression)?.getContainingDeclaration() }
// set prefix matcher here to override default one which relies on CompletionUtil.findReferencePrefix() // set prefix matcher here to override default one which relies on CompletionUtil.findReferencePrefix()
@@ -82,7 +82,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess
} }
} }
protected val collector: LookupElementsCollector = LookupElementsCollector(prefixMatcher, parameters, resolveSession, boldImmediateLookupElementFactory) protected val collector: LookupElementsCollector = LookupElementsCollector(prefixMatcher, parameters, resolutionFacade, boldImmediateLookupElementFactory)
protected val project: Project = position.getProject() protected val project: Project = position.getProject()
@@ -92,7 +92,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess
} }
protected val indicesHelper: KotlinIndicesHelper protected val indicesHelper: KotlinIndicesHelper
= KotlinIndicesHelper(project, resolveSession, searchScope, moduleDescriptor) { isVisibleDescriptor(it) } = KotlinIndicesHelper(project, resolutionFacade, searchScope, moduleDescriptor) { isVisibleDescriptor(it) }
protected fun isVisibleDescriptor(descriptor: DeclarationDescriptor): Boolean { protected fun isVisibleDescriptor(descriptor: DeclarationDescriptor): Boolean {
if (configuration.completeNonAccessibleDeclarations) return true if (configuration.completeNonAccessibleDeclarations) return true
@@ -141,7 +141,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess
protected fun addAllClasses(kindFilter: (ClassKind) -> Boolean) { protected fun addAllClasses(kindFilter: (ClassKind) -> Boolean) {
AllClassesCompletion( AllClassesCompletion(
parameters, resolveSession, moduleDescriptor, parameters, resolutionFacade, moduleDescriptor,
searchScope, prefixMatcher, kindFilter, { isVisibleDescriptor(it) } searchScope, prefixMatcher, kindFilter, { isVisibleDescriptor(it) }
).collect(collector) ).collect(collector)
} }
@@ -228,7 +228,7 @@ class SmartCompletionSession(configuration: CompletionSessionConfiguration, para
override fun doComplete() { override fun doComplete() {
if (jetReference != null) { if (jetReference != null) {
val completion = SmartCompletion(jetReference.expression, resolveSession, { isVisibleDescriptor(it) }, parameters.getOriginalFile() as JetFile, boldImmediateLookupElementFactory) val completion = SmartCompletion(jetReference.expression, resolutionFacade, { isVisibleDescriptor(it) }, parameters.getOriginalFile() as JetFile, boldImmediateLookupElementFactory)
val result = completion.execute() val result = completion.execute()
if (result != null) { if (result != null) {
collector.addElements(result.additionalItems) collector.addElements(result.additionalItems)
@@ -27,7 +27,7 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
*/ */
public class DeclarationDescriptorLookupObject( public class DeclarationDescriptorLookupObject(
public val descriptor: DeclarationDescriptor, public val descriptor: DeclarationDescriptor,
private val analyzer: ResolutionFacade, private val resolutionFacade: ResolutionFacade,
public val psiElement: PsiElement? public val psiElement: PsiElement?
) { ) {
override fun toString(): String { override fun toString(): String {
@@ -44,7 +44,7 @@ public class DeclarationDescriptorLookupObject(
val lookupObject = other as DeclarationDescriptorLookupObject val lookupObject = other as DeclarationDescriptorLookupObject
if (analyzer != lookupObject.analyzer) { if (resolutionFacade != lookupObject.resolutionFacade) {
LOG.warn("Descriptors from different resolve sessions") LOG.warn("Descriptors from different resolve sessions")
return false return false
} }
@@ -87,7 +87,7 @@ class PositionalArgumentExpectedInfo(type: JetType, name: String?, tail: Tail?,
= function.hashCode() = function.hashCode()
} }
class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: ResolutionFacade) { class ExpectedInfos(val bindingContext: BindingContext, val resolutionFacade: ResolutionFacade) {
public fun calculate(expressionWithType: JetExpression): Collection<ExpectedInfo>? { public fun calculate(expressionWithType: JetExpression): Collection<ExpectedInfo>? {
return calculateForArgument(expressionWithType) return calculateForArgument(expressionWithType)
?: calculateForFunctionLiteralArgument(expressionWithType) ?: calculateForFunctionLiteralArgument(expressionWithType)
@@ -174,7 +174,7 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: Reso
false).replaceCollectAllCandidates(true) false).replaceCollectAllCandidates(true)
val callResolver = InjectorForMacros( val callResolver = InjectorForMacros(
callElement.getProject(), callElement.getProject(),
resolveSession.findModuleDescriptor(callElement) resolutionFacade.findModuleDescriptor(callElement)
).getCallResolver() ).getCallResolver()
val results: OverloadResolutionResults<FunctionDescriptor> = callResolver.resolveFunctionCall(callResolutionContext) val results: OverloadResolutionResults<FunctionDescriptor> = callResolver.resolveFunctionCall(callResolutionContext)
@@ -295,14 +295,14 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: Reso
private fun calculateForInitializer(expressionWithType: JetExpression): Collection<ExpectedInfo>? { private fun calculateForInitializer(expressionWithType: JetExpression): Collection<ExpectedInfo>? {
val property = expressionWithType.getParent() as? JetProperty ?: return null val property = expressionWithType.getParent() as? JetProperty ?: return null
if (expressionWithType != property.getInitializer()) return null if (expressionWithType != property.getInitializer()) return null
val propertyDescriptor = resolveSession.resolveToDescriptor(property) as? VariableDescriptor ?: return null val propertyDescriptor = resolutionFacade.resolveToDescriptor(property) as? VariableDescriptor ?: return null
return listOf(ExpectedInfo(propertyDescriptor.getType(), propertyDescriptor.getName().asString(), null)) return listOf(ExpectedInfo(propertyDescriptor.getType(), propertyDescriptor.getName().asString(), null))
} }
private fun calculateForExpressionBody(expressionWithType: JetExpression): Collection<ExpectedInfo>? { private fun calculateForExpressionBody(expressionWithType: JetExpression): Collection<ExpectedInfo>? {
val declaration = expressionWithType.getParent() as? JetDeclarationWithBody ?: return null val declaration = expressionWithType.getParent() as? JetDeclarationWithBody ?: return null
if (expressionWithType != declaration.getBodyExpression() || declaration.hasBlockBody()) return null if (expressionWithType != declaration.getBodyExpression() || declaration.hasBlockBody()) return null
val descriptor = resolveSession.resolveToDescriptor(declaration) as? FunctionDescriptor ?: return null val descriptor = resolutionFacade.resolveToDescriptor(declaration) as? FunctionDescriptor ?: return null
return functionReturnValueExpectedInfo(descriptor).toList() return functionReturnValueExpectedInfo(descriptor).toList()
} }
@@ -38,12 +38,12 @@ import org.jetbrains.jet.lang.types.JetType
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
public open class LookupElementFactory protected() { public open class LookupElementFactory protected() {
public open fun createLookupElement(analyzer: ResolutionFacade, descriptor: DeclarationDescriptor): LookupElement { public open fun createLookupElement(resolutionFacade: ResolutionFacade, descriptor: DeclarationDescriptor): LookupElement {
val _descriptor = if (descriptor is CallableMemberDescriptor) val _descriptor = if (descriptor is CallableMemberDescriptor)
DescriptorUtils.unwrapFakeOverride(descriptor) DescriptorUtils.unwrapFakeOverride(descriptor)
else else
descriptor descriptor
return createLookupElement(analyzer, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor)) return createLookupElement(resolutionFacade, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor))
} }
public fun createLookupElementForJavaClass(psiClass: PsiClass): LookupElement { public fun createLookupElementForJavaClass(psiClass: PsiClass): LookupElement {
@@ -149,8 +149,8 @@ public open class LookupElementFactory protected() {
} }
public class BoldImmediateLookupElementFactory(private val receiverTypes: Collection<JetType>) : LookupElementFactory() { public class BoldImmediateLookupElementFactory(private val receiverTypes: Collection<JetType>) : LookupElementFactory() {
override fun createLookupElement(analyzer: ResolutionFacade, descriptor: DeclarationDescriptor): LookupElement { override fun createLookupElement(resolutionFacade: ResolutionFacade, descriptor: DeclarationDescriptor): LookupElement {
val element = super.createLookupElement(analyzer, descriptor) val element = super.createLookupElement(resolutionFacade, descriptor)
if (descriptor !is CallableMemberDescriptor) return element if (descriptor !is CallableMemberDescriptor) return element
val receiverParameter = descriptor.getExtensionReceiverParameter() val receiverParameter = descriptor.getExtensionReceiverParameter()
@@ -34,7 +34,7 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
class LookupElementsCollector( class LookupElementsCollector(
private val prefixMatcher: PrefixMatcher, private val prefixMatcher: PrefixMatcher,
private val completionParameters: CompletionParameters, private val completionParameters: CompletionParameters,
private val resolveSession: ResolutionFacade, private val resolutionFacade: ResolutionFacade,
private val boldImmediateLookupElementFactory: LookupElementFactory private val boldImmediateLookupElementFactory: LookupElementFactory
) { ) {
private val elements = ArrayList<LookupElement>() private val elements = ArrayList<LookupElement>()
@@ -60,7 +60,7 @@ class LookupElementsCollector(
public fun addDescriptorElements(descriptor: DeclarationDescriptor, suppressAutoInsertion: Boolean) { public fun addDescriptorElements(descriptor: DeclarationDescriptor, suppressAutoInsertion: Boolean) {
run { run {
val lookupElement = boldImmediateLookupElementFactory.createLookupElement(resolveSession, descriptor) val lookupElement = boldImmediateLookupElementFactory.createLookupElement(resolutionFacade, descriptor)
if (suppressAutoInsertion) { if (suppressAutoInsertion) {
addElementWithAutoInsertionSuppressed(lookupElement) addElementWithAutoInsertionSuppressed(lookupElement)
} }
@@ -77,7 +77,7 @@ class LookupElementsCollector(
if (KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(parameterType)) { if (KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(parameterType)) {
val parameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(parameterType).size() val parameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(parameterType).size()
if (parameterCount > 1) { if (parameterCount > 1) {
val lookupElement = boldImmediateLookupElementFactory.createLookupElement(resolveSession, descriptor) val lookupElement = boldImmediateLookupElementFactory.createLookupElement(resolutionFacade, descriptor)
addElement(object : LookupElementDecorator<LookupElement>(lookupElement) { addElement(object : LookupElementDecorator<LookupElement>(lookupElement) {
override fun renderElement(presentation: LookupElementPresentation) { override fun renderElement(presentation: LookupElementPresentation) {
super.renderElement(presentation) super.renderElement(presentation)
@@ -18,10 +18,7 @@ package org.jetbrains.jet.plugin.completion
import com.intellij.codeInsight.completion.* import com.intellij.codeInsight.completion.*
import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.ProcessCanceledException
import com.intellij.patterns.ElementPattern
import com.intellij.patterns.PlatformPatterns import com.intellij.patterns.PlatformPatterns
import com.intellij.psi.PsiElement
import com.intellij.util.ProcessingContext
import org.jetbrains.jet.lang.psi.JetFile import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.psi.JetPackageDirective import org.jetbrains.jet.lang.psi.JetPackageDirective
import org.jetbrains.jet.plugin.caches.resolve.* import org.jetbrains.jet.plugin.caches.resolve.*
@@ -50,12 +47,12 @@ object PackageDirectiveCompletion {
val prefixMatcher = PlainPrefixMatcher(name.substring(0, prefixLength)) val prefixMatcher = PlainPrefixMatcher(name.substring(0, prefixLength))
val result = result.withPrefixMatcher(prefixMatcher) val result = result.withPrefixMatcher(prefixMatcher)
val resolveSession = ref.expression.getLazyResolveSession() val resolutionFacade = ref.expression.getResolutionFacade()
val bindingContext = resolveSession.analyze(ref.expression) val bindingContext = resolutionFacade.analyze(ref.expression)
val variants = ReferenceVariantsHelper(bindingContext, { true }).getPackageReferenceVariants(ref.expression, prefixMatcher.asNameFilter()) val variants = ReferenceVariantsHelper(bindingContext, { true }).getPackageReferenceVariants(ref.expression, prefixMatcher.asNameFilter())
for (variant in variants) { for (variant in variants) {
val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(resolveSession, variant) val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(resolutionFacade, variant)
if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) { if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) {
result.addElement(lookupElement) result.addElement(lookupElement)
} }
@@ -21,9 +21,7 @@ import com.intellij.codeInsight.completion.InsertionContext
import com.intellij.codeInsight.template.TemplateManager import com.intellij.codeInsight.template.TemplateManager
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.codeInsight.template.Template import com.intellij.codeInsight.template.Template
import org.jetbrains.jet.plugin.refactoring.JetNameValidator
import org.jetbrains.jet.plugin.refactoring.JetNameSuggester import org.jetbrains.jet.plugin.refactoring.JetNameSuggester
import org.jetbrains.jet.renderer.DescriptorRenderer
import com.intellij.codeInsight.template.Expression import com.intellij.codeInsight.template.Expression
import com.intellij.codeInsight.template.ExpressionContext import com.intellij.codeInsight.template.ExpressionContext
import com.intellij.codeInsight.template.TextResult import com.intellij.codeInsight.template.TextResult
@@ -38,7 +36,7 @@ import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.jet.lang.psi.JetExpression import org.jetbrains.jet.lang.psi.JetExpression
import org.jetbrains.jet.plugin.completion.ExpectedInfos import org.jetbrains.jet.plugin.completion.ExpectedInfos
import org.jetbrains.jet.lang.psi.JetFile import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession import org.jetbrains.jet.plugin.caches.resolve.getResolutionFacade
import org.jetbrains.jet.plugin.util.application.runWriteAction import org.jetbrains.jet.plugin.util.application.runWriteAction
import org.jetbrains.jet.plugin.refactoring.EmptyValidator import org.jetbrains.jet.plugin.refactoring.EmptyValidator
import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers
@@ -85,9 +83,9 @@ private fun needExplicitParameterTypes(context: InsertionContext, placeholderRan
val expression = PsiTreeUtil.findElementOfClassAtRange(file, placeholderRange.getStartOffset(), placeholderRange.getEndOffset(), javaClass<JetExpression>()) val expression = PsiTreeUtil.findElementOfClassAtRange(file, placeholderRange.getStartOffset(), placeholderRange.getEndOffset(), javaClass<JetExpression>())
if (expression == null) return false if (expression == null) return false
val resolveSession = file.getLazyResolveSession() val resolutionFacade = file.getResolutionFacade()
val bindingContext = resolveSession.analyze(expression) val bindingContext = resolutionFacade.analyze(expression)
val expectedInfos = ExpectedInfos(bindingContext, resolveSession).calculate(expression) ?: return false val expectedInfos = ExpectedInfos(bindingContext, resolutionFacade).calculate(expression) ?: return false
val functionTypes = expectedInfos.map { it.type }.filter { KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(it) }.toSet() val functionTypes = expectedInfos.map { it.type }.filter { KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(it) }.toSet()
if (functionTypes.size <= 1) return false if (functionTypes.size <= 1) return false
@@ -36,11 +36,11 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor
class SmartCompletion(val expression: JetSimpleNameExpression, class SmartCompletion(val expression: JetSimpleNameExpression,
val resolveSession: ResolutionFacade, val resolutionFacade: ResolutionFacade,
val visibilityFilter: (DeclarationDescriptor) -> Boolean, val visibilityFilter: (DeclarationDescriptor) -> Boolean,
val originalFile: JetFile, val originalFile: JetFile,
val boldImmediateLookupElementFactory: LookupElementFactory) { val boldImmediateLookupElementFactory: LookupElementFactory) {
private val bindingContext = resolveSession.analyze(expression) private val bindingContext = resolutionFacade.analyze(expression)
private val project = expression.getProject() private val project = expression.getProject()
public data class Result(val declarationFilter: ((DeclarationDescriptor) -> Collection<LookupElement>)?, public data class Result(val declarationFilter: ((DeclarationDescriptor) -> Collection<LookupElement>)?,
@@ -117,7 +117,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
else -> ExpectedInfoClassification.NOT_MATCHES else -> ExpectedInfoClassification.NOT_MATCHES
} }
} }
result.addLookupElements(expectedInfos, classifier, { boldImmediateLookupElementFactory.createLookupElement(descriptor, resolveSession, bindingContext) }) result.addLookupElements(expectedInfos, classifier, { boldImmediateLookupElementFactory.createLookupElement(descriptor, resolutionFacade, bindingContext) })
if (receiver == null) { if (receiver == null) {
toFunctionReferenceLookupElement(descriptor, functionExpectedInfos)?.let { result.add(it) } toFunctionReferenceLookupElement(descriptor, functionExpectedInfos)?.let { result.add(it) }
@@ -128,9 +128,9 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
val additionalItems = ArrayList<LookupElement>() val additionalItems = ArrayList<LookupElement>()
if (receiver == null) { if (receiver == null) {
TypeInstantiationItems(resolveSession, bindingContext, visibilityFilter).addToCollection(additionalItems, expectedInfos) TypeInstantiationItems(resolutionFacade, bindingContext, visibilityFilter).addToCollection(additionalItems, expectedInfos)
StaticMembers(bindingContext, resolveSession).addToCollection(additionalItems, expectedInfos, expression, itemsToSkip) StaticMembers(bindingContext, resolutionFacade).addToCollection(additionalItems, expectedInfos, expression, itemsToSkip)
ThisItems(bindingContext).addToCollection(additionalItems, expressionWithType, expectedInfos) ThisItems(bindingContext).addToCollection(additionalItems, expressionWithType, expectedInfos)
@@ -157,7 +157,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
} }
} }
return ExpectedInfos(bindingContext, resolveSession).calculate(expression) return ExpectedInfos(bindingContext, resolutionFacade).calculate(expression)
} }
private fun implicitlyTypedDeclarationFromInitializer(expression: JetExpression): JetDeclaration? { private fun implicitlyTypedDeclarationFromInitializer(expression: JetExpression): JetDeclaration? {
@@ -175,7 +175,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
is JetProperty -> { is JetProperty -> {
//TODO: this can be filtered out by ordinary completion //TODO: this can be filtered out by ordinary completion
if (expression == parent.getInitializer()) { if (expression == parent.getInitializer()) {
return resolveSession.resolveToDescriptor(parent).toSet() return resolutionFacade.resolveToDescriptor(parent).toSet()
} }
} }
@@ -185,7 +185,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
if (operationToken == JetTokens.EQ || operationToken == JetTokens.EQEQ || operationToken == JetTokens.EXCLEQ) { if (operationToken == JetTokens.EQ || operationToken == JetTokens.EQEQ || operationToken == JetTokens.EXCLEQ) {
val left = parent.getLeft() val left = parent.getLeft()
if (left is JetReferenceExpression) { if (left is JetReferenceExpression) {
return resolveSession.analyze(left)[BindingContext.REFERENCE_TARGET, left].toSet() return resolutionFacade.analyze(left)[BindingContext.REFERENCE_TARGET, left].toSet()
} }
} }
} }
@@ -237,7 +237,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
val matchedExpectedInfos = functionExpectedInfos.filter { functionType.isSubtypeOf(it.type) } val matchedExpectedInfos = functionExpectedInfos.filter { functionType.isSubtypeOf(it.type) }
if (matchedExpectedInfos.isEmpty()) return null if (matchedExpectedInfos.isEmpty()) return null
var lookupElement = boldImmediateLookupElementFactory.createLookupElement(descriptor, resolveSession, bindingContext) var lookupElement = boldImmediateLookupElementFactory.createLookupElement(descriptor, resolutionFacade, bindingContext)
val text = "::" + (if (descriptor is ConstructorDescriptor) descriptor.getContainingDeclaration().getName() else descriptor.getName()) val text = "::" + (if (descriptor is ConstructorDescriptor) descriptor.getContainingDeclaration().getName() else descriptor.getName())
lookupElement = object: LookupElementDecorator<LookupElement>(lookupElement) { lookupElement = object: LookupElementDecorator<LookupElement>(lookupElement) {
override fun getLookupString() = text override fun getLookupString() = text
@@ -296,7 +296,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
if (jetType.isError()) return null if (jetType.isError()) return null
val classifier = jetType.getConstructor().getDeclarationDescriptor() ?: return null val classifier = jetType.getConstructor().getDeclarationDescriptor() ?: return null
val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(classifier, resolveSession, bindingContext) val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(classifier, resolutionFacade, bindingContext)
val lookupString = lookupElement.getLookupString() val lookupString = lookupElement.getLookupString()
val typeArgs = jetType.getArguments() val typeArgs = jetType.getArguments()
@@ -36,7 +36,7 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
import org.jetbrains.jet.plugin.completion.LookupElementFactory import org.jetbrains.jet.plugin.completion.LookupElementFactory
// adds java static members, enum members and members from class object // adds java static members, enum members and members from class object
class StaticMembers(val bindingContext: BindingContext, val resolveSession: ResolutionFacade) { class StaticMembers(val bindingContext: BindingContext, val resolutionFacade: ResolutionFacade) {
public fun addToCollection(collection: MutableCollection<LookupElement>, public fun addToCollection(collection: MutableCollection<LookupElement>,
expectedInfos: Collection<ExpectedInfo>, expectedInfos: Collection<ExpectedInfo>,
context: JetExpression, context: JetExpression,
@@ -106,7 +106,7 @@ class StaticMembers(val bindingContext: BindingContext, val resolveSession: Reso
} }
private fun createLookupElement(memberDescriptor: DeclarationDescriptor, classDescriptor: ClassDescriptor): LookupElement { private fun createLookupElement(memberDescriptor: DeclarationDescriptor, classDescriptor: ClassDescriptor): LookupElement {
val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(memberDescriptor, resolveSession, bindingContext) val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(memberDescriptor, resolutionFacade, bindingContext)
val qualifierPresentation = classDescriptor.getName().asString() val qualifierPresentation = classDescriptor.getName().asString()
val qualifierText = qualifiedNameForSourceCode(classDescriptor) val qualifierText = qualifiedNameForSourceCode(classDescriptor)
@@ -40,7 +40,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
class TypeInstantiationItems(val resolveSession: ResolutionFacade, val bindingContext: BindingContext, val visibilityFilter: (DeclarationDescriptor) -> Boolean) { class TypeInstantiationItems(val resolutionFacade: ResolutionFacade, val bindingContext: BindingContext, val visibilityFilter: (DeclarationDescriptor) -> Boolean) {
public fun addToCollection(collection: MutableCollection<LookupElement>, expectedInfos: Collection<ExpectedInfo>) { public fun addToCollection(collection: MutableCollection<LookupElement>, expectedInfos: Collection<ExpectedInfo>) {
val expectedInfosGrouped: Map<JetType, List<ExpectedInfo>> = expectedInfos.groupBy { it.type.makeNotNullable() } val expectedInfosGrouped: Map<JetType, List<ExpectedInfo>> = expectedInfos.groupBy { it.type.makeNotNullable() }
for ((jetType, infos) in expectedInfosGrouped) { for ((jetType, infos) in expectedInfosGrouped) {
@@ -67,7 +67,7 @@ class TypeInstantiationItems(val resolveSession: ResolutionFacade, val bindingCo
} }
if (allConstructors.isNotEmpty() && visibleConstructors.isEmpty()) return if (allConstructors.isNotEmpty() && visibleConstructors.isEmpty()) return
var lookupElement = LookupElementFactory.DEFAULT.createLookupElement(classifier, resolveSession, bindingContext) var lookupElement = LookupElementFactory.DEFAULT.createLookupElement(classifier, resolutionFacade, bindingContext)
var lookupString = lookupElement.getLookupString() var lookupString = lookupElement.getLookupString()
var allLookupStrings = setOf(lookupString) var allLookupStrings = setOf(lookupString)
@@ -164,7 +164,7 @@ class TypeInstantiationItems(val resolveSession: ResolutionFacade, val bindingCo
val samConstructor = scope.getFunctions(`class`.getName()) val samConstructor = scope.getFunctions(`class`.getName())
.filterIsInstance(javaClass<SamConstructorDescriptor>()) .filterIsInstance(javaClass<SamConstructorDescriptor>())
.singleOrNull() ?: return .singleOrNull() ?: return
val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(samConstructor, resolveSession, bindingContext) val lookupElement = LookupElementFactory.DEFAULT.createLookupElement(samConstructor, resolutionFacade, bindingContext)
.assignSmartCompletionPriority(SmartCompletionItemPriority.INSTANTIATION) .assignSmartCompletionPriority(SmartCompletionItemPriority.INSTANTIATION)
.addTail(tail) .addTail(tail)
collection.add(lookupElement) collection.add(lookupElement)
@@ -188,10 +188,10 @@ fun functionType(function: FunctionDescriptor): JetType? {
fun LookupElementFactory.createLookupElement( fun LookupElementFactory.createLookupElement(
descriptor: DeclarationDescriptor, descriptor: DeclarationDescriptor,
resolveSession: ResolutionFacade, resolutionFacade: ResolutionFacade,
bindingContext: BindingContext bindingContext: BindingContext
): LookupElement { ): LookupElement {
var element = createLookupElement(resolveSession, descriptor) var element = createLookupElement(resolutionFacade, descriptor)
if (descriptor is FunctionDescriptor && descriptor.getValueParameters().isNotEmpty()) { if (descriptor is FunctionDescriptor && descriptor.getValueParameters().isNotEmpty()) {
element = element.keepOldArgumentListOnTab() element = element.keepOldArgumentListOnTab()
@@ -216,7 +216,7 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith
JetValueArgumentList argumentList = (JetValueArgumentList) parameterOwner; JetValueArgumentList argumentList = (JetValueArgumentList) parameterOwner;
FunctionDescriptor functionDescriptor = itemToShow.first; FunctionDescriptor functionDescriptor = itemToShow.first;
ResolutionFacade resolveSession = itemToShow.second; ResolutionFacade resolutionFacade = itemToShow.second;
List<ValueParameterDescriptor> valueParameters = functionDescriptor.getValueParameters(); List<ValueParameterDescriptor> valueParameters = functionDescriptor.getValueParameters();
List<JetValueArgument> valueArguments = argumentList.getArguments(); List<JetValueArgument> valueArguments = argumentList.getArguments();
@@ -239,7 +239,7 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
PsiElement owner = context.getParameterOwner(); PsiElement owner = context.getParameterOwner();
BindingContext bindingContext = resolveSession.analyze((JetElement) owner); BindingContext bindingContext = resolutionFacade.analyze((JetElement) owner);
for (int i = 0; i < valueParameters.size(); ++i) { for (int i = 0; i < valueParameters.size(); ++i) {
if (i != 0) { if (i != 0) {
@@ -382,8 +382,8 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith
return null; return null;
} }
ResolutionFacade resolveSession = ResolvePackage.getLazyResolveSession(callNameExpression.getContainingJetFile()); ResolutionFacade resolutionFacade = ResolvePackage.getResolutionFacade(callNameExpression.getContainingJetFile());
BindingContext bindingContext = resolveSession.analyze(callNameExpression); BindingContext bindingContext = resolutionFacade.analyze(callNameExpression);
JetScope scope = bindingContext.get(BindingContext.RESOLUTION_SCOPE, callNameExpression); JetScope scope = bindingContext.get(BindingContext.RESOLUTION_SCOPE, callNameExpression);
final DeclarationDescriptor placeDescriptor; final DeclarationDescriptor placeDescriptor;
@@ -409,18 +409,19 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith
} }
}; };
Collection<DeclarationDescriptor> variants = new ReferenceVariantsHelper(bindingContext, visibilityFilter).getReferenceVariants( Collection<DeclarationDescriptor> variants = new ReferenceVariantsHelper(bindingContext, visibilityFilter).getReferenceVariants(
callNameExpression, new DescriptorKindFilter(DescriptorKindFilter.FUNCTIONS_MASK | DescriptorKindFilter.CLASSIFIERS_MASK, Collections.<DescriptorKindExclude>emptyList()), nameFilter); callNameExpression, new DescriptorKindFilter(DescriptorKindFilter.FUNCTIONS_MASK | DescriptorKindFilter.CLASSIFIERS_MASK,
Collections.<DescriptorKindExclude>emptyList()), nameFilter);
Collection<Pair<? extends DeclarationDescriptor, ResolutionFacade>> itemsToShow = new ArrayList<Pair<? extends DeclarationDescriptor, ResolutionFacade>>(); Collection<Pair<? extends DeclarationDescriptor, ResolutionFacade>> itemsToShow = new ArrayList<Pair<? extends DeclarationDescriptor, ResolutionFacade>>();
for (DeclarationDescriptor variant : variants) { for (DeclarationDescriptor variant : variants) {
if (variant instanceof FunctionDescriptor) { if (variant instanceof FunctionDescriptor) {
//todo: renamed functions? //todo: renamed functions?
itemsToShow.add(Pair.create((FunctionDescriptor) variant, resolveSession)); itemsToShow.add(Pair.create((FunctionDescriptor) variant, resolutionFacade));
} }
else if (variant instanceof ClassDescriptor) { else if (variant instanceof ClassDescriptor) {
//todo: renamed classes? //todo: renamed classes?
for (ConstructorDescriptor constructorDescriptor : ((ClassDescriptor) variant).getConstructors()) { for (ConstructorDescriptor constructorDescriptor : ((ClassDescriptor) variant).getConstructors()) {
itemsToShow.add(Pair.create(constructorDescriptor, resolveSession)); itemsToShow.add(Pair.create(constructorDescriptor, resolutionFacade));
} }
} }
} }
@@ -116,11 +116,11 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
} }
if (referenceName.isEmpty()) return listOf() if (referenceName.isEmpty()) return listOf()
val resolveSession = element.getLazyResolveSession() val resolutionFacade = element.getResolutionFacade()
val searchScope = file.getResolveScope() val searchScope = file.getResolveScope()
val bindingContext = resolveSession.analyze(element) val bindingContext = resolutionFacade.analyze(element)
val diagnostics = bindingContext.getDiagnostics().forElement(element) val diagnostics = bindingContext.getDiagnostics().forElement(element)
if (!diagnostics.any { it.getFactory() in ERRORS }) return listOf() if (!diagnostics.any { it.getFactory() in ERRORS }) return listOf()
@@ -138,8 +138,8 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
val result = ArrayList<PrioritizedFqName>() val result = ArrayList<PrioritizedFqName>()
val moduleDescriptor = resolveSession.findModuleDescriptor(element) val moduleDescriptor = resolutionFacade.findModuleDescriptor(element)
val indicesHelper = KotlinIndicesHelper(file.getProject(), resolveSession, searchScope, moduleDescriptor, ::isVisible) val indicesHelper = KotlinIndicesHelper(file.getProject(), resolutionFacade, searchScope, moduleDescriptor, ::isVisible)
if (!element.isImportDirectiveExpression() && !JetPsiUtil.isSelectorInQualified(element)) { if (!element.isImportDirectiveExpression() && !JetPsiUtil.isSelectorInQualified(element)) {
result.addAll(getClassNames(referenceName, file, searchScope)) result.addAll(getClassNames(referenceName, file, searchScope))
@@ -261,12 +261,12 @@ public class KotlinInlineValHandler extends InlineActionHandler {
JetFile containingFile = inlinedExpressions.get(0).getContainingJetFile(); JetFile containingFile = inlinedExpressions.get(0).getContainingJetFile();
List<JetFunctionLiteralExpression> functionsToAddParameters = Lists.newArrayList(); List<JetFunctionLiteralExpression> functionsToAddParameters = Lists.newArrayList();
ResolutionFacade resolveSessionForBodies = ResolvePackage.getLazyResolveSession(containingFile); ResolutionFacade resolutionFacade = ResolvePackage.getResolutionFacade(containingFile);
for (JetExpression inlinedExpression : inlinedExpressions) { for (JetExpression inlinedExpression : inlinedExpressions) {
JetFunctionLiteralExpression functionLiteralExpression = getFunctionLiteralExpression(inlinedExpression); JetFunctionLiteralExpression functionLiteralExpression = getFunctionLiteralExpression(inlinedExpression);
assert functionLiteralExpression != null : "can't find function literal expression for " + inlinedExpression.getText(); assert functionLiteralExpression != null : "can't find function literal expression for " + inlinedExpression.getText();
if (needToAddParameterTypes(functionLiteralExpression, resolveSessionForBodies)) { if (needToAddParameterTypes(functionLiteralExpression, resolutionFacade)) {
functionsToAddParameters.add(functionLiteralExpression); functionsToAddParameters.add(functionLiteralExpression);
} }
} }
@@ -301,10 +301,10 @@ public class KotlinInlineValHandler extends InlineActionHandler {
private static boolean needToAddParameterTypes( private static boolean needToAddParameterTypes(
@NotNull JetFunctionLiteralExpression functionLiteralExpression, @NotNull JetFunctionLiteralExpression functionLiteralExpression,
@NotNull ResolutionFacade resolveSessionForBodies @NotNull ResolutionFacade resolutionFacade
) { ) {
JetFunctionLiteral functionLiteral = functionLiteralExpression.getFunctionLiteral(); JetFunctionLiteral functionLiteral = functionLiteralExpression.getFunctionLiteral();
BindingContext context = resolveSessionForBodies.analyze(functionLiteralExpression); BindingContext context = resolutionFacade.analyze(functionLiteralExpression);
for (Diagnostic diagnostic : context.getDiagnostics()) { for (Diagnostic diagnostic : context.getDiagnostics()) {
DiagnosticFactory<?> factory = diagnostic.getFactory(); DiagnosticFactory<?> factory = diagnostic.getFactory();
PsiElement element = diagnostic.getPsiElement(); PsiElement element = diagnostic.getPsiElement();
@@ -322,9 +322,9 @@ public class KotlinInlineValHandler extends InlineActionHandler {
JetFile containingFile = inlinedExpressions.get(0).getContainingJetFile(); JetFile containingFile = inlinedExpressions.get(0).getContainingJetFile();
List<JetCallExpression> callsToAddArguments = Lists.newArrayList(); List<JetCallExpression> callsToAddArguments = Lists.newArrayList();
ResolutionFacade resolveSessionForBodies = ResolvePackage.getLazyResolveSession(containingFile); ResolutionFacade resolutionFacade = ResolvePackage.getResolutionFacade(containingFile);
for (JetExpression inlinedExpression : inlinedExpressions) { for (JetExpression inlinedExpression : inlinedExpressions) {
BindingContext context = resolveSessionForBodies.analyze(inlinedExpression); BindingContext context = resolutionFacade.analyze(inlinedExpression);
Call call = CallUtilPackage.getCallWithAssert(inlinedExpression, context); Call call = CallUtilPackage.getCallWithAssert(inlinedExpression, context);
JetElement callElement = call.getCallElement(); JetElement callElement = call.getCallElement();
@@ -84,13 +84,13 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
if (!(psiFile instanceof JetFile && ProjectRootsUtil.isInProjectOrLibSource(psiFile))) return null; if (!(psiFile instanceof JetFile && ProjectRootsUtil.isInProjectOrLibSource(psiFile))) return null;
JetFile jetFile = (JetFile) psiFile; JetFile jetFile = (JetFile) psiFile;
final ResolutionFacade session = ResolvePackage.getLazyResolveSession(jetFile); final ResolutionFacade resolutionFacade = ResolvePackage.getResolutionFacade(jetFile);
MainFunctionDetector mainFunctionDetector = new MainFunctionDetector( MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(
new NotNullFunction<JetNamedFunction, FunctionDescriptor>() { new NotNullFunction<JetNamedFunction, FunctionDescriptor>() {
@NotNull @NotNull
@Override @Override
public FunctionDescriptor fun(JetNamedFunction function) { public FunctionDescriptor fun(JetNamedFunction function) {
return (FunctionDescriptor) session.resolveToDescriptor(function); return (FunctionDescriptor) resolutionFacade.resolveToDescriptor(function);
} }
}); });