Cleanup: smart casts of safe call receiver applied (do NOT cherry-pick to 1.0.X)

This commit is contained in:
Mikhail Glukhikh
2016-07-22 16:37:34 +03:00
parent 26c8bc87fd
commit 692623cb55
9 changed files with 10 additions and 10 deletions
@@ -31,7 +31,7 @@ object ScriptNameUtil {
.map { if (it.startsWith('.')) it else ".$it" } .map { if (it.startsWith('.')) it else ".$it" }
.firstOrNull { fileName.endsWith(it) } .firstOrNull { fileName.endsWith(it) }
?.let { fileName.length - it.length } ?.let { fileName.length - it.length }
?: fileName.lastIndexOf('.')?.let { if (it < 0) fileName.length else it } ?: fileName.lastIndexOf('.').let { if (it < 0) fileName.length else it }
?: fileName.length ?: fileName.length
return fileName return fileName
.substring(nameStart, nameEnd) .substring(nameStart, nameEnd)
@@ -168,7 +168,7 @@ class KotlinCompletionContributor : CompletionContributor() {
val classOrObject = tokenBefore?.parents?.firstIsInstanceOrNull<KtClassOrObject>() ?: return false val classOrObject = tokenBefore?.parents?.firstIsInstanceOrNull<KtClassOrObject>() ?: return false
val name = classOrObject.nameIdentifier ?: return false val name = classOrObject.nameIdentifier ?: return false
val body = classOrObject.getBody() ?: return false val body = classOrObject.getBody() ?: return false
val offset = tokenBefore!!.startOffset val offset = tokenBefore.startOffset
return name.endOffset <= offset && offset <= body.startOffset return name.endOffset <= offset && offset <= body.startOffset
} }
@@ -180,7 +180,7 @@ class KotlinCompletionContributor : CompletionContributor() {
val lambda = leaf?.parents?.firstOrNull { it is KtFunctionLiteral } ?: return null val lambda = leaf?.parents?.firstOrNull { it is KtFunctionLiteral } ?: return null
val lambdaChild = leaf!!.parents.takeWhile { it != lambda }.lastOrNull() val lambdaChild = leaf.parents.takeWhile { it != lambda }.lastOrNull()
return if (lambdaChild is KtParameterList) return if (lambdaChild is KtParameterList)
CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED
@@ -133,7 +133,7 @@ class FrameVisitor(context: EvaluationContextImpl) {
private fun isFunctionType(type: Type?): Boolean { private fun isFunctionType(type: Type?): Boolean {
return type?.sort == Type.OBJECT && return type?.sort == Type.OBJECT &&
type!!.internalName.startsWith(InlineCodegenUtil.NUMBERED_FUNCTION_PREFIX) type.internalName.startsWith(InlineCodegenUtil.NUMBERED_FUNCTION_PREFIX)
} }
private fun findLocalVariable(name: String, asmType: Type?, checkType: Boolean): Value? { private fun findLocalVariable(name: String, asmType: Type?, checkType: Boolean): Value? {
@@ -79,7 +79,7 @@ class AddLoopLabelFix(loop: KtLoopExpression, val jumpExpression: KtElement): Ko
assert(element is KtBreakExpression || element is KtContinueExpression) assert(element is KtBreakExpression || element is KtContinueExpression)
assert((element as? KtLabeledExpression)?.getLabelName() == null) assert((element as? KtLabeledExpression)?.getLabelName() == null)
val loop = element?.getStrictParentOfType<KtLoopExpression>() ?: return null val loop = element?.getStrictParentOfType<KtLoopExpression>() ?: return null
return AddLoopLabelFix(loop, element!!) return AddLoopLabelFix(loop, element)
} }
} }
} }
@@ -51,7 +51,7 @@ class KotlinParameterUsage(
) : KotlinExplicitReferenceUsage<KtElement>(element) { ) : KotlinExplicitReferenceUsage<KtElement>(element) {
override fun processReplacedElement(element: KtElement) { override fun processReplacedElement(element: KtElement) {
val qualifiedExpression = element.parent as? KtQualifiedExpression val qualifiedExpression = element.parent as? KtQualifiedExpression
val elementToShorten = if (qualifiedExpression?.receiverExpression == element) qualifiedExpression!! else element val elementToShorten = if (qualifiedExpression?.receiverExpression == element) qualifiedExpression else element
elementToShorten.addToShorteningWaitSet(Options(removeThis = true, removeThisLabels = true)) elementToShorten.addToShorteningWaitSet(Options(removeThis = true, removeThisLabels = true))
} }
@@ -720,7 +720,7 @@ private fun ExtractionData.suggestFunctionNames(returnType: KotlinType): List<St
expressions.singleOrNull()?.let { expr -> expressions.singleOrNull()?.let { expr ->
val property = expr.getStrictParentOfType<KtProperty>() val property = expr.getStrictParentOfType<KtProperty>()
if (property?.initializer == expr) { if (property?.initializer == expr) {
property?.name?.let { functionNames.add(KotlinNameSuggester.suggestNameByName("get" + it.capitalize(), validator)) } property.name?.let { functionNames.add(KotlinNameSuggester.suggestNameByName("get" + it.capitalize(), validator)) }
} }
} }
@@ -235,7 +235,7 @@ class DefaultStatementConverter : JavaElementVisitor(), StatementConverter {
override fun visitWhileStatement(statement: PsiWhileStatement) { override fun visitWhileStatement(statement: PsiWhileStatement) {
val condition = statement.condition val condition = statement.condition
val expression = if (condition?.type != null) val expression = if (condition?.type != null)
codeConverter.convertExpression(condition, condition!!.type) codeConverter.convertExpression(condition, condition.type)
else else
codeConverter.convertExpression(condition) codeConverter.convertExpression(condition)
result = WhileStatement(expression, codeConverter.convertStatementOrBlock(statement.body), statement.isInSingleLine()) result = WhileStatement(expression, codeConverter.convertStatementOrBlock(statement.body), statement.isInSingleLine())
@@ -46,7 +46,7 @@ private class TypePredicateImpl
for (i in nameParts.lastIndex downTo 0) { for (i in nameParts.lastIndex downTo 0) {
if (nameParts[i] != descriptor?.name?.asString()) return false if (nameParts[i] != descriptor?.name?.asString()) return false
descriptor = descriptor?.containingDeclaration descriptor = descriptor.containingDeclaration
} }
return true return true
@@ -27,6 +27,6 @@ fun UElement?.getLocation(): Location? {
val psiFile = psiElement?.containingFile ?: return null val psiFile = psiElement?.containingFile ?: return null
val vfile = psiFile.virtualFile val vfile = psiFile.virtualFile
val file = VfsUtilCore.virtualToIoFile(vfile) val file = VfsUtilCore.virtualToIoFile(vfile)
val range = psiElement?.textRange ?: return null val range = psiElement.textRange ?: return null
return Location.create(file, psiFile.text, range.startOffset, range.endOffset) return Location.create(file, psiFile.text, range.startOffset, range.endOffset)
} }