Browse Source

Revert "DepthFirstAstVisitor no longer tries to visit the children of non C#"

This reverts commit 158b5176a2.

The optimization was invalid; the VisitChildren() method is not
necessarily an unnecessary call on leaf nodes because it is virtual.
pull/32/merge
Daniel Grunwald 12 years ago
parent
commit
94f4e15e11
  1. 2
      ICSharpCode.NRefactory.CSharp/Analysis/DefiniteAssignmentAnalysis.cs
  2. 40
      ICSharpCode.NRefactory.CSharp/Ast/DepthFirstAstVisitor.cs

2
ICSharpCode.NRefactory.CSharp/Analysis/DefiniteAssignmentAnalysis.cs

@ -444,8 +444,6 @@ namespace ICSharpCode.NRefactory.CSharp.Analysis @@ -444,8 +444,6 @@ namespace ICSharpCode.NRefactory.CSharp.Analysis
Debug.Assert(data == CleanSpecialValues(data));
DefiniteAssignmentStatus status = data;
for (AstNode child = node.FirstChild; child != null; child = child.NextSibling) {
if (child is WhitespaceNode || child is NewLineNode || child is CSharpTokenNode || child is TextNode)
continue;
analysis.analysisCancellationToken.ThrowIfCancellationRequested();
Debug.Assert(!(child is Statement)); // statements are visited with the CFG, not with the visitor pattern

40
ICSharpCode.NRefactory.CSharp/Ast/DepthFirstAstVisitor.cs

@ -51,22 +51,22 @@ namespace ICSharpCode.NRefactory.CSharp @@ -51,22 +51,22 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual void VisitComment(Comment comment)
{
// leaf
VisitChildren(comment);
}
public virtual void VisitNewLine(NewLineNode newLineNode)
{
// leaf
VisitChildren(newLineNode);
}
public virtual void VisitWhitespace(WhitespaceNode whitespaceNode)
{
// leaf
VisitChildren(whitespaceNode);
}
public virtual void VisitText(TextNode textNode)
{
// leaf
VisitChildren(textNode);
}
public virtual void VisitDocumentationReference (DocumentationReference documentationReference)
@ -86,7 +86,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -86,7 +86,7 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual void VisitCSharpTokenNode (CSharpTokenNode token)
{
// leaf
VisitChildren (token);
}
public virtual void VisitPrimitiveType (PrimitiveType primitiveType)
@ -649,26 +649,22 @@ namespace ICSharpCode.NRefactory.CSharp @@ -649,26 +649,22 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual T VisitComment (Comment comment)
{
// leaf
return default (T);
return VisitChildren (comment);
}
public virtual T VisitNewLine(NewLineNode newLineNode)
{
// leaf
return default (T);
return VisitChildren(newLineNode);
}
public virtual T VisitWhitespace(WhitespaceNode whitespaceNode)
{
// leaf
return default (T);
return VisitChildren(whitespaceNode);
}
public virtual T VisitText(TextNode textNode)
{
// leaf
return default (T);
return VisitChildren(textNode);
}
public virtual T VisitDocumentationReference (DocumentationReference documentationReference)
@ -688,8 +684,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -688,8 +684,7 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual T VisitCSharpTokenNode (CSharpTokenNode token)
{
// leaf
return default (T);
return VisitChildren (token);
}
public virtual T VisitPrimitiveType (PrimitiveType primitiveType)
@ -1252,26 +1247,22 @@ namespace ICSharpCode.NRefactory.CSharp @@ -1252,26 +1247,22 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual S VisitComment (Comment comment, T data)
{
// leaf
return default (S);
return VisitChildren (comment, data);
}
public virtual S VisitNewLine(NewLineNode newLineNode, T data)
{
// leaf
return default (S);
return VisitChildren(newLineNode, data);
}
public virtual S VisitWhitespace(WhitespaceNode whitespaceNode, T data)
{
// leaf
return default (S);
return VisitChildren(whitespaceNode, data);
}
public virtual S VisitText(TextNode textNode, T data)
{
// leaf
return default (S);
return VisitChildren(textNode, data);
}
public virtual S VisitDocumentationReference (DocumentationReference documentationReference, T data)
@ -1291,8 +1282,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -1291,8 +1282,7 @@ namespace ICSharpCode.NRefactory.CSharp
public virtual S VisitCSharpTokenNode (CSharpTokenNode token, T data)
{
// leaf
return default (S);
return VisitChildren (token, data);
}
public virtual S VisitPrimitiveType (PrimitiveType primitiveType, T data)

Loading…
Cancel
Save