Minor code improvements

This commit is contained in:
Valentin Kipyatkov
2015-01-26 21:05:54 +03:00
parent 22d805aede
commit f62391ca1d
@@ -151,15 +151,15 @@ public object ShortenReferences {
private abstract class ShorteningVisitor<T : JetElement>( private abstract class ShorteningVisitor<T : JetElement>(
val file: JetFile, val file: JetFile,
val elementFilter: (PsiElement) -> FilterResult, val elementFilter: (PsiElement) -> FilterResult,
val resolveMap: Map<JetReferenceExpression, BindingContext>, val preResolveMap: Map<JetReferenceExpression, BindingContext>,
val importInserter: ImportInserter) : JetVisitorVoid() { val importInserter: ImportInserter
protected val resolutionFacade: ResolutionFacade ) : JetVisitorVoid() {
get() = file.getResolutionFacade() protected val resolutionFacade: ResolutionFacade = 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] ?: resolutionFacade.analyze(element) = preResolveMap[element] ?: resolutionFacade.analyze(element)
protected abstract fun getShortenedElement(element: T): JetElement? protected abstract fun getShortenedElement(element: T): JetElement?
@@ -179,18 +179,16 @@ public object ShortenReferences {
private class ShortenTypesVisitor( private class ShortenTypesVisitor(
file: JetFile, file: JetFile,
elementFilter: (PsiElement) -> FilterResult, elementFilter: (PsiElement) -> FilterResult,
resolveMap: Map<JetReferenceExpression, BindingContext>, preResolveMap: Map<JetReferenceExpression, BindingContext>,
importInserter: ImportInserter importInserter: ImportInserter
) : ShorteningVisitor<JetUserType>(file, elementFilter, resolveMap, importInserter) { ) : ShorteningVisitor<JetUserType>(file, elementFilter, preResolveMap, importInserter) {
private fun canShortenType(userType: JetUserType): Boolean { private fun canShortenType(userType: JetUserType): Boolean {
if (userType.getQualifier() == null) return false if (userType.getQualifier() == null) return false
val referenceExpression = userType.getReferenceExpression() val referenceExpression = userType.getReferenceExpression() ?: return false
if (referenceExpression == null) return false
val target = bindingContext(referenceExpression)[BindingContext.REFERENCE_TARGET, referenceExpression]?.let { desc -> val target = bindingContext(referenceExpression)[BindingContext.REFERENCE_TARGET, referenceExpression]?.let { desc ->
if (desc is ConstructorDescriptor) desc.getContainingDeclaration() else desc if (desc is ConstructorDescriptor) desc.getContainingDeclaration() else desc
} } ?: return false
if (target == null) return false
val typeReference = userType.getStrictParentOfType<JetTypeReference>()!! val typeReference = userType.getStrictParentOfType<JetTypeReference>()!!
val scope = resolutionFacade.analyze(typeReference)[BindingContext.TYPE_RESOLUTION_SCOPE, typeReference]!! val scope = resolutionFacade.analyze(typeReference)[BindingContext.TYPE_RESOLUTION_SCOPE, typeReference]!!
@@ -237,9 +235,9 @@ public object ShortenReferences {
private class ShortenQualifiedExpressionsVisitor( private class ShortenQualifiedExpressionsVisitor(
file: JetFile, file: JetFile,
elementFilter: (PsiElement) -> FilterResult, elementFilter: (PsiElement) -> FilterResult,
resolveMap: Map<JetReferenceExpression, BindingContext>, preResolveMap: Map<JetReferenceExpression, BindingContext>,
importInserter: ImportInserter importInserter: ImportInserter
) : ShorteningVisitor<JetQualifiedExpression>(file, elementFilter, resolveMap, importInserter) { ) : ShorteningVisitor<JetQualifiedExpression>(file, elementFilter, preResolveMap, importInserter) {
private fun canShorten(qualifiedExpression: JetDotQualifiedExpression): Boolean { private fun canShorten(qualifiedExpression: JetDotQualifiedExpression): Boolean {
val context = bindingContext(qualifiedExpression) val context = bindingContext(qualifiedExpression)