summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Unknown <leino@LEINO6.redmond.corp.microsoft.com>2012-08-15 16:40:36 -0700
committerGravatar Unknown <leino@LEINO6.redmond.corp.microsoft.com>2012-08-15 16:40:36 -0700
commitb33530705395567fe24568c65ca68c8663626293 (patch)
tree74cfe8a1de57b14411c8b03204a48790c46e3551
parent643f5cea69a6cfcf1fb65c81ce48e15b68d6058b (diff)
Dafny: fixed some bugs in the newly added DafnyExtension code
-rw-r--r--Dafny/DafnyAst.cs8
-rw-r--r--Util/VS2010/DafnyExtension/DafnyExtension/HoverText.cs14
-rw-r--r--Util/VS2010/DafnyExtension/DafnyExtension/IdentifierTagger.cs5
3 files changed, 13 insertions, 14 deletions
diff --git a/Dafny/DafnyAst.cs b/Dafny/DafnyAst.cs
index 223e0b28..f342ecca 100644
--- a/Dafny/DafnyAst.cs
+++ b/Dafny/DafnyAst.cs
@@ -1818,9 +1818,11 @@ namespace Microsoft.Dafny {
}
public override IEnumerable<Expression> SubExpressions {
get {
- foreach (var rhs in rhss) {
- foreach (var ee in rhs.SubExpressions) {
- yield return ee;
+ if (rhss != null) {
+ foreach (var rhs in rhss) {
+ foreach (var ee in rhs.SubExpressions) {
+ yield return ee;
+ }
}
}
}
diff --git a/Util/VS2010/DafnyExtension/DafnyExtension/HoverText.cs b/Util/VS2010/DafnyExtension/DafnyExtension/HoverText.cs
index de0721ec..be806f5b 100644
--- a/Util/VS2010/DafnyExtension/DafnyExtension/HoverText.cs
+++ b/Util/VS2010/DafnyExtension/DafnyExtension/HoverText.cs
@@ -24,18 +24,16 @@ namespace DafnyLanguage
IBufferTagAggregatorFactoryService aggService = null;
public IQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer) {
- return new OokQuickInfoSource(textBuffer, aggService.CreateTagAggregator<DafnyTokenTag>(textBuffer));
+ return new DafnyQuickInfoSource(textBuffer, aggService.CreateTagAggregator<DafnyTokenTag>(textBuffer));
}
}
- class OokQuickInfoSource : IQuickInfoSource
+ class DafnyQuickInfoSource : IQuickInfoSource
{
private ITagAggregator<DafnyTokenTag> _aggregator;
private ITextBuffer _buffer;
- private bool _disposed = false;
-
- public OokQuickInfoSource(ITextBuffer buffer, ITagAggregator<DafnyTokenTag> aggregator) {
+ public DafnyQuickInfoSource(ITextBuffer buffer, ITagAggregator<DafnyTokenTag> aggregator) {
_aggregator = aggregator;
_buffer = buffer;
}
@@ -43,11 +41,7 @@ namespace DafnyLanguage
public void AugmentQuickInfoSession(IQuickInfoSession session, IList<object> quickInfoContent, out ITrackingSpan applicableToSpan) {
applicableToSpan = null;
- if (_disposed)
- throw new ObjectDisposedException("TestQuickInfoSource");
-
var triggerPoint = (SnapshotPoint)session.GetTriggerPoint(_buffer.CurrentSnapshot);
-
if (triggerPoint == null)
return;
@@ -60,9 +54,7 @@ namespace DafnyLanguage
}
}
}
-
public void Dispose() {
- _disposed = true;
}
}
// --------------------------------- QuickInfo controller ------------------------------------------
diff --git a/Util/VS2010/DafnyExtension/DafnyExtension/IdentifierTagger.cs b/Util/VS2010/DafnyExtension/DafnyExtension/IdentifierTagger.cs
index ab2bc790..bec65954 100644
--- a/Util/VS2010/DafnyExtension/DafnyExtension/IdentifierTagger.cs
+++ b/Util/VS2010/DafnyExtension/DafnyExtension/IdentifierTagger.cs
@@ -192,6 +192,11 @@ namespace DafnyLanguage
foreach (var kase in e.Cases) {
kase.Arguments.ForEach(bv => regions.Add(new IdRegion(bv.tok, bv, true)));
}
+ } else if (expr is Dafny.ChainingExpression) {
+ var e = (Dafny.ChainingExpression)expr;
+ // Do the subexpressions only once (that is, avoid the duplication that occurs in the desugared form of the ChainingExpression)
+ e.Operands.ForEach(ee => ExprRegions(ee, regions));
+ return; // return here, so as to avoid doing the subexpressions below
}
foreach (var ee in expr.SubExpressions) {
ExprRegions(ee, regions);