From 7fb78a037253faf998657d1b4b9bd954a9d31f16 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 11 Jul 2017 16:35:04 +0300 Subject: [PATCH] Code cleanup: replace chained null-checks with safe-calls --- .../src/org/jetbrains/kotlin/resolve/OverrideResolver.kt | 2 +- .../src/org/jetbrains/kotlin/types/VarianceChecker.kt | 2 +- .../org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt | 2 +- .../kotlin/idea/completion/KotlinCompletionCharFilter.kt | 2 +- .../src/org/jetbrains/kotlin/idea/core/ExpectedInfos.kt | 2 +- idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt | 2 +- .../idea/quickfix/QuickFixFactoryForTypeMismatchError.kt | 3 +-- .../org/jetbrains/kotlin/idea/quickfix/RemoveNullableFix.kt | 2 +- .../idea/quickfix/replaceWith/DeprecatedSymbolUsageFixBase.kt | 2 +- .../introduceParameter/KotlinInplaceParameterIntroducer.kt | 2 +- j2k/src/org/jetbrains/kotlin/j2k/StatementConverter.kt | 2 +- .../android/synthetic/res/AndroidLayoutXmlFileManager.kt | 2 +- 12 files changed, 12 insertions(+), 13 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt index 30ca4057d06..8aa0f68e5e3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt @@ -809,7 +809,7 @@ class OverrideResolver( private fun findDataModifierForDataClass(dataClass: DeclarationDescriptor): PsiElement { val classDeclaration = DescriptorToSourceUtils.getSourceFromDescriptor(dataClass) as KtClassOrObject? - if (classDeclaration != null && classDeclaration.modifierList != null) { + if (classDeclaration?.modifierList != null) { val modifier = classDeclaration.modifierList!!.getModifier(KtTokens.DATA_KEYWORD) if (modifier != null) { return modifier diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/VarianceChecker.kt b/core/descriptors/src/org/jetbrains/kotlin/types/VarianceChecker.kt index 5242e528f8e..3a24dbfc878 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/VarianceChecker.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/VarianceChecker.kt @@ -55,7 +55,7 @@ fun > D.checkTypePosition( var noError = true for (argument in arguments) { - if (argument == null || argument.typeParameter == null || argument.projection.isStarProjection) continue + if (argument?.typeParameter == null || argument.projection.isStarProjection) continue val projectionKind = TypeCheckingProcedure.getEffectiveProjectionKind(argument.typeParameter!!, argument.projection)!! val newPosition = when (projectionKind) { diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt index e9b6f302364..6a88361d320 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -116,7 +116,7 @@ abstract class KotlinCommonBlock( val childParent = child.treeParent val childType = child.elementType - if (childParent != null && childParent.treeParent != null) { + if (childParent?.treeParent != null) { if (childParent.elementType === KtNodeTypes.BLOCK && childParent.treeParent.elementType === KtNodeTypes.SCRIPT) { return Indent.getNoneIndent() } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionCharFilter.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionCharFilter.kt index 0106d8775d9..29a10aa21de 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionCharFilter.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionCharFilter.kt @@ -71,7 +71,7 @@ class KotlinCompletionCharFilter() : CharFilter() { } '{' -> { - if (currentItem != null && currentItem.getUserData(ACCEPT_OPENING_BRACE) != null) + if (currentItem?.getUserData(ACCEPT_OPENING_BRACE) != null) Result.SELECT_ITEM_AND_FINISH_LOOKUP else Result.HIDE_LOOKUP diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ExpectedInfos.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ExpectedInfos.kt index a658fef7729..d8d6ce4c916 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ExpectedInfos.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ExpectedInfos.kt @@ -590,7 +590,7 @@ class ExpectedInfos( if (expressionWithType != forExpression.loopRange) return null val loopVar = forExpression.loopParameter - val loopVarType = if (loopVar != null && loopVar.typeReference != null) + val loopVarType = if (loopVar?.typeReference != null) (bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, loopVar] as VariableDescriptor).type.takeUnless { it.isError } else null diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt b/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt index 7a252a816c9..f0476083c61 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt @@ -373,7 +373,7 @@ class CodeInliner( is VarargValueArgument -> { val arguments = resolvedArgument.arguments val single = arguments.singleOrNull() - if (single != null && single.getSpreadElement() != null) { + if (single?.getSpreadElement() != null) { val expression = single.getArgumentExpression()!!.marked(USER_CODE_KEY) return Argument(expression, bindingContext.getType(expression), isNamed = single.isNamed()) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt index 41abd385d79..354ec1d25b0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt @@ -211,8 +211,7 @@ class QuickFixFactoryForTypeMismatchError : KotlinIntentionActionsFactory() { val typeToInsert = valueArgumentType.approximateWithResolvableType(scope, true) actions.add(ChangeParameterTypeFix(correspondingParameter, typeToInsert)) } - if (correspondingParameterDescriptor != null - && correspondingParameterDescriptor.varargElementType != null + if (correspondingParameterDescriptor?.varargElementType != null && KotlinBuiltIns.isArray(valueArgumentType) && expressionType.arguments.isNotEmpty() && expressionType.arguments[0].type.constructor == expectedType.constructor) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveNullableFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveNullableFix.kt index 63d4d530734..3e53f39592c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveNullableFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveNullableFix.kt @@ -48,7 +48,7 @@ class RemoveNullableFix(element: KtNullableType, class Factory(private val typeOfError: NullableKind) : KotlinSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { val nullType = diagnostic.psiElement.getNonStrictParentOfType() - if (nullType == null || nullType.innerType == null) return null + if (nullType?.innerType == null) return null return RemoveNullableFix(nullType, typeOfError) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/replaceWith/DeprecatedSymbolUsageFixBase.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/replaceWith/DeprecatedSymbolUsageFixBase.kt index 886612c6eea..2a7cf6a6ea1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/replaceWith/DeprecatedSymbolUsageFixBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/replaceWith/DeprecatedSymbolUsageFixBase.kt @@ -53,7 +53,7 @@ abstract class DeprecatedSymbolUsageFixBase( val element = element ?: return false if (!super.isAvailable(project, editor, file)) return false val strategy = buildUsageReplacementStrategy(element, replaceWith, recheckAnnotation = true) - return strategy != null && strategy.createReplacer(element) != null + return strategy?.createReplacer(element) != null } final override fun invoke(project: Project, editor: Editor?, file: KtFile) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt index 7d5e3f4e59d..6cf811f1af3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinInplaceParameterIntroducer.kt @@ -108,7 +108,7 @@ class KotlinInplaceParameterIntroducer( init { val templateState = TemplateManagerImpl.getTemplateState(myEditor) - val currentType = if (templateState != null && templateState.template != null) { + val currentType = if (templateState?.template != null) { templateState .getVariableValue(KotlinInplaceVariableIntroducer.TYPE_REFERENCE_VARIABLE_NAME) ?.text diff --git a/j2k/src/org/jetbrains/kotlin/j2k/StatementConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/StatementConverter.kt index 9beae944c76..900233d47b2 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/StatementConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/StatementConverter.kt @@ -98,7 +98,7 @@ class DefaultStatementConverter : JavaElementVisitor(), StatementConverter { override fun visitDoWhileStatement(statement: PsiDoWhileStatement) { val condition = statement.condition - val expression = if (condition != null && condition.type != null) + val expression = if (condition?.type != null) codeConverter.convertExpression(condition, condition.type) else codeConverter.convertExpression(condition) diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidLayoutXmlFileManager.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidLayoutXmlFileManager.kt index 58a32542eb2..5ca2bfba0fa 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidLayoutXmlFileManager.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidLayoutXmlFileManager.kt @@ -73,7 +73,7 @@ abstract class AndroidLayoutXmlFileManager(val project: Project) { val allLayoutFiles = allChildren.filter { it.parent.name.startsWith("layout") && it.name.toLowerCase().endsWith(".xml") } val allLayoutPsiFiles = allLayoutFiles.fold(ArrayList(allLayoutFiles.size)) { list, file -> val psiFile = psiManager.findFile(file) - if (psiFile != null && psiFile.parent != null) { + if (psiFile?.parent != null) { list += psiFile } list