public ScrubContractClass(ExtractorVisitor parent, Class contractClass, TypeNode originalType) { Contract.Requires(TypeNode.IsCompleteTemplate(contractClass)); Contract.Requires(TypeNode.IsCompleteTemplate(originalType)); this.parent = parent; this.contractClass = contractClass; this.abstractClass = originalType; }
private AutoPropFinder(ExtractorVisitor parent, TypeNode containingType, Expression invariantCondition) { this.parent = parent; this.containingType = HelperMethods.Unspecialize(containingType); this.invariantCondition = invariantCondition; }
public static List<Property> FindAutoProperty(ExtractorVisitor parent, TypeNode containingType, Expression expression, out List<Member> referencedMembers) { var v = new AutoPropFinder(parent, containingType, expression); v.VisitExpression(expression); referencedMembers = v.referencedMembers; return v.foundAutoProperties; }
public static void Transform(ExtractorVisitor parent, Property autoProp, Invariant invariant, out Requires req, out Ensures ens) { var makeReq = new ChangePropertyInvariantIntoRequiresEnsures(parent, autoProp); req = makeReq.MakeRequires(invariant.Condition); var makeEns = new ChangePropertyInvariantIntoRequiresEnsures(parent, autoProp); ens = makeEns.MakeEnsures(invariant.Condition); ens.SourceContext = invariant.SourceContext; ens.PostCondition.SourceContext = ens.SourceContext; ens.ILOffset = invariant.ILOffset; if (ens.SourceConditionText == null) { ens.SourceConditionText = invariant.SourceConditionText; } req.SourceContext = invariant.SourceContext; req.Condition.SourceContext = req.SourceContext; req.ILOffset = invariant.ILOffset; if (req.SourceConditionText == null) { req.SourceConditionText = invariant.SourceConditionText; } }
private ChangePropertyInvariantIntoRequiresEnsures(ExtractorVisitor parent, Property autoProp) : base(autoProp.DeclaringType.DeclaringModule, autoProp.DeclaringType) { this.autoProp = autoProp; this.parent = parent; }