From 0beea24a953581506ebeba3d3759a026ce9ba595 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 25 Mar 2014 18:08:05 +0100 Subject: [PATCH] NPE during completion for lambda params --- .../completion/JavaMemberNameCompletionContributor.java | 6 ++++-- .../src/com/intellij/psi/util/PropertyUtil.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java index 542e4ad3d027..a484e4b1f4f9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMemberNameCompletionContributor.java @@ -109,7 +109,9 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor { String propertyName = null; if (variableKind == VariableKind.PARAMETER) { final PsiMethod method = PsiTreeUtil.getParentOfType(var, PsiMethod.class); - propertyName = PropertyUtil.getPropertyName(method); + if (method != null) { + propertyName = PropertyUtil.getPropertyName(method); + } if (method != null && method.getName().startsWith("with")) { propertyName = StringUtil.decapitalize(method.getName().substring(4)); } @@ -133,7 +135,7 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor { addLookupItems(set, null, matcher, project, getOverlappedNameVersions(matcher.getPrefix(), suggestedNames, "")); } PsiElement parent = PsiTreeUtil.getParentOfType(var, PsiCodeBlock.class); - if(parent == null) parent = PsiTreeUtil.getParentOfType(var, PsiMethod.class); + if(parent == null) parent = PsiTreeUtil.getParentOfType(var, PsiMethod.class, PsiLambdaExpression.class); addLookupItems(set, suggestedNameInfo, matcher, project, getUnresolvedReferences(parent, false)); if (var instanceof PsiParameter && parent instanceof PsiMethod) { addSuggestionsInspiredByFieldNames(set, matcher, var, project, codeStyleManager); diff --git a/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java index 425b46dfef15..4edae81248b9 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java @@ -103,7 +103,7 @@ public class PropertyUtil { return Comparing.equal(PsiUtil.resolveClassInType(TypeConversionUtil.erasure(returnType)), method.getContainingClass()); } - @Nullable public static String getPropertyName(PsiMethod method) { + @Nullable public static String getPropertyName(@NotNull PsiMethod method) { if (isSimplePropertyGetter(method)) { return getPropertyNameByGetter(method); }