summaryrefslogtreecommitdiff
path: root/Source/Dafny/Rewriter.cs
diff options
context:
space:
mode:
authorGravatar Clément Pit--Claudel <clement.pitclaudel@live.com>2015-07-13 11:51:04 -0700
committerGravatar Clément Pit--Claudel <clement.pitclaudel@live.com>2015-07-13 11:51:04 -0700
commite4cefb56b4312d7c2bf88d9ba3c3bfd2e00940e9 (patch)
tree421049d979a73859b13bca1172eab1d62a89f674 /Source/Dafny/Rewriter.cs
parente90a947a54044487e8ccf984033b1113eac0d49e (diff)
Register the trigger generator as a a rewriter in the Resolver.
Diffstat (limited to 'Source/Dafny/Rewriter.cs')
-rw-r--r--Source/Dafny/Rewriter.cs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs
index c0a25a82..480b3f61 100644
--- a/Source/Dafny/Rewriter.cs
+++ b/Source/Dafny/Rewriter.cs
@@ -36,6 +36,35 @@ namespace Microsoft.Dafny
}
}
+ public class TriggersRewriter : IRewriter {
+ Resolver Resolver;
+
+ internal TriggersRewriter(Resolver resolver) {
+ Contract.Requires(Resolver != null);
+ this.Resolver = resolver;
+ }
+
+ public void PreResolve(ModuleDefinition m) { }
+
+ public void PostResolve(ModuleDefinition m) {
+ foreach (var decl in ModuleDefinition.AllCallables(m.TopLevelDecls)) {
+ if (decl is Function) {
+ var function = (Function)decl;
+ TriggerGenerator.AddTriggers(function.Ens, Resolver);
+ TriggerGenerator.AddTriggers(function.Req, Resolver);
+ TriggerGenerator.AddTriggers(function.Body, Resolver);
+ } else if (decl is Method) {
+ var method = (Method)decl;
+ TriggerGenerator.AddTriggers(method.Ens, Resolver);
+ TriggerGenerator.AddTriggers(method.Req, Resolver);
+ TriggerGenerator.AddTriggers(method.Body, Resolver);
+ }
+ }
+ }
+
+ public void PostCyclicityResolve(ModuleDefinition m) { }
+ }
+
/// <summary>
/// AutoContracts is an experimental feature that will fill much of the dynamic-frames boilerplate
/// into a class. From the user's perspective, what needs to be done is simply: