Skip to content

Commit

Permalink
Move classes into separate files
Browse files Browse the repository at this point in the history
  • Loading branch information
keyboardDrummer committed Apr 25, 2024
1 parent ba61f31 commit 67313fb
Show file tree
Hide file tree
Showing 21 changed files with 4,709 additions and 2,914 deletions.
711 changes: 711 additions & 0 deletions Source/Core/Visitors/ReadOnlyVisitor.cs

Large diffs are not rendered by default.

947 changes: 947 additions & 0 deletions Source/Core/Visitors/StandardVisitor.cs

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions Source/Core/Visitors/VarDeclOnceStandardVisitor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace Microsoft.Boogie;

/// <summary>
/// VarDeclOnceStandardVisitor is like StandardVisitor, except
/// -- it does not visit a variable's declaration when visiting an `IdentifierExpr`, and
/// -- it visits the `where` clause (if any) when visiting a `TypedIdent`.
/// </summary>
public abstract class VarDeclOnceStandardVisitor : StandardVisitor

Check failure on line 8 in Source/Core/Visitors/VarDeclOnceStandardVisitor.cs

View workflow job for this annotation

GitHub Actions / LeanAuto CI

The namespace 'Microsoft.Boogie' already contains a definition for 'VarDeclOnceStandardVisitor'

Check failure on line 8 in Source/Core/Visitors/VarDeclOnceStandardVisitor.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Debug, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'VarDeclOnceStandardVisitor'

Check failure on line 8 in Source/Core/Visitors/VarDeclOnceStandardVisitor.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Release, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'VarDeclOnceStandardVisitor'
{
public override Expr VisitIdentifierExpr(IdentifierExpr node) {
return node;
}

public override TypedIdent VisitTypedIdent(TypedIdent node) {
node = base.VisitTypedIdent(node);
if (node.WhereExpr != null) {
node.WhereExpr = (Expr) Visit(node.WhereExpr);
}
return node;
}
}
40 changes: 40 additions & 0 deletions Source/Core/Visitors/Visitor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using System.Diagnostics.Contracts;

namespace Microsoft.Boogie;

[ContractClass(typeof(VisitorContracts))]
/// <summary>
/// Base for all classes that process the Absy using the visitor pattern.
/// </summary>
public abstract class Visitor

Check failure on line 10 in Source/Core/Visitors/Visitor.cs

View workflow job for this annotation

GitHub Actions / LeanAuto CI

The namespace 'Microsoft.Boogie' already contains a definition for 'Visitor'

Check failure on line 10 in Source/Core/Visitors/Visitor.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Debug, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'Visitor'

Check failure on line 10 in Source/Core/Visitors/Visitor.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Release, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'Visitor'
{
/// <summary>
/// Switches on node.NodeType to call a visitor method that has been specialized for node.
/// </summary>
/// <param name="a">The Absy node to be visited.</param>
/// <returns> Returns null if node is null. Otherwise returns an updated node (possibly a different object).</returns>
public abstract Absy /*!*/ Visit(Absy /*!*/ node);

/// <summary>
/// Transfers the state from one visitor to another. This enables separate visitor instances to cooperative process a single IR.
/// </summary>
public virtual void TransferStateTo(Visitor targetVisitor)
{
}

public virtual IList<Expr> VisitExprSeq(IList<Expr> list)
{
Contract.Requires(list != null);
Contract.Ensures(Contract.Result<IList<Expr>>() != null);
lock (list)
{
for (int i = 0, n = list.Count; i < n; i++)
{
list[i] = (Expr) this.Visit(cce.NonNull(list[i]));
}
}

return list;
}
}
15 changes: 15 additions & 0 deletions Source/Core/Visitors/VisitorContracts.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System.Diagnostics.Contracts;

namespace Microsoft.Boogie;

[ContractClassFor(typeof(Visitor))]
abstract class VisitorContracts : Visitor

Check failure on line 6 in Source/Core/Visitors/VisitorContracts.cs

View workflow job for this annotation

GitHub Actions / LeanAuto CI

The namespace 'Microsoft.Boogie' already contains a definition for 'VisitorContracts'

Check failure on line 6 in Source/Core/Visitors/VisitorContracts.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Debug, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'VisitorContracts'

Check failure on line 6 in Source/Core/Visitors/VisitorContracts.cs

View workflow job for this annotation

GitHub Actions / Boogie CI (Release, batch_mode=False)

The namespace 'Microsoft.Boogie' already contains a definition for 'VisitorContracts'
{
public override Absy Visit(Absy node)
{
Contract.Requires(node != null);
Contract.Ensures(Contract.Result<Absy>() != null);

throw new System.NotImplementedException();
}
}
Loading

0 comments on commit 67313fb

Please sign in to comment.