IDEA-157287 'Complete statement' fail with lambda

This commit is contained in:
peter
2016-08-01 15:37:27 +02:00
parent aee0f1174b
commit 3d14836e35
4 changed files with 19 additions and 2 deletions
@@ -42,6 +42,8 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
import static com.intellij.patterns.PsiJavaPatterns.psiElement;
/**
* @author spleaner
*/
@@ -276,7 +278,9 @@ public class JavaSmartEnterProcessor extends SmartEnterProcessor {
if (atCaret instanceof PsiWhiteSpace) return null;
if (atCaret instanceof PsiJavaToken && "}".equals(atCaret.getText())) {
atCaret = atCaret.getParent();
if (!(atCaret instanceof PsiAnonymousClass || atCaret instanceof PsiArrayInitializerExpression)) {
if (!(atCaret instanceof PsiAnonymousClass ||
atCaret instanceof PsiArrayInitializerExpression ||
psiElement(PsiCodeBlock.class).withParent(PsiLambdaExpression.class).accepts(atCaret))) {
return null;
}
}
@@ -0,0 +1,6 @@
public class Class1 {
public void s() {
Runnable r = () -> {
}<caret>
}
}
@@ -0,0 +1,6 @@
public class Class1 {
public void s() {
Runnable r = () -> {
};<caret>
}
}
@@ -299,7 +299,8 @@ public class CompleteStatementTest extends EditorActionTestCase {
public void testArrayInitializerSeveralLines() { doTest(); }
public void testReturnInLambda() { doTest(); }
public void testSemicolonAfterLambda() { doTest(); }
private void doTestBracesNextLineStyle() throws Exception {
CommonCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()).getCommonSettings(JavaLanguage.INSTANCE);
settings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;