From a0e738dbc229f2edb0276f493def69883fd79855 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 2 Sep 2014 12:01:06 +0200 Subject: [PATCH] don't use inferred contracts for overrideable methods --- .../intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java index 7539d7195701..92777dd659e0 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ControlFlowAnalyzer.java @@ -1434,6 +1434,10 @@ public class ControlFlowAnalyzer extends JavaElementVisitor { final PsiAnnotation contractAnno = findContractAnnotation(method); final int paramCount = method.getParameterList().getParametersCount(); if (contractAnno != null) { + if (AnnotationUtil.isInferredAnnotation(contractAnno) && PsiUtil.canBeOverriden(method)) { + return Collections.emptyList(); + } + return CachedValuesManager.getCachedValue(contractAnno, new CachedValueProvider>() { @Nullable @Override