From bff9dd4ef560f76bf3d73735044ef5191d92f344 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 28 Sep 2016 18:17:10 +0300 Subject: [PATCH] Suggest assert/return postfix templates only for statements #KT-14079 Fixed #KT-14090 Fixed --- .../idea/codeInsight/postfix/stringBasedPostfixTemplates.kt | 4 ++-- .../testData/codeInsight/postfix/noReturnForNonStatement.kt | 3 +++ .../codeInsight/postfix/noReturnForNonStatement.kt.after | 3 +++ .../postfix/PostfixTemplateProviderTestGenerated.java | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 idea/testData/codeInsight/postfix/noReturnForNonStatement.kt create mode 100644 idea/testData/codeInsight/postfix/noReturnForNonStatement.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/postfix/stringBasedPostfixTemplates.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/postfix/stringBasedPostfixTemplates.kt index f44b15712cb..e54e311ab80 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/postfix/stringBasedPostfixTemplates.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/postfix/stringBasedPostfixTemplates.kt @@ -63,7 +63,7 @@ internal object KtAssertPostfixTemplate : ConstantStringBasedPostfixTemplate( "assert", "assert(expr) { \"\" }", "assert(\$expr$) { \"\$END$\" }", - createExpressionSelector(statementsOnly = false, predicate = KotlinType::isBoolean) + createExpressionSelector(statementsOnly = true, predicate = KotlinType::isBoolean) ) internal object KtParenthesizedPostfixTemplate : ConstantStringBasedPostfixTemplate( @@ -83,7 +83,7 @@ internal object KtReturnPostfixTemplate : ConstantStringBasedPostfixTemplate( "return", "return expr", "return \$expr$\$END$", - createExpressionSelector(statementsOnly = false) + createExpressionSelector(statementsOnly = true) ) internal object KtWhilePostfixTemplate : ConstantStringBasedPostfixTemplate( diff --git a/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt b/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt new file mode 100644 index 00000000000..099298c5e07 --- /dev/null +++ b/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt @@ -0,0 +1,3 @@ +fun foo(x: Any): Any { + val y = x.return +} diff --git a/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt.after b/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt.after new file mode 100644 index 00000000000..7161ebe7791 --- /dev/null +++ b/idea/testData/codeInsight/postfix/noReturnForNonStatement.kt.after @@ -0,0 +1,3 @@ +fun foo(x: Any): Any { + val y = x.return +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/postfix/PostfixTemplateProviderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/postfix/PostfixTemplateProviderTestGenerated.java index 22aa077bc49..128ad6335c5 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/postfix/PostfixTemplateProviderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/postfix/PostfixTemplateProviderTestGenerated.java @@ -71,6 +71,12 @@ public class PostfixTemplateProviderTestGenerated extends AbstractPostfixTemplat doTest(fileName); } + @TestMetadata("noReturnForNonStatement.kt") + public void testNoReturnForNonStatement() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/codeInsight/postfix/noReturnForNonStatement.kt"); + doTest(fileName); + } + @TestMetadata("notBoolean.kt") public void testNotBoolean() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/codeInsight/postfix/notBoolean.kt");