From 47e3c9e215f1c5f51d35a974fccb5bd612eaa8be Mon Sep 17 00:00:00 2001 From: wuestholz Date: Mon, 18 May 2015 23:41:08 +0200 Subject: DafnyExtension: Added experimental support for diagnosing timeouts. --- Source/DafnyExtension/MenuProxy.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Source/DafnyExtension/MenuProxy.cs') diff --git a/Source/DafnyExtension/MenuProxy.cs b/Source/DafnyExtension/MenuProxy.cs index 11e1287f..9ddc8344 100644 --- a/Source/DafnyExtension/MenuProxy.cs +++ b/Source/DafnyExtension/MenuProxy.cs @@ -67,6 +67,15 @@ namespace DafnyLanguage } } + public void DiagnoseTimeouts(IWpfTextView activeTextView) + { + DafnyLanguage.ProgressTagger tagger; + if (activeTextView != null && DafnyLanguage.ProgressTagger.ProgressTaggers.TryGetValue(activeTextView.TextBuffer, out tagger)) + { + tagger.StartVerification(false, true); + } + } + public bool MenuEnabled(IWpfTextView activeTextView) { return activeTextView != null && activeTextView.TextBuffer.ContentType.DisplayName == "dafny"; @@ -80,6 +89,14 @@ namespace DafnyLanguage && resolver.Program != null; } + public bool DiagnoseTimeoutsCommandEnabled(IWpfTextView activeTextView) + { + ResolverTagger resolver; + return activeTextView != null + && DafnyLanguage.ResolverTagger.ResolverTaggers.TryGetValue(activeTextView.TextBuffer, out resolver) + && resolver.VerificationErrors.Any(err => err.Message.Contains("timed out")); + } + public void Compile(IWpfTextView activeTextView) { ResolverTagger resolver; -- cgit v1.2.3 From 5e4bcf8e63a3351dc3f0f9bc6cbff8176adddd8b Mon Sep 17 00:00:00 2001 From: wuestholz Date: Mon, 26 Oct 2015 17:36:25 -0500 Subject: DafnyExtension: Add menu item for automatic induction (mainly developed by Rustan). --- Source/DafnyExtension/DafnyDriver.cs | 7 +++++++ Source/DafnyExtension/MenuProxy.cs | 8 ++++++++ Source/DafnyMenu/DafnyMenu.vsct | 14 ++++++++++++-- Source/DafnyMenu/DafnyMenuPackage.cs | 31 ++++++++++++++++++++++++++++++- Source/DafnyMenu/PkgCmdID.cs | 3 ++- 5 files changed, 59 insertions(+), 4 deletions(-) (limited to 'Source/DafnyExtension/MenuProxy.cs') diff --git a/Source/DafnyExtension/DafnyDriver.cs b/Source/DafnyExtension/DafnyDriver.cs index 2ad05e85..27471d56 100644 --- a/Source/DafnyExtension/DafnyDriver.cs +++ b/Source/DafnyExtension/DafnyDriver.cs @@ -251,6 +251,13 @@ namespace DafnyLanguage return Dafny.DafnyOptions.Clo.VerifySnapshots; } + public static bool ChangeAutomaticInduction() { + var old = Dafny.DafnyOptions.O.Induction; + // toggle between modes 1 and 3 + Dafny.DafnyOptions.O.Induction = old == 1 ? 3 : 1; + return Dafny.DafnyOptions.O.Induction == 3; + } + public static bool Verify(Dafny.Program dafnyProgram, ResolverTagger resolver, string uniqueIdPrefix, string requestId, ErrorReporterDelegate er) { Dafny.Translator translator = new Dafny.Translator(dafnyProgram.reporter); translator.InsertChecksums = true; diff --git a/Source/DafnyExtension/MenuProxy.cs b/Source/DafnyExtension/MenuProxy.cs index 9ddc8344..0e061cd3 100644 --- a/Source/DafnyExtension/MenuProxy.cs +++ b/Source/DafnyExtension/MenuProxy.cs @@ -33,6 +33,14 @@ namespace DafnyLanguage && 0 < DafnyDriver.IncrementalVerificationMode(); } + public bool ToggleAutomaticInduction(IWpfTextView activeTextView) { + return DafnyDriver.ChangeAutomaticInduction(); + } + + public bool AutomaticInductionCommandEnabled(IWpfTextView activeTextView) { + return activeTextView != null; + } + public bool StopVerifierCommandEnabled(IWpfTextView activeTextView) { DafnyLanguage.ProgressTagger tagger; diff --git a/Source/DafnyMenu/DafnyMenu.vsct b/Source/DafnyMenu/DafnyMenu.vsct index 4c9a4913..02ffcf48 100644 --- a/Source/DafnyMenu/DafnyMenu.vsct +++ b/Source/DafnyMenu/DafnyMenu.vsct @@ -112,6 +112,15 @@ + + -