From 4f420a80b25c664831d08c27d4fba8f8c2d47a43 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 2 Mar 2011 18:36:07 +0100 Subject: [PATCH] don't filter out the implicitly initialized fields --- .../completion/scope/JavaCompletionProcessor.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java index a4ff8067961f..00cd3419a7a2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.completion.scope; import com.intellij.codeInsight.CodeInsightSettings; +import com.intellij.codeInsight.daemon.ImplicitUsageProvider; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.text.StringUtil; @@ -108,6 +109,15 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme } } + private static boolean isInitializedImplicitly(final PsiField field) { + for(ImplicitUsageProvider provider: ImplicitUsageProvider.EP_NAME.getExtensions()) { + if (provider.isImplicitWrite(field)) { + return true; + } + } + return false; + } + private static Set getNonInitializedFields(PsiElement element) { final PsiStatement statement = PsiTreeUtil.getParentOfType(element, PsiStatement.class); final PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class, true, PsiClass.class); @@ -131,7 +141,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme final PsiClass containingClass = method.getContainingClass(); assert containingClass != null; for (PsiField field : containingClass.getFields()) { - if (!field.hasModifierProperty(PsiModifier.STATIC) && field.getInitializer() == null) { + if (!field.hasModifierProperty(PsiModifier.STATIC) && field.getInitializer() == null && !isInitializedImplicitly(field)) { fields.add(field); } }