Skip to content

Commit

Permalink
Document Visitor only pushes path on Continue (#1673)
Browse files Browse the repository at this point in the history
* feat(Validation): visitor pushs path only on continue

* fixformat

Co-authored-by: Michael Staib <michael@chillicream.com>
  • Loading branch information
PascalSenn and michaelstaib committed Apr 9, 2020
1 parent 53c41c5 commit 0443581
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
Expand Up @@ -15,9 +15,13 @@ protected DocumentValidatorVisitor(SyntaxVisitorOptions options = default)
protected override IDocumentValidatorContext OnAfterEnter(
ISyntaxNode node,
ISyntaxNode? parent,
IDocumentValidatorContext context)
IDocumentValidatorContext context,
ISyntaxVisitorAction action)
{
context.Path.Push(node);
if (action.IsContinue())
{
context.Path.Push(node);
}
return context;
}

Expand Down
Expand Up @@ -51,7 +51,7 @@ public SyntaxVisitor(SyntaxVisitorOptions options = default)
{
var localContext = OnBeforeEnter(node, parent, context);
var result = Enter(node, localContext);
localContext = OnAfterEnter(node, parent, localContext);
localContext = OnAfterEnter(node, parent, localContext, result);

if (result.Kind == SyntaxVisitorActionKind.Break)
{
Expand All @@ -64,7 +64,7 @@ public SyntaxVisitor(SyntaxVisitorOptions options = default)

localContext = OnBeforeLeave(node, parent, localContext);
result = Leave(node, localContext);
localContext = OnAfterLeave(node, parent, localContext);
localContext = OnAfterLeave(node, parent, localContext, result);
}

return result;
Expand All @@ -89,7 +89,8 @@ public SyntaxVisitor(SyntaxVisitorOptions options = default)
protected virtual TContext OnAfterEnter(
ISyntaxNode node,
ISyntaxNode? parent,
TContext context) =>
TContext context,
ISyntaxVisitorAction action) =>
context;

protected virtual TContext OnBeforeLeave(
Expand All @@ -101,7 +102,8 @@ public SyntaxVisitor(SyntaxVisitorOptions options = default)
protected virtual TContext OnAfterLeave(
ISyntaxNode node,
ISyntaxNode? parent,
TContext context) =>
TContext context,
ISyntaxVisitorAction action) =>
context;
}
}
Expand Up @@ -6,5 +6,15 @@ public static bool IsBreak(this ISyntaxVisitorAction action)
{
return action.Kind == SyntaxVisitorActionKind.Break;
}

public static bool IsContinue(this ISyntaxVisitorAction action)
{
return action.Kind == SyntaxVisitorActionKind.Continue;
}

public static bool IsSkip(this ISyntaxVisitorAction action)
{
return action.Kind == SyntaxVisitorActionKind.Skip;
}
}
}

0 comments on commit 0443581

Please sign in to comment.