public FrontendMapAbstractionBuilder RecordTypes(Program p) { mapBuilder = new FrontendMapAbstractionBuilder(); Visit(p); return(mapBuilder.UniqueAbstractionBuilder()); }
public Program Desugar(Program p, FrontendMapAbstractionBuilder mapAbstractionBuilder) { _mapAbstractionBuilder = mapAbstractionBuilder; var desugaredProg = VisitProgram(p); foreach (var f in _mapAbstractionBuilder.AllSelectAndStoreFunctions()) { p.AddTopLevelDeclaration(f); } int tcErrorCount = desugaredProg.Typecheck(); if (tcErrorCount != 0) { throw new Exception("Type check failed after desugaring program"); } return(desugaredProg); }