private static IQueryable <T> RemoveMethods <T>(IQueryable <T> qry, IEnumerable <string> methodNames) { var methodRemover = new MethodRemover(methodNames); var queryDelegate = Expression.Lambda <Func <IQueryable <T> > >(methodRemover.Visit(qry.Expression)).Compile(); var query = queryDelegate.Invoke(); return(query); }
public void TestMethodRemoval() { Initialise(); var program = GetProgram("ListCopy.dfy"); var members = GetMembers(program); foreach (var member in members) { if (member.Name == "Copy") { var methodRemover = new MethodRemover(program); var removables = methodRemover.FullSimplify(member); Assert.AreEqual(2, removables.RemovableInvariants.Count); Assert.AreEqual(3, removables.RemovableAsserts.Count); var verifier = new SimpleVerifier(); Assert.True(verifier.IsProgramValid(program)); } } }
/// <summary> /// Finds unnecessary annotations throughout the specified members /// in the dafny program and returns information on their locations /// </summary> /// <param name="program">The unresolved dafny program</param> /// <param name="members">The members to be checked for dead annotations</param> /// <returns>A list of DareResult objects</returns> public List <DareResult> ProcessMembers(Program program, List <MemberDecl> members) { Status = StatusEnum.Running; ApplyOptions(); List <DareResult> results; if (members.Count == 1) { var member = members[0]; var methodRemover = new MethodRemover(program); var removables = methodRemover.FullSimplify(member); results = DareController.GetTokens(removables); } else { var DareController = new DareController(program); var removables = DareController.FastRemoveAllInMethods(_stopChecker, members); results = DareController.GetTokens(removables); } RestoreOptions(); Status = StatusEnum.Idle; return(results); }
/// <summary> /// Finds unnecessary annotations throughout the specified members /// in the dafny program and returns information on their locations /// </summary> /// <param name="program">The unresolved dafny program</param> /// <param name="members">The members to be checked for dead annotations</param> /// <returns>A list of DareResult objects</returns> public List<DareResult> ProcessMembers(Program program, List<MemberDecl> members) { Status = StatusEnum.Running; ApplyOptions(); List<DareResult> results; if (members.Count == 1) { var member = members[0]; var methodRemover = new MethodRemover(program); var removables = methodRemover.FullSimplify(member); results = DareController.GetTokens(removables); } else { var DareController = new DareController(program); var removables = DareController.FastRemoveAllInMethods(_stopChecker, members); results = DareController.GetTokens(removables); } RestoreOptions(); Status = StatusEnum.Idle; return results; }