From eef0e8e44796f45109e5b7be5465f8dbb56d016e Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Sat, 23 May 2015 12:42:11 +0300 Subject: [PATCH] JetBlockExpression.getStatements() returns List instead of List --- .../kotlin/codegen/ExpressionCodegen.java | 19 ++++++++----------- .../kotlin/cfg/JetControlFlowProcessor.java | 4 ++-- .../kotlin/psi/JetBlockExpression.java | 4 ++-- .../org/jetbrains/kotlin/psi/JetPsiFactory.kt | 2 +- .../org/jetbrains/kotlin/psi/JetPsiUtil.java | 8 ++++---- .../kotlin/psi/psiUtil/jetPsiUtil.kt | 2 +- .../kotlin/resolve/StatementFilter.kt | 7 ++++--- .../resolve/calls/ArgumentTypeResolver.java | 6 +++--- .../resolve/calls/CandidateResolver.java | 2 +- .../ControlStructureTypingUtils.java | 6 +++--- .../ControlStructureTypingVisitor.java | 4 ++-- .../expressions/ExpressionTypingServices.java | 2 +- .../kotlin/resolve/lazy/ElementResolver.kt | 2 +- .../resolve/lazy/PartialBodyResolveFilter.kt | 2 +- .../idea/codeInsight/CodeInsightUtils.java | 8 ++++---- .../statement/KotlinTryFinallySurrounder.java | 4 ++-- .../unwrap/KotlinUnwrapRemoveBase.java | 2 +- .../ConvertToExpressionBodyIntention.kt | 6 ++---- .../idea/intentions/IfNullToElvisIntention.kt | 2 +- .../intentions/InvertIfConditionIntention.kt | 2 +- .../branchedTransformations/IfThenUtils.kt | 2 +- .../ConvertMemberToExtensionIntention.kt | 2 +- .../CreateLocalVariableActionFactory.kt | 2 +- .../extractionEngine/extractorUtil.kt | 2 +- .../expression/ExpressionVisitor.java | 8 +++----- 25 files changed, 52 insertions(+), 58 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 1fe9c38d8d7..9ba564200f9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -403,7 +403,7 @@ public class ExpressionCodegen extends JetVisitor implem } if (expr instanceof JetBlockExpression) { JetBlockExpression blockExpression = (JetBlockExpression) expr; - List statements = blockExpression.getStatements(); + List statements = blockExpression.getStatements(); if (statements.size() == 0 || statements.size() == 1 && isEmptyExpression(statements.get(0))) { return true; } @@ -497,9 +497,9 @@ public class ExpressionCodegen extends JetVisitor implem if (body instanceof JetBlockExpression) { // If body's a block, it can contain variable declarations which may be used in the condition of a do-while loop. // We handle this case separately because otherwise such variable will be out of the frame map after the block ends - List doWhileStatements = ((JetBlockExpression) body).getStatements(); + List doWhileStatements = ((JetBlockExpression) body).getStatements(); - List statements = new ArrayList(doWhileStatements.size() + 1); + List statements = new ArrayList(doWhileStatements.size() + 1); statements.addAll(doWhileStatements); statements.add(condition); @@ -1539,7 +1539,7 @@ public class ExpressionCodegen extends JetVisitor implem } private StackValue generateBlock( - List statements, + List statements, boolean isStatement, Label labelBeforeLastExpression, @Nullable final Label labelBlockEnd @@ -1550,13 +1550,10 @@ public class ExpressionCodegen extends JetVisitor implem StackValue answer = StackValue.none(); - for (Iterator iterator = statements.iterator(); iterator.hasNext(); ) { - JetElement possiblyLabeledStatement = iterator.next(); - - JetElement statement = possiblyLabeledStatement instanceof JetExpression - ? JetPsiUtil.safeDeparenthesize((JetExpression) possiblyLabeledStatement, true) - : possiblyLabeledStatement; + for (Iterator iterator = statements.iterator(); iterator.hasNext(); ) { + JetExpression possiblyLabeledStatement = iterator.next(); + JetElement statement = JetPsiUtil.safeDeparenthesize(possiblyLabeledStatement, true); if (statement instanceof JetNamedDeclaration) { JetNamedDeclaration declaration = (JetNamedDeclaration) statement; @@ -1915,7 +1912,7 @@ public class ExpressionCodegen extends JetVisitor implem private static boolean endsWithReturn(JetElement bodyExpression) { if (bodyExpression instanceof JetBlockExpression) { - List statements = ((JetBlockExpression) bodyExpression).getStatements(); + List statements = ((JetBlockExpression) bodyExpression).getStatements(); return statements.size() > 0 && statements.get(statements.size() - 1) instanceof JetReturnExpression; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/kotlin/cfg/JetControlFlowProcessor.java index 7c1daeef09a..ed174d69e55 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/JetControlFlowProcessor.java @@ -1186,8 +1186,8 @@ public class JetControlFlowProcessor { builder.enterLexicalScope(expression); } mark(expression); - List statements = expression.getStatements(); - for (JetElement statement : statements) { + List statements = expression.getStatements(); + for (JetExpression statement : statements) { generateInstructions(statement); } if (statements.isEmpty()) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetBlockExpression.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetBlockExpression.java index 43b3f946ffd..e1a4c1620f7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetBlockExpression.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetBlockExpression.java @@ -46,8 +46,8 @@ public class JetBlockExpression extends JetExpressionImpl implements JetStatemen @ReadOnly @NotNull - public List getStatements() { - return Arrays.asList(findChildrenByClass(JetElement.class)); + public List getStatements() { + return Arrays.asList(findChildrenByClass(JetExpression.class)); } @Nullable diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt index 722705b2ef0..05ef752f4cd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt @@ -599,7 +599,7 @@ public class JetPsiFactory(private val project: Project) { } private class BlockWrapper(fakeBlockExpression: JetBlockExpression, private val expression: JetExpression) : JetBlockExpression(fakeBlockExpression.getNode()), JetPsiUtil.JetExpressionWrapper { - override fun getStatements(): List { + override fun getStatements(): List { return listOf(expression) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java index d2801255653..8fb0f016be3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiUtil.java @@ -409,7 +409,7 @@ public class JetPsiUtil { } @Nullable - public static JetElement getExpressionOrLastStatementInBlock(@Nullable JetExpression expression) { + public static JetExpression getExpressionOrLastStatementInBlock(@Nullable JetExpression expression) { if (expression instanceof JetBlockExpression) { return getLastStatementInABlock((JetBlockExpression) expression); } @@ -417,9 +417,9 @@ public class JetPsiUtil { } @Nullable - public static JetElement getLastStatementInABlock(@Nullable JetBlockExpression blockExpression) { + public static JetExpression getLastStatementInABlock(@Nullable JetBlockExpression blockExpression) { if (blockExpression == null) return null; - List statements = blockExpression.getStatements(); + List statements = blockExpression.getStatements(); return statements.isEmpty() ? null : statements.get(statements.size() - 1); } @@ -587,7 +587,7 @@ public class JetPsiUtil { } public static boolean checkVariableDeclarationInBlock(@NotNull JetBlockExpression block, @NotNull String varName) { - for (JetElement element : block.getStatements()) { + for (JetExpression element : block.getStatements()) { if (element instanceof JetVariableDeclaration) { if (((JetVariableDeclaration) element).getNameAsSafeName().asString().equals(varName)) { return true; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt index def2b141388..eee79757c7e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt @@ -152,7 +152,7 @@ public fun JetElement.blockExpressionsOrSingle(): Sequence = if (this is JetBlockExpression) getStatements().asSequence() else sequenceOf(this) public fun JetExpression.lastBlockStatementOrThis(): JetExpression - = (this as? JetBlockExpression)?.getStatements()?.lastIsInstanceOrNull() ?: this + = (this as? JetBlockExpression)?.getStatements()?.lastOrNull() ?: this public fun JetBlockExpression.contentRange(): PsiChildRange { val first = (getLBrace()?.getNextSibling() ?: getFirstChild()) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/StatementFilter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/StatementFilter.kt index 42bccac03a7..ae948e3519b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/StatementFilter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/StatementFilter.kt @@ -16,13 +16,14 @@ package org.jetbrains.kotlin.resolve -import org.jetbrains.kotlin.psi.JetElement import org.jetbrains.kotlin.psi.JetBlockExpression +import org.jetbrains.kotlin.psi.JetElement +import org.jetbrains.kotlin.psi.JetExpression import org.jetbrains.kotlin.psi.JetPsiUtil public open class StatementFilter { - public open val filter: ((JetElement) -> Boolean)? + public open val filter: ((JetExpression) -> Boolean)? get() = null companion object { @@ -30,7 +31,7 @@ public open class StatementFilter { } } -fun StatementFilter.filterStatements(block: JetBlockExpression): List { +fun StatementFilter.filterStatements(block: JetBlockExpression): List { if (filter == null || block is JetPsiUtil.JetExpressionWrapper) return block.getStatements() return block.getStatements().filter { filter!!(it) } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ArgumentTypeResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ArgumentTypeResolver.java index 6fb3a4db9d3..e3ad15b08ef 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ArgumentTypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ArgumentTypeResolver.java @@ -180,9 +180,9 @@ public class ArgumentTypeResolver { // This case is a temporary hack for 'if' branches. // The right way to implement this logic is to interpret 'if' branches as function literals with explicitly-typed signatures // (no arguments and no receiver) and therefore analyze them straight away (not in the 'complete' phase). - JetElement lastStatementInABlock = ResolvePackage.getLastStatementInABlock(context.statementFilter, blockExpression); - if (lastStatementInABlock instanceof JetExpression) { - return getLastElementDeparenthesized((JetExpression) lastStatementInABlock, context); + JetExpression lastStatementInABlock = ResolvePackage.getLastStatementInABlock(context.statementFilter, blockExpression); + if (lastStatementInABlock != null) { + return getLastElementDeparenthesized(lastStatementInABlock, context); } } return deparenthesizedExpression; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.java index 1b1e243dca2..b433ecfbd99 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.java @@ -321,7 +321,7 @@ public class CandidateResolver { TemporaryTraceAndCache temporaryToResolveFunctionLiteral = TemporaryTraceAndCache.create( context, "trace to resolve function literal with expected return type", argumentExpression); - JetElement statementExpression = JetPsiUtil.getExpressionOrLastStatementInBlock(functionLiteral.getBodyExpression()); + JetExpression statementExpression = JetPsiUtil.getExpressionOrLastStatementInBlock(functionLiteral.getBodyExpression()); if (statementExpression == null) return; boolean[] mismatch = new boolean[1]; ObservableBindingTrace errorInterceptingTrace = ExpressionTypingUtils.makeTraceInterceptingTypeMismatch( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingUtils.java index e43450bcbb4..ea78d9cf643 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingUtils.java @@ -313,9 +313,9 @@ public class ControlStructureTypingUtils { if (expression.getStatements().isEmpty()) { return checkExpressionType(expression, c); } - JetElement lastStatement = JetPsiUtil.getLastStatementInABlock(expression); - if (lastStatement instanceof JetExpression) { - return checkExpressionTypeRecursively((JetExpression) lastStatement, c); + JetExpression lastStatement = JetPsiUtil.getLastStatementInABlock(expression); + if (lastStatement != null) { + return checkExpressionTypeRecursively(lastStatement, c); } return false; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingVisitor.java index fbb6b5c6215..0f65fc59c42 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ControlStructureTypingVisitor.java @@ -320,12 +320,12 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor { else if (body != null) { WritableScope writableScope = newWritableScopeImpl(context, "do..while body scope"); conditionScope = writableScope; - List block; + List block; if (body instanceof JetBlockExpression) { block = ((JetBlockExpression)body).getStatements(); } else { - block = Collections.singletonList(body); + block = Collections.singletonList(body); } bodyTypeInfo = components.expressionTypingServices.getBlockReturnedTypeWithWritableScope( writableScope, block, CoercionStrategy.NO_COERCION, context); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java index 8c9a88a245a..27c5ed91092 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingServices.java @@ -150,7 +150,7 @@ public class ExpressionTypingServices { @NotNull CoercionStrategy coercionStrategyForLastExpression, @NotNull ExpressionTypingContext context ) { - List block = ResolvePackage.filterStatements(statementFilter, expression); + List block = ResolvePackage.filterStatements(statementFilter, expression); // SCRIPT: get code descriptor for script declaration DeclarationDescriptor containingDescriptor = context.scope.getContainingDeclaration(); diff --git a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt index 167d00e6e2e..e4aff666f48 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt @@ -240,7 +240,7 @@ public abstract class ElementResolver protected( get() { val context = getContext() if (context is JetBlockExpression) { - return context.getStatements().filterIsInstance().lastOrNull() ?: context + return context.getStatements().lastOrNull() ?: context } return context } diff --git a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/PartialBodyResolveFilter.kt b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/PartialBodyResolveFilter.kt index 271456c4dc6..5a1407fe076 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/PartialBodyResolveFilter.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/PartialBodyResolveFilter.kt @@ -45,7 +45,7 @@ class PartialBodyResolveFilter( private val nothingFunctionNames = HashSet(probablyNothingCallableNames.functionNames()) private val nothingVariableNames = HashSet(probablyNothingCallableNames.propertyNames()) - override val filter: ((JetElement) -> Boolean)? = { it is JetExpression && statementMarks.statementMark(it) != MarkLevel.SKIP } + override val filter: ((JetExpression) -> Boolean)? = { statementMarks.statementMark(it) != MarkLevel.SKIP } init { assert(declaration.isAncestor(elementToResolve)) diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java index 864b1455597..c3cf71ecd15 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java @@ -55,11 +55,11 @@ public class CodeInsightUtils { } if (element instanceof JetBlockExpression) { - List statements = ((JetBlockExpression) element).getStatements(); + List statements = ((JetBlockExpression) element).getStatements(); if (statements.size() == 1) { - JetElement elem = statements.get(0); - if (elem.getText().equals(element.getText()) && elem instanceof JetExpression) { - return (JetExpression) elem; + JetExpression statement = statements.get(0); + if (statement.getText().equals(element.getText())) { + return statement; } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTryFinallySurrounder.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTryFinallySurrounder.java index 74273ef1af8..71c2837a6fc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTryFinallySurrounder.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/surroundWith/statement/KotlinTryFinallySurrounder.java @@ -23,7 +23,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.psi.JetElement; +import org.jetbrains.kotlin.psi.JetExpression; import org.jetbrains.kotlin.psi.JetFinallySection; import org.jetbrains.kotlin.psi.JetTryExpression; @@ -51,7 +51,7 @@ public class KotlinTryFinallySurrounder extends KotlinTrySurrounderBase { protected TextRange getTextRangeForCaret(@NotNull JetTryExpression expression) { JetFinallySection block = expression.getFinallyBlock(); assert block != null : "Finally block should exists for " + expression.getText(); - JetElement blockExpression = block.getFinalExpression().getStatements().get(0); + JetExpression blockExpression = block.getFinalExpression().getStatements().get(0); return blockExpression.getTextRange(); } diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/unwrap/KotlinUnwrapRemoveBase.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/unwrap/KotlinUnwrapRemoveBase.java index 0ed183f5d9d..42ecb6e5c1b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/unwrap/KotlinUnwrapRemoveBase.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/unwrap/KotlinUnwrapRemoveBase.java @@ -63,7 +63,7 @@ public abstract class KotlinUnwrapRemoveBase extends AbstractUnwrapper expressions = block.getStatements(); + List expressions = block.getStatements(); if (!expressions.isEmpty()) { extract(expressions.get(0), expressions.get(expressions.size() - 1), from); } diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToExpressionBodyIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToExpressionBodyIntention.kt index b541aad4602..4a2e3554408 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToExpressionBodyIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToExpressionBodyIntention.kt @@ -90,7 +90,7 @@ public class ConvertToExpressionBodyIntention : JetSelfTargetingOffsetIndependen // Workaround for anonymous objects and similar expressions without resolution scope // TODO: This should probably be fixed in front-end so that resolution scope is recorded for anonymous objects as well val scopeExpression = ((declaration as? JetDeclarationWithBody)?.getBodyExpression() as? JetBlockExpression) - ?.getStatements()?.singleOrNull() as? JetExpression + ?.getStatements()?.singleOrNull() ?: return false val declaredType = (declaration.resolveToDescriptor() as? CallableDescriptor)?.getReturnType() ?: return false @@ -113,14 +113,12 @@ public class ConvertToExpressionBodyIntention : JetSelfTargetingOffsetIndependen //TODO: IMO this is not good code, there should be a way to detect that JetExpression does not have value is JetDeclaration, is JetLoopExpression -> return null // is JetExpression but does not have value - is JetExpression -> { + else -> { if (statement is JetBinaryExpression && statement.getOperationToken() == JetTokens.EQ) return null // assignment does not have value val expressionType = statement.analyze().getType(statement) ?: return null if (!KotlinBuiltIns.isUnit(expressionType) && !KotlinBuiltIns.isNothing(expressionType)) return null return statement } - - else -> return null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/IfNullToElvisIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/IfNullToElvisIntention.kt index b8ec8accc49..a1a1b9a55da 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/IfNullToElvisIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/IfNullToElvisIntention.kt @@ -102,7 +102,7 @@ public class IfNullToElvisIntention : JetSelfTargetingRangeIntention()!! + val lastStatement = parent.getStatements().last() if (expression == lastStatement) { return exitStatementExecutedAfter(parent) } diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt index a9a68319dbc..093a04bff2c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt @@ -53,7 +53,7 @@ fun JetBinaryExpression.expressionComparedToNull(): JetExpression? { fun JetExpression.unwrapBlockOrParenthesis(): JetExpression { val innerExpression = JetPsiUtil.safeDeparenthesize(this) if (innerExpression is JetBlockExpression) { - val statement = innerExpression.getStatements().singleOrNull() as? JetExpression ?: return this + val statement = innerExpression.getStatements().singleOrNull() ?: return this return JetPsiUtil.safeDeparenthesize(statement) } return innerExpression diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt index 429169c5b57..642d0b25579 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt @@ -80,7 +80,7 @@ public class ConvertMemberToExtensionIntention : JetSelfTargetingRangeIntention< fun selectBody(declaration: JetDeclarationWithBody) { if (bodyToSelect == null) { val body = declaration.getBodyExpression() - bodyToSelect = if (body is JetBlockExpression) body.getStatements().single() as JetExpression else body + bodyToSelect = if (body is JetBlockExpression) body.getStatements().single() else body } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt index 3d287989a93..6f2e08a1d8a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt @@ -61,7 +61,7 @@ object CreateLocalVariableActionFactory: JetSingleIntentionActionFactory() { } as JetBlockExpression if (actualContainer != container) { - val bodyExpression = actualContainer.getStatements().first() as JetExpression + val bodyExpression = actualContainer.getStatements().first() originalElement = (bodyExpression as? JetReturnExpression)?.getReturnedExpression() ?: bodyExpression } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt index 2e2ca562b38..7981aaa9a35 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt @@ -504,7 +504,7 @@ fun ExtractionGeneratorConfiguration.generateDeclaration( val defaultValue = descriptor.controlFlow.defaultOutputValue - val lastExpression = body.getStatements().lastOrNull() as? JetExpression + val lastExpression = body.getStatements().lastOrNull() if (lastExpression is JetReturnExpression) return val (defaultExpression, expressionToUnifyWith) = diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/ExpressionVisitor.java index 29630c6d8ad..a27e5513f2b 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/ExpressionVisitor.java @@ -110,12 +110,10 @@ public final class ExpressionVisitor extends TranslatorVisitor { @Override @NotNull public JsNode visitBlockExpression(@NotNull JetBlockExpression jetBlock, @NotNull TranslationContext context) { - List statements = jetBlock.getStatements(); + List statements = jetBlock.getStatements(); JsBlock jsBlock = new JsBlock(); - for (JetElement statement : statements) { - assert statement instanceof JetExpression : "Elements in JetBlockExpression " + - "should be of type JetExpression"; - JsNode jsNode = Translation.translateExpression((JetExpression)statement, context, jsBlock); + for (JetExpression statement : statements) { + JsNode jsNode = Translation.translateExpression(statement, context, jsBlock); JsStatement jsStatement = convertToStatement(jsNode); if (!JsAstUtils.isEmptyStatement(jsStatement)) { jsBlock.getStatements().add(jsStatement);