Browse Source

fixed for statement.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
d956d29cec
  1. 23
      ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

23
ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

@ -922,6 +922,19 @@ namespace ICSharpCode.NRefactory.CSharp @@ -922,6 +922,19 @@ namespace ICSharpCode.NRefactory.CSharp
return result;
}
void AddStatementOrList (ForStatement forStatement, Statement init, int role)
{
if (init == null)
return;
if (init is StatementList) {
foreach (var stmt in ((StatementList)init).Statements) {
forStatement.AddChild ((DomNode)stmt.Accept (this), role);
}
} else {
forStatement.AddChild ((DomNode)init.Accept (this), role);
}
}
public override object Visit (For forStatement)
{
var result = new ForStatement ();
@ -931,16 +944,18 @@ namespace ICSharpCode.NRefactory.CSharp @@ -931,16 +944,18 @@ namespace ICSharpCode.NRefactory.CSharp
result.AddChild (new CSharpTokenNode (Convert (forStatement.loc), "for".Length), ForStatement.Roles.Keyword);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), ForStatement.Roles.LPar);
if (forStatement.InitStatement != null)
result.AddChild ((DomNode)forStatement.InitStatement.Accept (this), ForStatement.Roles.Initializer);
AddStatementOrList (result, forStatement.InitStatement, ForStatement.Roles.Initializer);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[1]), 1), ForStatement.Roles.Semicolon);
if (forStatement.Test != null)
result.AddChild ((DomNode)forStatement.Test.Accept (this), ForStatement.Roles.Condition);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[2]), 1), ForStatement.Roles.Semicolon);
if (forStatement.Increment != null)
result.AddChild ((DomNode)forStatement.Increment.Accept (this), ForStatement.Roles.Iterator);
AddStatementOrList (result, forStatement.Increment, ForStatement.Roles.Iterator);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[3]), 1), ForStatement.Roles.RPar);

Loading…
Cancel
Save