From 2e780d7a4714843e1ceb633c30de851438e03349 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 22 Jul 2014 12:48:51 +0200 Subject: [PATCH] turn off contract inference for overrideable methods: fix logic --- .../codeInsight/InferredAnnotationsManagerImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/InferredAnnotationsManagerImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/InferredAnnotationsManagerImpl.java index 3cd036db6ed1..813ff25caee2 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/InferredAnnotationsManagerImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/InferredAnnotationsManagerImpl.java @@ -40,7 +40,7 @@ public class InferredAnnotationsManagerImpl extends InferredAnnotationsManager { return fromBytecode; } - if (listOwner instanceof PsiMethod && ORG_JETBRAINS_ANNOTATIONS_CONTRACT.equals(annotationFQN) && !PsiUtil.canBeOverriden((PsiMethod)listOwner)) { + if (ORG_JETBRAINS_ANNOTATIONS_CONTRACT.equals(annotationFQN) && canHaveContract(listOwner)) { List contracts = ContractInference.inferContracts((PsiMethod)listOwner); if (!contracts.isEmpty()) { return ProjectBytecodeAnalysis.getInstance(listOwner.getProject()).createContractAnnotation("\"" + StringUtil.join(contracts, "; ") + "\""); @@ -50,20 +50,22 @@ public class InferredAnnotationsManagerImpl extends InferredAnnotationsManager { return null; } + private static boolean canHaveContract(PsiModifierListOwner listOwner) { + return listOwner instanceof PsiMethod && !PsiUtil.canBeOverriden((PsiMethod)listOwner); + } + @NotNull @Override public PsiAnnotation[] findInferredAnnotations(@NotNull PsiModifierListOwner listOwner) { List result = ContainerUtil.newArrayList(); PsiAnnotation[] fromBytecode = ProjectBytecodeAnalysis.getInstance(listOwner.getProject()).findInferredAnnotations(listOwner); for (PsiAnnotation annotation : fromBytecode) { - if (!ORG_JETBRAINS_ANNOTATIONS_CONTRACT.equals(annotation.getQualifiedName()) || - !(listOwner instanceof PsiMethod) || - !PsiUtil.canBeOverriden((PsiMethod)listOwner)) { + if (!ORG_JETBRAINS_ANNOTATIONS_CONTRACT.equals(annotation.getQualifiedName()) || canHaveContract(listOwner)) { result.add(annotation); } } - if (listOwner instanceof PsiMethod && !PsiUtil.canBeOverriden((PsiMethod)listOwner)) { + if (canHaveContract(listOwner)) { List contracts = ContractInference.inferContracts((PsiMethod)listOwner); if (!contracts.isEmpty()) { result.add(ProjectBytecodeAnalysis.getInstance(listOwner.getProject())