diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index dbaee51bae7a..5cdf6edce78a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -371,6 +371,13 @@ public class JavaCompletionData extends JavaAwareCompletionData { return TailType.HUMBLE_SPACE_BEFORE_WORD; } + if (scope instanceof PsiLambdaExpression) { + final PsiType returnType = LambdaUtil.getFunctionalInterfaceReturnType(((PsiLambdaExpression)scope)); + if (PsiType.VOID.equals(returnType)) { + return TailType.SEMICOLON; + } + return TailType.HUMBLE_SPACE_BEFORE_WORD; + } scope = scope.getParent(); } } diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 85625cde1e70..a6ad3c5ee309 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -31,6 +31,11 @@ import java.util.*; public class LambdaUtil { private static final Logger LOG = Logger.getInstance("#" + LambdaUtil.class.getName()); + @Nullable + public static PsiType getFunctionalInterfaceReturnType(PsiLambdaExpression expr) { + return getFunctionalInterfaceReturnType(expr.getFunctionalInterfaceType()); + } + @Nullable public static PsiType getFunctionalInterfaceReturnType(PsiType functionalInterfaceType) { final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(functionalInterfaceType);