DeprecatedSymbolUsageFix preserves comments

This commit is contained in:
Valentin Kipyatkov
2015-05-26 14:14:20 +03:00
parent fefa12b0a9
commit d3403dee1a
17 changed files with 342 additions and 73 deletions
@@ -333,6 +333,8 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder {
// if when entry has block, spacing after arrow should be set by lbrace rule
aroundInside(ARROW, WHEN_ENTRY).spaceIf(jetSettings.SPACE_AROUND_WHEN_ARROW)
after(EOL_COMMENT).lineBreakInCode()
}
}
}
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.core.CommentSaver
import org.jetbrains.kotlin.idea.core.OptionalParametersHelper
import org.jetbrains.kotlin.idea.core.asExpression
import org.jetbrains.kotlin.idea.core.refactoring.JetNameSuggester
@@ -42,17 +43,13 @@ import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.renderName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfo
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses
import org.jetbrains.kotlin.resolve.calls.model.*
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
@@ -62,7 +59,8 @@ import org.jetbrains.kotlin.resolve.scopes.receivers.ThisReceiver
import org.jetbrains.kotlin.types.ErrorUtils
import org.jetbrains.kotlin.types.JetType
import org.jetbrains.kotlin.utils.addIfNotNull
import java.util.*
import java.util.ArrayList
import java.util.LinkedHashSet
//TODO: replacement of class usages
//TODO: different replacements for property accessors
@@ -136,6 +134,8 @@ public abstract class DeprecatedSymbolUsageFixBase(
val qualifiedExpression = callExpression.getParent() as? JetQualifiedExpression
val expressionToBeReplaced = qualifiedExpression ?: callExpression
val commentSaver = CommentSaver(expressionToBeReplaced)
var receiver = element.getReceiverExpression()?.marked(USER_CODE_KEY)
var receiverType = if (receiver != null) bindingContext.getType(receiver) else null
@@ -225,6 +225,12 @@ public abstract class DeprecatedSymbolUsageFixBase(
result = postProcessInsertedExpression(result, wrapper.addedStatements)
val resultRange = if (wrapper.addedStatements.isEmpty())
PsiChildRange.singleElement(result)
else
PsiChildRange(wrapper.addedStatements.first(), result)
commentSaver.restoreComments(resultRange)
return result
}