public bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { preConditions = null; foreach (var inferencer in this.inferencers) { if (inferencer == null) continue; InferredConditions tmp; if (inferencer.TryInferConditions(obl, codefixesManager, out tmp)) { Contract.Assert(tmp != null); if (preConditions == null) { preConditions = tmp; } else { preConditions.AddRange(tmp); } } } return preConditions != null; }
public bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { preConditions = null; return(false); }
public bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { var watch = new Stopwatch(); watch.Start(); var result = inner.TryInferConditions(obl, codefixesManager, out preConditions); watch.Stop(); inferenceTime += watch.Elapsed; if (preConditions == null) { return(false); } if (result) { inferred += preConditions.Count(); } return(result); }
virtual public bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { var preConds = PreconditionSuggestion.ExpressionsInPreState(obl.ConditionForPreconditionInference, this.MethodDriver.Context, this.MethodDriver.MetaDataDecoder, obl.PC, allowedKinds: ExpressionInPreStateKind.All); preConditions = /*preConds == null ? null : */ preConds.Where(pre => pre.hasVariables).AsInferredPreconditions(isSufficient: true); return /*preConditions != null && */ (preConditions.Any()); }
public override bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { // First we try to read exp in the prestate if (base.TryInferConditions(obl, codefixesManager, out preConditions)) { // if we succeed, now we should prove it is a precondition according to Sect. 4 of [CCL-VMCAI11] var necessarypreConditions = preConditions.Where(pre => new PreconditionCheckedAllOverThePathsAnalysis(this.obligations, this.MethodDriver).CheckPreconditionAdmissibility(pre.Expr)).AsInferredPreconditions(); obl.NotifySufficientYetNotNecessaryPreconditions(preConditions.Except(necessarypreConditions)); preConditions = necessarypreConditions; return(necessarypreConditions.Any()); } return(false); }
public bool TryInferConditions(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredConditions preConditions) { preConditions = null; foreach (var inferencer in this.inferencers) { if (inferencer == null) { continue; } InferredConditions tmp; if (inferencer.TryInferConditions(obl, codefixesManager, out tmp)) { Contract.Assert(tmp != null); if (preConditions == null) { preConditions = tmp; } else { preConditions.AddRange(tmp); } } } return(preConditions != null); }