From c0d76a2aa7dc672d3fa55db052726f475d5e9cf1 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 14 Jul 2014 18:54:29 +0200 Subject: [PATCH] parameter info: don't retrieve inferred annotations in dumb mode --- .../api/impls/MethodParameterInfoHandler.java | 7 +++++-- .../intellij/codeInsight/AnnotationUtil.java | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java index f9b1723fe57b..fd85d1124171 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java @@ -15,12 +15,15 @@ */ package com.intellij.codeInsight.hint.api.impls; -import com.intellij.codeInsight.*; +import com.intellij.codeInsight.AnnotationUtil; +import com.intellij.codeInsight.CodeInsightBundle; +import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.completion.JavaCompletionUtil; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.lang.parameterInfo.*; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbService; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.CompletionParameterTypeInferencePolicy; import com.intellij.psi.infos.CandidateInfo; @@ -443,7 +446,7 @@ public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabAc private static void appendModifierList(@NotNull StringBuilder buffer, @NotNull PsiModifierListOwner owner) { int lastSize = buffer.length(); Set shownAnnotations = ContainerUtil.newHashSet(); - for (PsiAnnotation annotation : AnnotationUtil.getAllAnnotations(owner, false, null)) { + for (PsiAnnotation annotation : AnnotationUtil.getAllAnnotations(owner, false, null, !DumbService.isDumb(owner.getProject()))) { final PsiJavaCodeReferenceElement element = annotation.getNameReferenceElement(); if (element != null) { final PsiElement resolved = element.resolve(); diff --git a/java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java b/java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java index 3b908a77d5e7..741c0bf8adc4 100644 --- a/java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java +++ b/java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java @@ -377,7 +377,16 @@ public class AnnotationUtil { } @NotNull - public static PsiAnnotation[] getAllAnnotations(@NotNull PsiModifierListOwner owner, boolean inHierarchy, Set visited) { + public static PsiAnnotation[] getAllAnnotations(@NotNull PsiModifierListOwner owner, + boolean inHierarchy, + Set visited) { + return getAllAnnotations(owner, inHierarchy, visited, true); + } + + @NotNull + public static PsiAnnotation[] getAllAnnotations(@NotNull PsiModifierListOwner owner, + boolean inHierarchy, + Set visited, boolean withInferred) { final PsiModifierList list = owner.getModifierList(); PsiAnnotation[] annotations = PsiAnnotation.EMPTY_ARRAY; if (list != null) { @@ -389,8 +398,10 @@ public class AnnotationUtil { if (externalAnnotations != null) { annotations = ArrayUtil.mergeArrays(annotations, externalAnnotations, PsiAnnotation.ARRAY_FACTORY); } - final PsiAnnotation[] inferredAnnotations = InferredAnnotationsManager.getInstance(project).findInferredAnnotations(owner); - annotations = ArrayUtil.mergeArrays(annotations, inferredAnnotations, PsiAnnotation.ARRAY_FACTORY); + if (withInferred) { + final PsiAnnotation[] inferredAnnotations = InferredAnnotationsManager.getInstance(project).findInferredAnnotations(owner); + annotations = ArrayUtil.mergeArrays(annotations, inferredAnnotations, PsiAnnotation.ARRAY_FACTORY); + } if (inHierarchy) { if (owner instanceof PsiClass) {