From 776a89086f2dd593cab4105d874bcb5481cf3ba9 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Tue, 26 Mar 2019 12:03:26 +0300 Subject: [PATCH] Fix NoSuchElementException editing script file ^KT-30440 Fixed --- .../idea/project/KotlinCodeBlockModificationListener.kt | 3 ++- .../outOfBlock/scriptTopLevelCallExpression.kts | 7 +++++++ .../codeInsight/OutOfBlockModificationTestGenerated.java | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 idea/testData/codeInsight/outOfBlock/scriptTopLevelCallExpression.kts diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt index b03d0207b13..897cccaed63 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt @@ -152,7 +152,8 @@ class KotlinCodeBlockModificationListener( is KtScriptInitializer -> { return (blockDeclaration.body as? KtCallExpression) - ?.lambdaArguments?.last() + ?.lambdaArguments + ?.lastOrNull() ?.getLambdaExpression() ?.takeIf { it.isAncestor(element) } } diff --git a/idea/testData/codeInsight/outOfBlock/scriptTopLevelCallExpression.kts b/idea/testData/codeInsight/outOfBlock/scriptTopLevelCallExpression.kts new file mode 100644 index 00000000000..510f3b10235 --- /dev/null +++ b/idea/testData/codeInsight/outOfBlock/scriptTopLevelCallExpression.kts @@ -0,0 +1,7 @@ +// TRUE + +fun foo() = 1 + +foo() + +// SKIP_ANALYZE_CHECK diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OutOfBlockModificationTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OutOfBlockModificationTestGenerated.java index 666918aa007..2add3581a5e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OutOfBlockModificationTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OutOfBlockModificationTestGenerated.java @@ -224,6 +224,11 @@ public class OutOfBlockModificationTestGenerated extends AbstractOutOfBlockModif runTest("idea/testData/codeInsight/outOfBlock/scriptInLambdaExpression.kts"); } + @TestMetadata("scriptTopLevelCallExpression.kts") + public void testScriptTopLevelCallExpression() throws Exception { + runTest("idea/testData/codeInsight/outOfBlock/scriptTopLevelCallExpression.kts"); + } + @TestMetadata("scriptTopLevelExpression.kts") public void testScriptTopLevelExpression() throws Exception { runTest("idea/testData/codeInsight/outOfBlock/scriptTopLevelExpression.kts");