Browse Source

Fixed some NRefactory bugs, added NRefactory unit tests.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1080 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
6c0473638e
  1. 23
      src/Libraries/NRefactory/NRefactoryASTGenerator/Main.cs
  2. 46
      src/Libraries/NRefactory/Project/Src/Output/AbstractOutputFormatter.cs
  3. 17
      src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs
  4. 18
      src/Libraries/NRefactory/Project/Src/Output/CSharp/OutputFormatter.cs
  5. 4
      src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs
  6. 28
      src/Libraries/NRefactory/Project/Src/Output/SpecialNodesInserter.cs
  7. 8
      src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputFormatter.cs
  8. 36
      src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs
  9. 5
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/BlockStatement.cs
  10. 177
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs
  11. 478
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractAstTransformer.cs
  12. 37
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/PrefixFieldsVisitor.cs
  13. 33
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetConstructsConvertVisitor.cs
  14. 1
      src/Libraries/NRefactory/Test/NRefactoryTests.csproj
  15. 93
      src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs
  16. 62
      src/Libraries/NRefactory/Test/Output/CSharp/VBToCSharpConverterTest.cs
  17. 67
      src/Libraries/NRefactory/Test/Output/SpecialOutputVisitor.cs
  18. 51
      src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs

23
src/Libraries/NRefactory/NRefactoryASTGenerator/Main.cs

@ -223,13 +223,7 @@ namespace NRefactoryASTGenerator @@ -223,13 +223,7 @@ namespace NRefactoryASTGenerator
CodeVariableReferenceExpression var = new CodeVariableReferenceExpression(GetFieldName(type.Name));
assertions.Add(AssertIsNotNull(var));
Type t = type;
do {
foreach (FieldInfo field in t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) {
AddVisitCode(m, field, var, assertions, transformer);
}
t = t.BaseType;
} while (t != null);
AddFieldVisitCode(m, type, var, assertions, transformer);
if (type.GetCustomAttributes(typeof(HasChildrenAttribute), true).Length > 0) {
if (transformer) {
@ -262,6 +256,21 @@ namespace NRefactoryASTGenerator @@ -262,6 +256,21 @@ namespace NRefactoryASTGenerator
return td;
}
static void AddFieldVisitCode(CodeMemberMethod m, Type type, CodeVariableReferenceExpression var, List<CodeStatement> assertions, bool transformer)
{
if (type != null) {
if (type.BaseType != typeof(StatementWithEmbeddedStatement)) {
AddFieldVisitCode(m, type.BaseType, var, assertions, transformer);
}
foreach (FieldInfo field in type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) {
AddVisitCode(m, field, var, assertions, transformer);
}
if (type.BaseType == typeof(StatementWithEmbeddedStatement)) {
AddFieldVisitCode(m, type.BaseType, var, assertions, transformer);
}
}
}
static CodeStatement AssertIsNotNull(CodeExpression expr)
{
CodeExpression bop = new CodeBinaryOperatorExpression(expr,

46
src/Libraries/NRefactory/Project/Src/Output/AbstractOutputFormatter.cs

@ -92,6 +92,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -92,6 +92,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
int lastLineStart = 0;
int lineBeforeLastStart = 0;
public bool LastCharacterIsNewLine {
get {
@ -102,6 +103,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -102,6 +103,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public virtual void NewLine()
{
if (DoNewLine) {
if (!LastCharacterIsNewLine) {
lineBeforeLastStart = lastLineStart;
}
text.AppendLine();
lastLineStart = text.Length;
}
@ -111,19 +115,31 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -111,19 +115,31 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
{
}
protected void WriteInPreviousLine(string txt)
protected void WriteInPreviousLine(string txt, bool forceWriteInPreviousBlock)
{
if (LastCharacterIsNewLine) {
Indent();
text.AppendLine(txt);
lastLineStart = text.Length;
} else {
string lastLine = text.ToString(lastLineStart, text.Length - lastLineStart);
text.Remove(lastLineStart, text.Length - lastLineStart);
Indent();
text.AppendLine(txt);
bool lastCharacterWasNewLine = LastCharacterIsNewLine;
if (lastCharacterWasNewLine) {
if (forceWriteInPreviousBlock == false) {
Indent();
text.AppendLine(txt);
lineBeforeLastStart = lastLineStart;
lastLineStart = text.Length;
return;
}
lastLineStart = lineBeforeLastStart;
}
string lastLine = text.ToString(lastLineStart, text.Length - lastLineStart);
text.Remove(lastLineStart, text.Length - lastLineStart);
if (forceWriteInPreviousBlock) ++indentationLevel;
Indent();
if (forceWriteInPreviousBlock) --indentationLevel;
text.AppendLine(txt);
lineBeforeLastStart = lastLineStart;
lastLineStart = text.Length;
text.Append(lastLine);
if (lastCharacterWasNewLine) {
lineBeforeLastStart = lastLineStart;
lastLineStart = text.Length;
text.Append(lastLine);
}
}
@ -135,14 +151,14 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -135,14 +151,14 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
}
public abstract void PrintComment(Comment comment);
public abstract void PrintComment(Comment comment, bool forceWriteInPreviousBlock);
public virtual void PrintPreProcessingDirective(PreProcessingDirective directive)
public virtual void PrintPreProcessingDirective(PreProcessingDirective directive, bool forceWriteInPreviousBlock)
{
if (string.IsNullOrEmpty(directive.Arg))
WriteInPreviousLine(directive.Cmd);
WriteInPreviousLine(directive.Cmd, forceWriteInPreviousBlock);
else
WriteInPreviousLine(directive.Cmd + " " + directive.Arg);
WriteInPreviousLine(directive.Cmd + " " + directive.Arg, forceWriteInPreviousBlock);
}
public abstract void PrintToken(int token);

17
src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs

@ -95,8 +95,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -95,8 +95,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return "float";
case "System.Decimal":
return "decimal";
case "System.DateTime":
return "System.DateTime";
case "System.Int64":
return "long";
case "System.Int32":
@ -725,7 +723,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -725,7 +723,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Indent();
OutputModifier(destructorDeclaration.Modifier);
outputFormatter.PrintToken(Tokens.BitwiseComplement);
outputFormatter.PrintIdentifier(destructorDeclaration.Name);
if (currentType != null)
outputFormatter.PrintIdentifier(currentType.Name);
else
outputFormatter.PrintIdentifier(destructorDeclaration.Name);
if (prettyPrintOptions.BeforeConstructorDeclarationParentheses) {
outputFormatter.Space();
}
@ -881,15 +882,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -881,15 +882,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(EraseStatement eraseStatement, object data)
{
foreach (Expression expr in eraseStatement.Expressions) {
outputFormatter.Indent();
expr.AcceptVisitor(this, data);
for (int i = 0; i < eraseStatement.Expressions.Count; i++) {
if (i > 0) {
outputFormatter.NewLine();
outputFormatter.Indent();
}
nodeTracker.TrackedVisit(eraseStatement.Expressions[i], data);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Assign);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Null);
outputFormatter.PrintToken(Tokens.Semicolon);
outputFormatter.NewLine();
}
return null;
}

18
src/Libraries/NRefactory/Project/Src/Output/CSharp/OutputFormatter.cs

@ -114,19 +114,23 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -114,19 +114,23 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
PrintText(identifier);
}
public override void PrintComment(Comment comment)
public override void PrintComment(Comment comment, bool forceWriteInPreviousBlock)
{
switch (comment.CommentType) {
case CommentType.Block:
PrintText("/*");
PrintText(comment.CommentText);
PrintText("*/");
case CommentType.Block:
if (forceWriteInPreviousBlock) {
WriteInPreviousLine("/*" + comment.CommentText + "*/", forceWriteInPreviousBlock);
} else {
PrintText("/*");
PrintText(comment.CommentText);
PrintText("*/");
}
break;
case CommentType.Documentation:
WriteInPreviousLine("///" + comment.CommentText);
WriteInPreviousLine("///" + comment.CommentText, forceWriteInPreviousBlock);
break;
default:
WriteInPreviousLine("//" + comment.CommentText);
WriteInPreviousLine("//" + comment.CommentText, forceWriteInPreviousBlock);
break;
}
}

4
src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
void NewLine();
void Indent();
void PrintComment(Comment comment);
void PrintPreProcessingDirective(PreProcessingDirective directive);
void PrintComment(Comment comment, bool forceWriteInPreviousBlock);
void PrintPreProcessingDirective(PreProcessingDirective directive, bool forceWriteInPreviousBlock);
}
}

28
src/Libraries/NRefactory/Project/Src/Output/SpecialNodesInserter.cs

@ -22,6 +22,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -22,6 +22,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
this.formatter = formatter;
}
public bool ForceWriteInPreviousLine;
public object Visit(ISpecial special, object data)
{
Console.WriteLine("Warning: SpecialOutputVisitor.Visit(ISpecial) called with " + special);
@ -36,13 +38,13 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -36,13 +38,13 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(Comment special, object data)
{
formatter.PrintComment(special);
formatter.PrintComment(special, ForceWriteInPreviousLine);
return data;
}
public object Visit(PreProcessingDirective special, object data)
{
formatter.PrintPreProcessingDirective(special);
formatter.PrintPreProcessingDirective(special, ForceWriteInPreviousLine);
return data;
}
}
@ -50,7 +52,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -50,7 +52,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
/// <summary>
/// This class inserts specials between INodes.
/// </summary>
public class SpecialNodesInserter
public class SpecialNodesInserter : IDisposable
{
IEnumerator<ISpecial> enumerator;
SpecialOutputVisitor visitor;
@ -84,7 +86,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -84,7 +86,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
/// </summary>
public void AcceptNodeEnd(INode node)
{
visitor.ForceWriteInPreviousLine = true;
AcceptPoint(node.EndLocation);
visitor.ForceWriteInPreviousLine = false;
}
/// <summary>
@ -111,5 +115,23 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -111,5 +115,23 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
WriteCurrent();
}
}
void IDisposable.Dispose()
{
Finish();
}
/// <summary>
/// Registers a new SpecialNodesInserter with the output visitor.
/// Make sure to call Finish() on the returned SpecialNodesInserter when the output
/// is finished.
/// </summary>
public static SpecialNodesInserter Install(IEnumerable<ISpecial> specials, IOutputASTVisitor outputVisitor)
{
SpecialNodesInserter sni = new SpecialNodesInserter(specials, new SpecialOutputVisitor(outputVisitor.OutputFormatter));
outputVisitor.NodeTracker.NodeVisiting += sni.AcceptNodeStart;
outputVisitor.NodeTracker.NodeVisited += sni.AcceptNodeEnd;
return sni;
}
}
}

8
src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputFormatter.cs

@ -42,17 +42,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -42,17 +42,17 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
}
public override void PrintComment(Comment comment)
public override void PrintComment(Comment comment, bool forceWriteInPreviousLine)
{
switch (comment.CommentType) {
case CommentType.Block:
WriteInPreviousLine("'" + comment.CommentText.Replace("\n", "\n'"));
WriteInPreviousLine("'" + comment.CommentText.Replace("\n", "\n'"), forceWriteInPreviousLine);
break;
case CommentType.Documentation:
WriteInPreviousLine("'''" + comment.CommentText);
WriteInPreviousLine("'''" + comment.CommentText, forceWriteInPreviousLine);
break;
default:
WriteInPreviousLine("'" + comment.CommentText);
WriteInPreviousLine("'" + comment.CommentText, forceWriteInPreviousLine);
break;
}
}

36
src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs

@ -561,7 +561,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -561,7 +561,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Property);
outputFormatter.Space();
outputFormatter.NewLine();
}
@ -867,7 +866,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -867,7 +866,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Sub);
outputFormatter.Space();
outputFormatter.NewLine();
return null;
@ -939,19 +937,36 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -939,19 +937,36 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public object Visit(DestructorDeclaration destructorDeclaration, object data)
{
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Overrides);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Protected);
outputFormatter.Space();
outputFormatter.PrintIdentifier("Finalize");
outputFormatter.PrintToken(Tokens.OpenParenthesis);
outputFormatter.PrintToken(Tokens.CloseParenthesis);
outputFormatter.PrintText("Protected Overrides Sub Finalize()");
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
exitTokenStack.Push(Tokens.Sub);
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Try);
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
nodeTracker.TrackedVisit(destructorDeclaration.Body, data);
--outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Finally);
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintText("MyBase.Finalize()");
outputFormatter.NewLine();
--outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Try);
outputFormatter.NewLine();
exitTokenStack.Pop();
--outputFormatter.IndentationLevel;
@ -959,7 +974,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -959,7 +974,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Sub);
outputFormatter.Space();
outputFormatter.NewLine();
return null;

5
src/Libraries/NRefactory/Project/Src/Parser/AST/General/BlockStatement.cs

@ -21,11 +21,6 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -21,11 +21,6 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
public static BlockStatement CheckNull(BlockStatement blockStatement)
{
return blockStatement == null ? NullBlockStatement.Instance : blockStatement;
}
public override object AcceptVisitor(IAstVisitor visitor, object data)
{
return visitor.Visit(this, data);

177
src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs

@ -181,21 +181,20 @@ namespace ICSharpCode.NRefactory.Parser { @@ -181,21 +181,20 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(ConstructorDeclaration constructorDeclaration, object data) {
Debug.Assert((constructorDeclaration != null));
Debug.Assert((constructorDeclaration.Attributes != null));
Debug.Assert((constructorDeclaration.Parameters != null));
Debug.Assert((constructorDeclaration.ConstructorInitializer != null));
Debug.Assert((constructorDeclaration.Body != null));
Debug.Assert((constructorDeclaration.Parameters != null));
Debug.Assert((constructorDeclaration.Attributes != null));
constructorDeclaration.ConstructorInitializer.AcceptVisitor(this, data);
constructorDeclaration.Body.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in constructorDeclaration.Parameters) {
foreach (AttributeSection o in constructorDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in constructorDeclaration.Attributes) {
foreach (ParameterDeclarationExpression o in constructorDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
constructorDeclaration.ConstructorInitializer.AcceptVisitor(this, data);
return constructorDeclaration.Body.AcceptVisitor(this, data);
}
public virtual object Visit(ConstructorInitializer constructorInitializer, object data) {
@ -215,19 +214,18 @@ namespace ICSharpCode.NRefactory.Parser { @@ -215,19 +214,18 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(DeclareDeclaration declareDeclaration, object data) {
Debug.Assert((declareDeclaration != null));
Debug.Assert((declareDeclaration.TypeReference != null));
Debug.Assert((declareDeclaration.Parameters != null));
Debug.Assert((declareDeclaration.Attributes != null));
declareDeclaration.TypeReference.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in declareDeclaration.Parameters) {
Debug.Assert((declareDeclaration.Parameters != null));
Debug.Assert((declareDeclaration.TypeReference != null));
foreach (AttributeSection o in declareDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in declareDeclaration.Attributes) {
foreach (ParameterDeclarationExpression o in declareDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
return declareDeclaration.TypeReference.AcceptVisitor(this, data);
}
public virtual object Visit(DefaultValueExpression defaultValueExpression, object data) {
@ -238,20 +236,20 @@ namespace ICSharpCode.NRefactory.Parser { @@ -238,20 +236,20 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(DelegateDeclaration delegateDeclaration, object data) {
Debug.Assert((delegateDeclaration != null));
Debug.Assert((delegateDeclaration.Attributes != null));
Debug.Assert((delegateDeclaration.ReturnType != null));
Debug.Assert((delegateDeclaration.Parameters != null));
Debug.Assert((delegateDeclaration.Templates != null));
Debug.Assert((delegateDeclaration.Attributes != null));
delegateDeclaration.ReturnType.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in delegateDeclaration.Parameters) {
foreach (AttributeSection o in delegateDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (TemplateDefinition o in delegateDeclaration.Templates) {
delegateDeclaration.ReturnType.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in delegateDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in delegateDeclaration.Attributes) {
foreach (TemplateDefinition o in delegateDeclaration.Templates) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -260,14 +258,13 @@ namespace ICSharpCode.NRefactory.Parser { @@ -260,14 +258,13 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(DestructorDeclaration destructorDeclaration, object data) {
Debug.Assert((destructorDeclaration != null));
Debug.Assert((destructorDeclaration.Body != null));
Debug.Assert((destructorDeclaration.Attributes != null));
destructorDeclaration.Body.AcceptVisitor(this, data);
Debug.Assert((destructorDeclaration.Body != null));
foreach (AttributeSection o in destructorDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
return destructorDeclaration.Body.AcceptVisitor(this, data);
}
public virtual object Visit(DirectionExpression directionExpression, object data) {
@ -320,15 +317,15 @@ namespace ICSharpCode.NRefactory.Parser { @@ -320,15 +317,15 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(EventAddRegion eventAddRegion, object data) {
Debug.Assert((eventAddRegion != null));
Debug.Assert((eventAddRegion.Attributes != null));
Debug.Assert((eventAddRegion.Block != null));
Debug.Assert((eventAddRegion.Parameters != null));
Debug.Assert((eventAddRegion.Attributes != null));
eventAddRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventAddRegion.Parameters) {
foreach (AttributeSection o in eventAddRegion.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in eventAddRegion.Attributes) {
eventAddRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventAddRegion.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -337,43 +334,42 @@ namespace ICSharpCode.NRefactory.Parser { @@ -337,43 +334,42 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(EventDeclaration eventDeclaration, object data) {
Debug.Assert((eventDeclaration != null));
Debug.Assert((eventDeclaration.Attributes != null));
Debug.Assert((eventDeclaration.Parameters != null));
Debug.Assert((eventDeclaration.TypeReference != null));
Debug.Assert((eventDeclaration.InterfaceImplementations != null));
Debug.Assert((eventDeclaration.AddRegion != null));
Debug.Assert((eventDeclaration.RemoveRegion != null));
Debug.Assert((eventDeclaration.RaiseRegion != null));
Debug.Assert((eventDeclaration.Parameters != null));
Debug.Assert((eventDeclaration.Attributes != null));
eventDeclaration.TypeReference.AcceptVisitor(this, data);
foreach (InterfaceImplementation o in eventDeclaration.InterfaceImplementations) {
foreach (AttributeSection o in eventDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
eventDeclaration.AddRegion.AcceptVisitor(this, data);
eventDeclaration.RemoveRegion.AcceptVisitor(this, data);
eventDeclaration.RaiseRegion.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in eventDeclaration.Attributes) {
eventDeclaration.TypeReference.AcceptVisitor(this, data);
foreach (InterfaceImplementation o in eventDeclaration.InterfaceImplementations) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
eventDeclaration.AddRegion.AcceptVisitor(this, data);
eventDeclaration.RemoveRegion.AcceptVisitor(this, data);
return eventDeclaration.RaiseRegion.AcceptVisitor(this, data);
}
public virtual object Visit(EventRaiseRegion eventRaiseRegion, object data) {
Debug.Assert((eventRaiseRegion != null));
Debug.Assert((eventRaiseRegion.Attributes != null));
Debug.Assert((eventRaiseRegion.Block != null));
Debug.Assert((eventRaiseRegion.Parameters != null));
Debug.Assert((eventRaiseRegion.Attributes != null));
eventRaiseRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventRaiseRegion.Parameters) {
foreach (AttributeSection o in eventRaiseRegion.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in eventRaiseRegion.Attributes) {
eventRaiseRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventRaiseRegion.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -382,15 +378,15 @@ namespace ICSharpCode.NRefactory.Parser { @@ -382,15 +378,15 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(EventRemoveRegion eventRemoveRegion, object data) {
Debug.Assert((eventRemoveRegion != null));
Debug.Assert((eventRemoveRegion.Attributes != null));
Debug.Assert((eventRemoveRegion.Block != null));
Debug.Assert((eventRemoveRegion.Parameters != null));
Debug.Assert((eventRemoveRegion.Attributes != null));
eventRemoveRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventRemoveRegion.Parameters) {
foreach (AttributeSection o in eventRemoveRegion.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in eventRemoveRegion.Attributes) {
eventRemoveRegion.Block.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in eventRemoveRegion.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -404,15 +400,15 @@ namespace ICSharpCode.NRefactory.Parser { @@ -404,15 +400,15 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(FieldDeclaration fieldDeclaration, object data) {
Debug.Assert((fieldDeclaration != null));
Debug.Assert((fieldDeclaration.Attributes != null));
Debug.Assert((fieldDeclaration.TypeReference != null));
Debug.Assert((fieldDeclaration.Fields != null));
Debug.Assert((fieldDeclaration.Attributes != null));
fieldDeclaration.TypeReference.AcceptVisitor(this, data);
foreach (VariableDeclaration o in fieldDeclaration.Fields) {
foreach (AttributeSection o in fieldDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in fieldDeclaration.Attributes) {
fieldDeclaration.TypeReference.AcceptVisitor(this, data);
foreach (VariableDeclaration o in fieldDeclaration.Fields) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -527,12 +523,16 @@ namespace ICSharpCode.NRefactory.Parser { @@ -527,12 +523,16 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(IndexerDeclaration indexerDeclaration, object data) {
Debug.Assert((indexerDeclaration != null));
Debug.Assert((indexerDeclaration.Attributes != null));
Debug.Assert((indexerDeclaration.Parameters != null));
Debug.Assert((indexerDeclaration.InterfaceImplementations != null));
Debug.Assert((indexerDeclaration.TypeReference != null));
Debug.Assert((indexerDeclaration.GetRegion != null));
Debug.Assert((indexerDeclaration.SetRegion != null));
Debug.Assert((indexerDeclaration.Attributes != null));
foreach (AttributeSection o in indexerDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ParameterDeclarationExpression o in indexerDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
@ -543,12 +543,7 @@ namespace ICSharpCode.NRefactory.Parser { @@ -543,12 +543,7 @@ namespace ICSharpCode.NRefactory.Parser {
}
indexerDeclaration.TypeReference.AcceptVisitor(this, data);
indexerDeclaration.GetRegion.AcceptVisitor(this, data);
indexerDeclaration.SetRegion.AcceptVisitor(this, data);
foreach (AttributeSection o in indexerDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
return indexerDeclaration.SetRegion.AcceptVisitor(this, data);
}
public virtual object Visit(IndexerExpression indexerExpression, object data) {
@ -618,27 +613,27 @@ namespace ICSharpCode.NRefactory.Parser { @@ -618,27 +613,27 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(MethodDeclaration methodDeclaration, object data) {
Debug.Assert((methodDeclaration != null));
Debug.Assert((methodDeclaration.Attributes != null));
Debug.Assert((methodDeclaration.Parameters != null));
Debug.Assert((methodDeclaration.TypeReference != null));
Debug.Assert((methodDeclaration.Body != null));
Debug.Assert((methodDeclaration.InterfaceImplementations != null));
Debug.Assert((methodDeclaration.Templates != null));
Debug.Assert((methodDeclaration.Parameters != null));
Debug.Assert((methodDeclaration.Attributes != null));
methodDeclaration.TypeReference.AcceptVisitor(this, data);
methodDeclaration.Body.AcceptVisitor(this, data);
foreach (InterfaceImplementation o in methodDeclaration.InterfaceImplementations) {
foreach (AttributeSection o in methodDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (TemplateDefinition o in methodDeclaration.Templates) {
foreach (ParameterDeclarationExpression o in methodDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ParameterDeclarationExpression o in methodDeclaration.Parameters) {
methodDeclaration.TypeReference.AcceptVisitor(this, data);
methodDeclaration.Body.AcceptVisitor(this, data);
foreach (InterfaceImplementation o in methodDeclaration.InterfaceImplementations) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in methodDeclaration.Attributes) {
foreach (TemplateDefinition o in methodDeclaration.Templates) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -676,14 +671,18 @@ namespace ICSharpCode.NRefactory.Parser { @@ -676,14 +671,18 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(OperatorDeclaration operatorDeclaration, object data) {
Debug.Assert((operatorDeclaration != null));
Debug.Assert((operatorDeclaration.ReturnTypeAttributes != null));
Debug.Assert((operatorDeclaration.Attributes != null));
Debug.Assert((operatorDeclaration.Parameters != null));
Debug.Assert((operatorDeclaration.TypeReference != null));
Debug.Assert((operatorDeclaration.Body != null));
Debug.Assert((operatorDeclaration.InterfaceImplementations != null));
Debug.Assert((operatorDeclaration.Templates != null));
Debug.Assert((operatorDeclaration.Parameters != null));
Debug.Assert((operatorDeclaration.Attributes != null));
foreach (AttributeSection o in operatorDeclaration.ReturnTypeAttributes) {
Debug.Assert((operatorDeclaration.ReturnTypeAttributes != null));
foreach (AttributeSection o in operatorDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ParameterDeclarationExpression o in operatorDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -697,11 +696,7 @@ namespace ICSharpCode.NRefactory.Parser { @@ -697,11 +696,7 @@ namespace ICSharpCode.NRefactory.Parser {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ParameterDeclarationExpression o in operatorDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in operatorDeclaration.Attributes) {
foreach (AttributeSection o in operatorDeclaration.ReturnTypeAttributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -745,53 +740,51 @@ namespace ICSharpCode.NRefactory.Parser { @@ -745,53 +740,51 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(PropertyDeclaration propertyDeclaration, object data) {
Debug.Assert((propertyDeclaration != null));
Debug.Assert((propertyDeclaration.Attributes != null));
Debug.Assert((propertyDeclaration.Parameters != null));
Debug.Assert((propertyDeclaration.InterfaceImplementations != null));
Debug.Assert((propertyDeclaration.TypeReference != null));
Debug.Assert((propertyDeclaration.GetRegion != null));
Debug.Assert((propertyDeclaration.SetRegion != null));
Debug.Assert((propertyDeclaration.Parameters != null));
Debug.Assert((propertyDeclaration.Attributes != null));
foreach (InterfaceImplementation o in propertyDeclaration.InterfaceImplementations) {
foreach (AttributeSection o in propertyDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
propertyDeclaration.TypeReference.AcceptVisitor(this, data);
propertyDeclaration.GetRegion.AcceptVisitor(this, data);
propertyDeclaration.SetRegion.AcceptVisitor(this, data);
foreach (ParameterDeclarationExpression o in propertyDeclaration.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in propertyDeclaration.Attributes) {
foreach (InterfaceImplementation o in propertyDeclaration.InterfaceImplementations) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
propertyDeclaration.TypeReference.AcceptVisitor(this, data);
propertyDeclaration.GetRegion.AcceptVisitor(this, data);
return propertyDeclaration.SetRegion.AcceptVisitor(this, data);
}
public virtual object Visit(PropertyGetRegion propertyGetRegion, object data) {
Debug.Assert((propertyGetRegion != null));
Debug.Assert((propertyGetRegion.Block != null));
Debug.Assert((propertyGetRegion.Attributes != null));
propertyGetRegion.Block.AcceptVisitor(this, data);
Debug.Assert((propertyGetRegion.Block != null));
foreach (AttributeSection o in propertyGetRegion.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
return propertyGetRegion.Block.AcceptVisitor(this, data);
}
public virtual object Visit(PropertySetRegion propertySetRegion, object data) {
Debug.Assert((propertySetRegion != null));
Debug.Assert((propertySetRegion.Parameters != null));
Debug.Assert((propertySetRegion.Block != null));
Debug.Assert((propertySetRegion.Attributes != null));
foreach (ParameterDeclarationExpression o in propertySetRegion.Parameters) {
Debug.Assert((propertySetRegion.Block != null));
Debug.Assert((propertySetRegion.Parameters != null));
foreach (AttributeSection o in propertySetRegion.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
propertySetRegion.Block.AcceptVisitor(this, data);
foreach (AttributeSection o in propertySetRegion.Attributes) {
foreach (ParameterDeclarationExpression o in propertySetRegion.Parameters) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -886,13 +879,13 @@ namespace ICSharpCode.NRefactory.Parser { @@ -886,13 +879,13 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(TemplateDefinition templateDefinition, object data) {
Debug.Assert((templateDefinition != null));
Debug.Assert((templateDefinition.Bases != null));
Debug.Assert((templateDefinition.Attributes != null));
foreach (TypeReference o in templateDefinition.Bases) {
Debug.Assert((templateDefinition.Bases != null));
foreach (AttributeSection o in templateDefinition.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in templateDefinition.Attributes) {
foreach (TypeReference o in templateDefinition.Bases) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
@ -925,18 +918,18 @@ namespace ICSharpCode.NRefactory.Parser { @@ -925,18 +918,18 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(TypeDeclaration typeDeclaration, object data) {
Debug.Assert((typeDeclaration != null));
Debug.Assert((typeDeclaration.Attributes != null));
Debug.Assert((typeDeclaration.BaseTypes != null));
Debug.Assert((typeDeclaration.Templates != null));
Debug.Assert((typeDeclaration.Attributes != null));
foreach (TypeReference o in typeDeclaration.BaseTypes) {
foreach (AttributeSection o in typeDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (TemplateDefinition o in typeDeclaration.Templates) {
foreach (TypeReference o in typeDeclaration.BaseTypes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (AttributeSection o in typeDeclaration.Attributes) {
foreach (TemplateDefinition o in typeDeclaration.Templates) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}

478
src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractAstTransformer.cs

@ -322,38 +322,38 @@ namespace ICSharpCode.NRefactory.Parser { @@ -322,38 +322,38 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(ConstructorDeclaration constructorDeclaration, object data) {
Debug.Assert((constructorDeclaration != null));
Debug.Assert((constructorDeclaration.Attributes != null));
Debug.Assert((constructorDeclaration.Parameters != null));
Debug.Assert((constructorDeclaration.ConstructorInitializer != null));
Debug.Assert((constructorDeclaration.Body != null));
Debug.Assert((constructorDeclaration.Parameters != null));
Debug.Assert((constructorDeclaration.Attributes != null));
nodeStack.Push(constructorDeclaration.ConstructorInitializer);
constructorDeclaration.ConstructorInitializer.AcceptVisitor(this, data);
constructorDeclaration.ConstructorInitializer = ((ConstructorInitializer)(nodeStack.Pop()));
nodeStack.Push(constructorDeclaration.Body);
constructorDeclaration.Body.AcceptVisitor(this, data);
constructorDeclaration.Body = ((BlockStatement)(nodeStack.Pop()));
for (int i = 0; i < constructorDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = constructorDeclaration.Parameters[i];
for (int i = 0; i < constructorDeclaration.Attributes.Count; i++) {
AttributeSection o = constructorDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
constructorDeclaration.Parameters.RemoveAt(i--);
constructorDeclaration.Attributes.RemoveAt(i--);
else
constructorDeclaration.Parameters[i] = o;
constructorDeclaration.Attributes[i] = o;
}
for (int i = 0; i < constructorDeclaration.Attributes.Count; i++) {
AttributeSection o = constructorDeclaration.Attributes[i];
for (int i = 0; i < constructorDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = constructorDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
constructorDeclaration.Attributes.RemoveAt(i--);
constructorDeclaration.Parameters.RemoveAt(i--);
else
constructorDeclaration.Attributes[i] = o;
constructorDeclaration.Parameters[i] = o;
}
nodeStack.Push(constructorDeclaration.ConstructorInitializer);
constructorDeclaration.ConstructorInitializer.AcceptVisitor(this, data);
constructorDeclaration.ConstructorInitializer = ((ConstructorInitializer)(nodeStack.Pop()));
nodeStack.Push(constructorDeclaration.Body);
constructorDeclaration.Body.AcceptVisitor(this, data);
constructorDeclaration.Body = ((BlockStatement)(nodeStack.Pop()));
return null;
}
@ -381,34 +381,34 @@ namespace ICSharpCode.NRefactory.Parser { @@ -381,34 +381,34 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(DeclareDeclaration declareDeclaration, object data) {
Debug.Assert((declareDeclaration != null));
Debug.Assert((declareDeclaration.TypeReference != null));
Debug.Assert((declareDeclaration.Parameters != null));
Debug.Assert((declareDeclaration.Attributes != null));
nodeStack.Push(declareDeclaration.TypeReference);
declareDeclaration.TypeReference.AcceptVisitor(this, data);
declareDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
for (int i = 0; i < declareDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = declareDeclaration.Parameters[i];
Debug.Assert((declareDeclaration.Parameters != null));
Debug.Assert((declareDeclaration.TypeReference != null));
for (int i = 0; i < declareDeclaration.Attributes.Count; i++) {
AttributeSection o = declareDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
declareDeclaration.Parameters.RemoveAt(i--);
declareDeclaration.Attributes.RemoveAt(i--);
else
declareDeclaration.Parameters[i] = o;
declareDeclaration.Attributes[i] = o;
}
for (int i = 0; i < declareDeclaration.Attributes.Count; i++) {
AttributeSection o = declareDeclaration.Attributes[i];
for (int i = 0; i < declareDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = declareDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
declareDeclaration.Attributes.RemoveAt(i--);
declareDeclaration.Parameters.RemoveAt(i--);
else
declareDeclaration.Attributes[i] = o;
declareDeclaration.Parameters[i] = o;
}
nodeStack.Push(declareDeclaration.TypeReference);
declareDeclaration.TypeReference.AcceptVisitor(this, data);
declareDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
return null;
}
@ -423,10 +423,21 @@ namespace ICSharpCode.NRefactory.Parser { @@ -423,10 +423,21 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(DelegateDeclaration delegateDeclaration, object data) {
Debug.Assert((delegateDeclaration != null));
Debug.Assert((delegateDeclaration.Attributes != null));
Debug.Assert((delegateDeclaration.ReturnType != null));
Debug.Assert((delegateDeclaration.Parameters != null));
Debug.Assert((delegateDeclaration.Templates != null));
Debug.Assert((delegateDeclaration.Attributes != null));
for (int i = 0; i < delegateDeclaration.Attributes.Count; i++) {
AttributeSection o = delegateDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
delegateDeclaration.Attributes.RemoveAt(i--);
else
delegateDeclaration.Attributes[i] = o;
}
nodeStack.Push(delegateDeclaration.ReturnType);
delegateDeclaration.ReturnType.AcceptVisitor(this, data);
delegateDeclaration.ReturnType = ((TypeReference)(nodeStack.Pop()));
@ -452,27 +463,13 @@ namespace ICSharpCode.NRefactory.Parser { @@ -452,27 +463,13 @@ namespace ICSharpCode.NRefactory.Parser {
else
delegateDeclaration.Templates[i] = o;
}
for (int i = 0; i < delegateDeclaration.Attributes.Count; i++) {
AttributeSection o = delegateDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
delegateDeclaration.Attributes.RemoveAt(i--);
else
delegateDeclaration.Attributes[i] = o;
}
return null;
}
public virtual object Visit(DestructorDeclaration destructorDeclaration, object data) {
Debug.Assert((destructorDeclaration != null));
Debug.Assert((destructorDeclaration.Body != null));
Debug.Assert((destructorDeclaration.Attributes != null));
nodeStack.Push(destructorDeclaration.Body);
destructorDeclaration.Body.AcceptVisitor(this, data);
destructorDeclaration.Body = ((BlockStatement)(nodeStack.Pop()));
Debug.Assert((destructorDeclaration.Body != null));
for (int i = 0; i < destructorDeclaration.Attributes.Count; i++) {
AttributeSection o = destructorDeclaration.Attributes[i];
Debug.Assert(o != null);
@ -484,6 +481,9 @@ namespace ICSharpCode.NRefactory.Parser { @@ -484,6 +481,9 @@ namespace ICSharpCode.NRefactory.Parser {
else
destructorDeclaration.Attributes[i] = o;
}
nodeStack.Push(destructorDeclaration.Body);
destructorDeclaration.Body.AcceptVisitor(this, data);
destructorDeclaration.Body = ((BlockStatement)(nodeStack.Pop()));
return null;
}
@ -560,9 +560,20 @@ namespace ICSharpCode.NRefactory.Parser { @@ -560,9 +560,20 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(EventAddRegion eventAddRegion, object data) {
Debug.Assert((eventAddRegion != null));
Debug.Assert((eventAddRegion.Attributes != null));
Debug.Assert((eventAddRegion.Block != null));
Debug.Assert((eventAddRegion.Parameters != null));
Debug.Assert((eventAddRegion.Attributes != null));
for (int i = 0; i < eventAddRegion.Attributes.Count; i++) {
AttributeSection o = eventAddRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventAddRegion.Attributes.RemoveAt(i--);
else
eventAddRegion.Attributes[i] = o;
}
nodeStack.Push(eventAddRegion.Block);
eventAddRegion.Block.AcceptVisitor(this, data);
eventAddRegion.Block = ((BlockStatement)(nodeStack.Pop()));
@ -577,52 +588,29 @@ namespace ICSharpCode.NRefactory.Parser { @@ -577,52 +588,29 @@ namespace ICSharpCode.NRefactory.Parser {
else
eventAddRegion.Parameters[i] = o;
}
for (int i = 0; i < eventAddRegion.Attributes.Count; i++) {
AttributeSection o = eventAddRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventAddRegion.Attributes.RemoveAt(i--);
else
eventAddRegion.Attributes[i] = o;
}
return null;
}
public virtual object Visit(EventDeclaration eventDeclaration, object data) {
Debug.Assert((eventDeclaration != null));
Debug.Assert((eventDeclaration.Attributes != null));
Debug.Assert((eventDeclaration.Parameters != null));
Debug.Assert((eventDeclaration.TypeReference != null));
Debug.Assert((eventDeclaration.InterfaceImplementations != null));
Debug.Assert((eventDeclaration.AddRegion != null));
Debug.Assert((eventDeclaration.RemoveRegion != null));
Debug.Assert((eventDeclaration.RaiseRegion != null));
Debug.Assert((eventDeclaration.Parameters != null));
Debug.Assert((eventDeclaration.Attributes != null));
nodeStack.Push(eventDeclaration.TypeReference);
eventDeclaration.TypeReference.AcceptVisitor(this, data);
eventDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
for (int i = 0; i < eventDeclaration.InterfaceImplementations.Count; i++) {
InterfaceImplementation o = eventDeclaration.InterfaceImplementations[i];
for (int i = 0; i < eventDeclaration.Attributes.Count; i++) {
AttributeSection o = eventDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (InterfaceImplementation)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventDeclaration.InterfaceImplementations.RemoveAt(i--);
eventDeclaration.Attributes.RemoveAt(i--);
else
eventDeclaration.InterfaceImplementations[i] = o;
eventDeclaration.Attributes[i] = o;
}
nodeStack.Push(eventDeclaration.AddRegion);
eventDeclaration.AddRegion.AcceptVisitor(this, data);
eventDeclaration.AddRegion = ((EventAddRegion)(nodeStack.Pop()));
nodeStack.Push(eventDeclaration.RemoveRegion);
eventDeclaration.RemoveRegion.AcceptVisitor(this, data);
eventDeclaration.RemoveRegion = ((EventRemoveRegion)(nodeStack.Pop()));
nodeStack.Push(eventDeclaration.RaiseRegion);
eventDeclaration.RaiseRegion.AcceptVisitor(this, data);
eventDeclaration.RaiseRegion = ((EventRaiseRegion)(nodeStack.Pop()));
for (int i = 0; i < eventDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = eventDeclaration.Parameters[i];
Debug.Assert(o != null);
@ -634,25 +622,48 @@ namespace ICSharpCode.NRefactory.Parser { @@ -634,25 +622,48 @@ namespace ICSharpCode.NRefactory.Parser {
else
eventDeclaration.Parameters[i] = o;
}
for (int i = 0; i < eventDeclaration.Attributes.Count; i++) {
AttributeSection o = eventDeclaration.Attributes[i];
nodeStack.Push(eventDeclaration.TypeReference);
eventDeclaration.TypeReference.AcceptVisitor(this, data);
eventDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
for (int i = 0; i < eventDeclaration.InterfaceImplementations.Count; i++) {
InterfaceImplementation o = eventDeclaration.InterfaceImplementations[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (InterfaceImplementation)nodeStack.Pop();
if (o == null)
eventDeclaration.Attributes.RemoveAt(i--);
eventDeclaration.InterfaceImplementations.RemoveAt(i--);
else
eventDeclaration.Attributes[i] = o;
eventDeclaration.InterfaceImplementations[i] = o;
}
nodeStack.Push(eventDeclaration.AddRegion);
eventDeclaration.AddRegion.AcceptVisitor(this, data);
eventDeclaration.AddRegion = ((EventAddRegion)(nodeStack.Pop()));
nodeStack.Push(eventDeclaration.RemoveRegion);
eventDeclaration.RemoveRegion.AcceptVisitor(this, data);
eventDeclaration.RemoveRegion = ((EventRemoveRegion)(nodeStack.Pop()));
nodeStack.Push(eventDeclaration.RaiseRegion);
eventDeclaration.RaiseRegion.AcceptVisitor(this, data);
eventDeclaration.RaiseRegion = ((EventRaiseRegion)(nodeStack.Pop()));
return null;
}
public virtual object Visit(EventRaiseRegion eventRaiseRegion, object data) {
Debug.Assert((eventRaiseRegion != null));
Debug.Assert((eventRaiseRegion.Attributes != null));
Debug.Assert((eventRaiseRegion.Block != null));
Debug.Assert((eventRaiseRegion.Parameters != null));
Debug.Assert((eventRaiseRegion.Attributes != null));
for (int i = 0; i < eventRaiseRegion.Attributes.Count; i++) {
AttributeSection o = eventRaiseRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventRaiseRegion.Attributes.RemoveAt(i--);
else
eventRaiseRegion.Attributes[i] = o;
}
nodeStack.Push(eventRaiseRegion.Block);
eventRaiseRegion.Block.AcceptVisitor(this, data);
eventRaiseRegion.Block = ((BlockStatement)(nodeStack.Pop()));
@ -667,25 +678,25 @@ namespace ICSharpCode.NRefactory.Parser { @@ -667,25 +678,25 @@ namespace ICSharpCode.NRefactory.Parser {
else
eventRaiseRegion.Parameters[i] = o;
}
for (int i = 0; i < eventRaiseRegion.Attributes.Count; i++) {
AttributeSection o = eventRaiseRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventRaiseRegion.Attributes.RemoveAt(i--);
else
eventRaiseRegion.Attributes[i] = o;
}
return null;
}
public virtual object Visit(EventRemoveRegion eventRemoveRegion, object data) {
Debug.Assert((eventRemoveRegion != null));
Debug.Assert((eventRemoveRegion.Attributes != null));
Debug.Assert((eventRemoveRegion.Block != null));
Debug.Assert((eventRemoveRegion.Parameters != null));
Debug.Assert((eventRemoveRegion.Attributes != null));
for (int i = 0; i < eventRemoveRegion.Attributes.Count; i++) {
AttributeSection o = eventRemoveRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventRemoveRegion.Attributes.RemoveAt(i--);
else
eventRemoveRegion.Attributes[i] = o;
}
nodeStack.Push(eventRemoveRegion.Block);
eventRemoveRegion.Block.AcceptVisitor(this, data);
eventRemoveRegion.Block = ((BlockStatement)(nodeStack.Pop()));
@ -700,17 +711,6 @@ namespace ICSharpCode.NRefactory.Parser { @@ -700,17 +711,6 @@ namespace ICSharpCode.NRefactory.Parser {
else
eventRemoveRegion.Parameters[i] = o;
}
for (int i = 0; i < eventRemoveRegion.Attributes.Count; i++) {
AttributeSection o = eventRemoveRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
eventRemoveRegion.Attributes.RemoveAt(i--);
else
eventRemoveRegion.Attributes[i] = o;
}
return null;
}
@ -721,9 +721,20 @@ namespace ICSharpCode.NRefactory.Parser { @@ -721,9 +721,20 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(FieldDeclaration fieldDeclaration, object data) {
Debug.Assert((fieldDeclaration != null));
Debug.Assert((fieldDeclaration.Attributes != null));
Debug.Assert((fieldDeclaration.TypeReference != null));
Debug.Assert((fieldDeclaration.Fields != null));
Debug.Assert((fieldDeclaration.Attributes != null));
for (int i = 0; i < fieldDeclaration.Attributes.Count; i++) {
AttributeSection o = fieldDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
fieldDeclaration.Attributes.RemoveAt(i--);
else
fieldDeclaration.Attributes[i] = o;
}
nodeStack.Push(fieldDeclaration.TypeReference);
fieldDeclaration.TypeReference.AcceptVisitor(this, data);
fieldDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
@ -738,17 +749,6 @@ namespace ICSharpCode.NRefactory.Parser { @@ -738,17 +749,6 @@ namespace ICSharpCode.NRefactory.Parser {
else
fieldDeclaration.Fields[i] = o;
}
for (int i = 0; i < fieldDeclaration.Attributes.Count; i++) {
AttributeSection o = fieldDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
fieldDeclaration.Attributes.RemoveAt(i--);
else
fieldDeclaration.Attributes[i] = o;
}
return null;
}
@ -947,12 +947,23 @@ namespace ICSharpCode.NRefactory.Parser { @@ -947,12 +947,23 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(IndexerDeclaration indexerDeclaration, object data) {
Debug.Assert((indexerDeclaration != null));
Debug.Assert((indexerDeclaration.Attributes != null));
Debug.Assert((indexerDeclaration.Parameters != null));
Debug.Assert((indexerDeclaration.InterfaceImplementations != null));
Debug.Assert((indexerDeclaration.TypeReference != null));
Debug.Assert((indexerDeclaration.GetRegion != null));
Debug.Assert((indexerDeclaration.SetRegion != null));
Debug.Assert((indexerDeclaration.Attributes != null));
for (int i = 0; i < indexerDeclaration.Attributes.Count; i++) {
AttributeSection o = indexerDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
indexerDeclaration.Attributes.RemoveAt(i--);
else
indexerDeclaration.Attributes[i] = o;
}
for (int i = 0; i < indexerDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = indexerDeclaration.Parameters[i];
Debug.Assert(o != null);
@ -984,17 +995,6 @@ namespace ICSharpCode.NRefactory.Parser { @@ -984,17 +995,6 @@ namespace ICSharpCode.NRefactory.Parser {
nodeStack.Push(indexerDeclaration.SetRegion);
indexerDeclaration.SetRegion.AcceptVisitor(this, data);
indexerDeclaration.SetRegion = ((PropertySetRegion)(nodeStack.Pop()));
for (int i = 0; i < indexerDeclaration.Attributes.Count; i++) {
AttributeSection o = indexerDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
indexerDeclaration.Attributes.RemoveAt(i--);
else
indexerDeclaration.Attributes[i] = o;
}
return null;
}
@ -1107,12 +1107,34 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1107,12 +1107,34 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(MethodDeclaration methodDeclaration, object data) {
Debug.Assert((methodDeclaration != null));
Debug.Assert((methodDeclaration.Attributes != null));
Debug.Assert((methodDeclaration.Parameters != null));
Debug.Assert((methodDeclaration.TypeReference != null));
Debug.Assert((methodDeclaration.Body != null));
Debug.Assert((methodDeclaration.InterfaceImplementations != null));
Debug.Assert((methodDeclaration.Templates != null));
Debug.Assert((methodDeclaration.Parameters != null));
Debug.Assert((methodDeclaration.Attributes != null));
for (int i = 0; i < methodDeclaration.Attributes.Count; i++) {
AttributeSection o = methodDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
methodDeclaration.Attributes.RemoveAt(i--);
else
methodDeclaration.Attributes[i] = o;
}
for (int i = 0; i < methodDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = methodDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
methodDeclaration.Parameters.RemoveAt(i--);
else
methodDeclaration.Parameters[i] = o;
}
nodeStack.Push(methodDeclaration.TypeReference);
methodDeclaration.TypeReference.AcceptVisitor(this, data);
methodDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
@ -1141,28 +1163,6 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1141,28 +1163,6 @@ namespace ICSharpCode.NRefactory.Parser {
else
methodDeclaration.Templates[i] = o;
}
for (int i = 0; i < methodDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = methodDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
methodDeclaration.Parameters.RemoveAt(i--);
else
methodDeclaration.Parameters[i] = o;
}
for (int i = 0; i < methodDeclaration.Attributes.Count; i++) {
AttributeSection o = methodDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
methodDeclaration.Attributes.RemoveAt(i--);
else
methodDeclaration.Attributes[i] = o;
}
return null;
}
@ -1223,23 +1223,34 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1223,23 +1223,34 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(OperatorDeclaration operatorDeclaration, object data) {
Debug.Assert((operatorDeclaration != null));
Debug.Assert((operatorDeclaration.ReturnTypeAttributes != null));
Debug.Assert((operatorDeclaration.Attributes != null));
Debug.Assert((operatorDeclaration.Parameters != null));
Debug.Assert((operatorDeclaration.TypeReference != null));
Debug.Assert((operatorDeclaration.Body != null));
Debug.Assert((operatorDeclaration.InterfaceImplementations != null));
Debug.Assert((operatorDeclaration.Templates != null));
Debug.Assert((operatorDeclaration.Parameters != null));
Debug.Assert((operatorDeclaration.Attributes != null));
for (int i = 0; i < operatorDeclaration.ReturnTypeAttributes.Count; i++) {
AttributeSection o = operatorDeclaration.ReturnTypeAttributes[i];
Debug.Assert((operatorDeclaration.ReturnTypeAttributes != null));
for (int i = 0; i < operatorDeclaration.Attributes.Count; i++) {
AttributeSection o = operatorDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
operatorDeclaration.ReturnTypeAttributes.RemoveAt(i--);
operatorDeclaration.Attributes.RemoveAt(i--);
else
operatorDeclaration.ReturnTypeAttributes[i] = o;
operatorDeclaration.Attributes[i] = o;
}
for (int i = 0; i < operatorDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = operatorDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
operatorDeclaration.Parameters.RemoveAt(i--);
else
operatorDeclaration.Parameters[i] = o;
}
nodeStack.Push(operatorDeclaration.TypeReference);
operatorDeclaration.TypeReference.AcceptVisitor(this, data);
@ -1269,27 +1280,16 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1269,27 +1280,16 @@ namespace ICSharpCode.NRefactory.Parser {
else
operatorDeclaration.Templates[i] = o;
}
for (int i = 0; i < operatorDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = operatorDeclaration.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
operatorDeclaration.Parameters.RemoveAt(i--);
else
operatorDeclaration.Parameters[i] = o;
}
for (int i = 0; i < operatorDeclaration.Attributes.Count; i++) {
AttributeSection o = operatorDeclaration.Attributes[i];
for (int i = 0; i < operatorDeclaration.ReturnTypeAttributes.Count; i++) {
AttributeSection o = operatorDeclaration.ReturnTypeAttributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
operatorDeclaration.Attributes.RemoveAt(i--);
operatorDeclaration.ReturnTypeAttributes.RemoveAt(i--);
else
operatorDeclaration.Attributes[i] = o;
operatorDeclaration.ReturnTypeAttributes[i] = o;
}
return null;
}
@ -1349,32 +1349,23 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1349,32 +1349,23 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(PropertyDeclaration propertyDeclaration, object data) {
Debug.Assert((propertyDeclaration != null));
Debug.Assert((propertyDeclaration.Attributes != null));
Debug.Assert((propertyDeclaration.Parameters != null));
Debug.Assert((propertyDeclaration.InterfaceImplementations != null));
Debug.Assert((propertyDeclaration.TypeReference != null));
Debug.Assert((propertyDeclaration.GetRegion != null));
Debug.Assert((propertyDeclaration.SetRegion != null));
Debug.Assert((propertyDeclaration.Parameters != null));
Debug.Assert((propertyDeclaration.Attributes != null));
for (int i = 0; i < propertyDeclaration.InterfaceImplementations.Count; i++) {
InterfaceImplementation o = propertyDeclaration.InterfaceImplementations[i];
for (int i = 0; i < propertyDeclaration.Attributes.Count; i++) {
AttributeSection o = propertyDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (InterfaceImplementation)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
propertyDeclaration.InterfaceImplementations.RemoveAt(i--);
propertyDeclaration.Attributes.RemoveAt(i--);
else
propertyDeclaration.InterfaceImplementations[i] = o;
propertyDeclaration.Attributes[i] = o;
}
nodeStack.Push(propertyDeclaration.TypeReference);
propertyDeclaration.TypeReference.AcceptVisitor(this, data);
propertyDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
nodeStack.Push(propertyDeclaration.GetRegion);
propertyDeclaration.GetRegion.AcceptVisitor(this, data);
propertyDeclaration.GetRegion = ((PropertyGetRegion)(nodeStack.Pop()));
nodeStack.Push(propertyDeclaration.SetRegion);
propertyDeclaration.SetRegion.AcceptVisitor(this, data);
propertyDeclaration.SetRegion = ((PropertySetRegion)(nodeStack.Pop()));
for (int i = 0; i < propertyDeclaration.Parameters.Count; i++) {
ParameterDeclarationExpression o = propertyDeclaration.Parameters[i];
Debug.Assert(o != null);
@ -1386,27 +1377,33 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1386,27 +1377,33 @@ namespace ICSharpCode.NRefactory.Parser {
else
propertyDeclaration.Parameters[i] = o;
}
for (int i = 0; i < propertyDeclaration.Attributes.Count; i++) {
AttributeSection o = propertyDeclaration.Attributes[i];
for (int i = 0; i < propertyDeclaration.InterfaceImplementations.Count; i++) {
InterfaceImplementation o = propertyDeclaration.InterfaceImplementations[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (InterfaceImplementation)nodeStack.Pop();
if (o == null)
propertyDeclaration.Attributes.RemoveAt(i--);
propertyDeclaration.InterfaceImplementations.RemoveAt(i--);
else
propertyDeclaration.Attributes[i] = o;
propertyDeclaration.InterfaceImplementations[i] = o;
}
nodeStack.Push(propertyDeclaration.TypeReference);
propertyDeclaration.TypeReference.AcceptVisitor(this, data);
propertyDeclaration.TypeReference = ((TypeReference)(nodeStack.Pop()));
nodeStack.Push(propertyDeclaration.GetRegion);
propertyDeclaration.GetRegion.AcceptVisitor(this, data);
propertyDeclaration.GetRegion = ((PropertyGetRegion)(nodeStack.Pop()));
nodeStack.Push(propertyDeclaration.SetRegion);
propertyDeclaration.SetRegion.AcceptVisitor(this, data);
propertyDeclaration.SetRegion = ((PropertySetRegion)(nodeStack.Pop()));
return null;
}
public virtual object Visit(PropertyGetRegion propertyGetRegion, object data) {
Debug.Assert((propertyGetRegion != null));
Debug.Assert((propertyGetRegion.Block != null));
Debug.Assert((propertyGetRegion.Attributes != null));
nodeStack.Push(propertyGetRegion.Block);
propertyGetRegion.Block.AcceptVisitor(this, data);
propertyGetRegion.Block = ((BlockStatement)(nodeStack.Pop()));
Debug.Assert((propertyGetRegion.Block != null));
for (int i = 0; i < propertyGetRegion.Attributes.Count; i++) {
AttributeSection o = propertyGetRegion.Attributes[i];
Debug.Assert(o != null);
@ -1418,38 +1415,41 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1418,38 +1415,41 @@ namespace ICSharpCode.NRefactory.Parser {
else
propertyGetRegion.Attributes[i] = o;
}
nodeStack.Push(propertyGetRegion.Block);
propertyGetRegion.Block.AcceptVisitor(this, data);
propertyGetRegion.Block = ((BlockStatement)(nodeStack.Pop()));
return null;
}
public virtual object Visit(PropertySetRegion propertySetRegion, object data) {
Debug.Assert((propertySetRegion != null));
Debug.Assert((propertySetRegion.Parameters != null));
Debug.Assert((propertySetRegion.Block != null));
Debug.Assert((propertySetRegion.Attributes != null));
for (int i = 0; i < propertySetRegion.Parameters.Count; i++) {
ParameterDeclarationExpression o = propertySetRegion.Parameters[i];
Debug.Assert((propertySetRegion.Block != null));
Debug.Assert((propertySetRegion.Parameters != null));
for (int i = 0; i < propertySetRegion.Attributes.Count; i++) {
AttributeSection o = propertySetRegion.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ParameterDeclarationExpression)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
propertySetRegion.Parameters.RemoveAt(i--);
propertySetRegion.Attributes.RemoveAt(i--);
else
propertySetRegion.Parameters[i] = o;
propertySetRegion.Attributes[i] = o;
}
nodeStack.Push(propertySetRegion.Block);
propertySetRegion.Block.AcceptVisitor(this, data);
propertySetRegion.Block = ((BlockStatement)(nodeStack.Pop()));
for (int i = 0; i < propertySetRegion.Attributes.Count; i++) {
AttributeSection o = propertySetRegion.Attributes[i];
for (int i = 0; i < propertySetRegion.Parameters.Count; i++) {
ParameterDeclarationExpression o = propertySetRegion.Parameters[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (ParameterDeclarationExpression)nodeStack.Pop();
if (o == null)
propertySetRegion.Attributes.RemoveAt(i--);
propertySetRegion.Parameters.RemoveAt(i--);
else
propertySetRegion.Attributes[i] = o;
propertySetRegion.Parameters[i] = o;
}
return null;
}
@ -1602,29 +1602,29 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1602,29 +1602,29 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(TemplateDefinition templateDefinition, object data) {
Debug.Assert((templateDefinition != null));
Debug.Assert((templateDefinition.Bases != null));
Debug.Assert((templateDefinition.Attributes != null));
for (int i = 0; i < templateDefinition.Bases.Count; i++) {
TypeReference o = templateDefinition.Bases[i];
Debug.Assert((templateDefinition.Bases != null));
for (int i = 0; i < templateDefinition.Attributes.Count; i++) {
AttributeSection o = templateDefinition.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (TypeReference)nodeStack.Pop();
o = (AttributeSection)nodeStack.Pop();
if (o == null)
templateDefinition.Bases.RemoveAt(i--);
templateDefinition.Attributes.RemoveAt(i--);
else
templateDefinition.Bases[i] = o;
templateDefinition.Attributes[i] = o;
}
for (int i = 0; i < templateDefinition.Attributes.Count; i++) {
AttributeSection o = templateDefinition.Attributes[i];
for (int i = 0; i < templateDefinition.Bases.Count; i++) {
TypeReference o = templateDefinition.Bases[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
o = (TypeReference)nodeStack.Pop();
if (o == null)
templateDefinition.Attributes.RemoveAt(i--);
templateDefinition.Bases.RemoveAt(i--);
else
templateDefinition.Attributes[i] = o;
templateDefinition.Bases[i] = o;
}
return null;
}
@ -1670,9 +1670,20 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1670,9 +1670,20 @@ namespace ICSharpCode.NRefactory.Parser {
public virtual object Visit(TypeDeclaration typeDeclaration, object data) {
Debug.Assert((typeDeclaration != null));
Debug.Assert((typeDeclaration.Attributes != null));
Debug.Assert((typeDeclaration.BaseTypes != null));
Debug.Assert((typeDeclaration.Templates != null));
Debug.Assert((typeDeclaration.Attributes != null));
for (int i = 0; i < typeDeclaration.Attributes.Count; i++) {
AttributeSection o = typeDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
typeDeclaration.Attributes.RemoveAt(i--);
else
typeDeclaration.Attributes[i] = o;
}
for (int i = 0; i < typeDeclaration.BaseTypes.Count; i++) {
TypeReference o = typeDeclaration.BaseTypes[i];
Debug.Assert(o != null);
@ -1695,17 +1706,6 @@ namespace ICSharpCode.NRefactory.Parser { @@ -1695,17 +1706,6 @@ namespace ICSharpCode.NRefactory.Parser {
else
typeDeclaration.Templates[i] = o;
}
for (int i = 0; i < typeDeclaration.Attributes.Count; i++) {
AttributeSection o = typeDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
typeDeclaration.Attributes.RemoveAt(i--);
else
typeDeclaration.Attributes[i] = o;
}
for (int i = 0; i < typeDeclaration.Children.Count; i++) {
INode o = typeDeclaration.Children[i];
Debug.Assert(o != null);

37
src/Libraries/NRefactory/Project/Src/Parser/Visitors/PrefixFieldsVisitor.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -29,7 +29,7 @@ namespace ICSharpCode.NRefactory.Parser
public void Run(TypeDeclaration typeDeclaration)
{
base.Visit(typeDeclaration, null);
typeDeclaration.AcceptChildren(this, null);
foreach (VariableDeclaration decl in fields) {
decl.Name = prefix + decl.Name;
}
@ -37,8 +37,10 @@ namespace ICSharpCode.NRefactory.Parser @@ -37,8 +37,10 @@ namespace ICSharpCode.NRefactory.Parser
public override object Visit(TypeDeclaration typeDeclaration, object data)
{
// TODO: treat fields of base types like locals
return base.Visit(typeDeclaration, data);
Push();
object result = base.Visit(typeDeclaration, data);
Pop();
return result;
}
public override object Visit(BlockStatement blockStatement, object data)
@ -57,18 +59,10 @@ namespace ICSharpCode.NRefactory.Parser @@ -57,18 +59,10 @@ namespace ICSharpCode.NRefactory.Parser
return result;
}
public override object Visit(PropertyGetRegion p, object data)
{
Push();
object result = base.Visit(p, data);
Pop();
return result;
}
public override object Visit(PropertySetRegion p, object data)
public override object Visit(PropertyDeclaration propertyDeclaration, object data)
{
Push();
object result = base.Visit(p, data);
object result = base.Visit(propertyDeclaration, data);
Pop();
return result;
}
@ -92,13 +86,14 @@ namespace ICSharpCode.NRefactory.Parser @@ -92,13 +86,14 @@ namespace ICSharpCode.NRefactory.Parser
curBlock = blocks.Pop();
}
public override object Visit(LocalVariableDeclaration localVariableDeclaration, object data)
public override object Visit(VariableDeclaration variableDeclaration, object data)
{
foreach (VariableDeclaration decl in localVariableDeclaration.Variables) {
//print("add variable ${decl.Name} to block")
curBlock.Add(decl.Name);
// process local variables only
if (fields.Contains(variableDeclaration)) {
return null;
}
return base.Visit(localVariableDeclaration, data);
curBlock.Add(variableDeclaration.Name);
return base.Visit(variableDeclaration, data);
}
public override object Visit(ParameterDeclarationExpression parameterDeclarationExpression, object data)
@ -108,6 +103,12 @@ namespace ICSharpCode.NRefactory.Parser @@ -108,6 +103,12 @@ namespace ICSharpCode.NRefactory.Parser
return base.Visit(parameterDeclarationExpression, data);
}
public override object Visit(ForeachStatement foreachStatement, object data)
{
curBlock.Add(foreachStatement.VariableName);
return base.Visit(foreachStatement, data);
}
public override object Visit(IdentifierExpression identifierExpression, object data)
{
string name = identifierExpression.Identifier;

33
src/Libraries/NRefactory/Project/Src/Parser/Visitors/VBNetConstructsConvertVisitor.cs

@ -26,6 +26,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -26,6 +26,7 @@ namespace ICSharpCode.NRefactory.Parser
// The following conversions are implemented:
// MyBase.New() and MyClass.New() calls inside the constructor are converted to :base() and :this()
// Add Public Modifier to methods and properties
// Override Finalize => Destructor
// The following conversions should be implemented in the future:
// Function A() \n A = SomeValue \n End Function -> convert to return statement
@ -74,7 +75,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -74,7 +75,7 @@ namespace ICSharpCode.NRefactory.Parser
if (ie != null) {
FieldReferenceExpression fre = ie.TargetObject as FieldReferenceExpression;
if (fre != null && "New".Equals(fre.FieldName, StringComparison.InvariantCultureIgnoreCase)) {
if (fre.TargetObject is BaseReferenceExpression || fre.TargetObject is ClassReferenceExpression) {
if (fre.TargetObject is BaseReferenceExpression || fre.TargetObject is ClassReferenceExpression || fre.TargetObject is ThisReferenceExpression) {
body.Children.RemoveAt(0);
ConstructorInitializer ci = new ConstructorInitializer();
ci.Arguments = ie.Arguments;
@ -144,6 +145,36 @@ namespace ICSharpCode.NRefactory.Parser @@ -144,6 +145,36 @@ namespace ICSharpCode.NRefactory.Parser
if ((methodDeclaration.Modifier & Modifier.Visibility) == 0)
methodDeclaration.Modifier |= Modifier.Public;
if ("Finalize".Equals(methodDeclaration.Name, StringComparison.InvariantCultureIgnoreCase)
&& methodDeclaration.Parameters.Count == 0
&& methodDeclaration.Modifier == (Modifier.Protected | Modifier.Override)
&& methodDeclaration.Body.Children.Count == 1)
{
TryCatchStatement tcs = methodDeclaration.Body.Children[0] as TryCatchStatement;
if (tcs != null
&& tcs.StatementBlock is BlockStatement
&& tcs.CatchClauses.Count == 0
&& tcs.FinallyBlock is BlockStatement
&& tcs.FinallyBlock.Children.Count == 1)
{
StatementExpression se = tcs.FinallyBlock.Children[0] as StatementExpression;
if (se != null) {
InvocationExpression ie = se.Expression as InvocationExpression;
if (ie != null
&& ie.Arguments.Count == 0
&& ie.TargetObject is FieldReferenceExpression
&& (ie.TargetObject as FieldReferenceExpression).TargetObject is BaseReferenceExpression
&& "Finalize".Equals((ie.TargetObject as FieldReferenceExpression).FieldName, StringComparison.InvariantCultureIgnoreCase))
{
DestructorDeclaration des = new DestructorDeclaration("Destructor", Modifier.None, methodDeclaration.Attributes);
ReplaceCurrentNode(des);
des.Body = (BlockStatement)tcs.StatementBlock;
return base.Visit(des, data);
}
}
}
}
if ((methodDeclaration.Modifier & (Modifier.Static | Modifier.Extern)) == Modifier.Static
&& methodDeclaration.Body.Children.Count == 0)
{

1
src/Libraries/NRefactory/Test/NRefactoryTests.csproj

@ -142,6 +142,7 @@ @@ -142,6 +142,7 @@
<Compile Include="Output\VBNet\VBNetOutputTest.cs" />
<Compile Include="Output\VBNet\CSharpToVBConverterTest.cs" />
<Compile Include="Output\CSharp\VBToCSharpConverterTest.cs" />
<Compile Include="Output\SpecialOutputVisitor.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Project\NRefactory.csproj">

93
src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -28,7 +28,7 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
Assert.AreEqual(StripWhitespace(program), StripWhitespace(outputVisitor.Text));
}
string StripWhitespace(string text)
internal static string StripWhitespace(string text)
{
return text.Trim().Replace("\t", "").Replace("\r", "").Replace("\n", " ").Replace(" ", " ");
}
@ -54,6 +54,21 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -54,6 +54,21 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
Assert.AreEqual(StripWhitespace(expression), StripWhitespace(outputVisitor.Text));
}
[Test]
public void Namespace()
{
TestProgram("namespace System { }");
}
[Test]
public void CustomEvent()
{
TestTypeMember("public event EventHandler Click {" +
" add { obj.Click += value; }" +
" remove { obj.Click -= value; } " +
"}");
}
[Test]
public void Field()
{
@ -130,6 +145,69 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -130,6 +145,69 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestExpression("a = b");
}
[Test]
public void UnaryOperator()
{
TestExpression("a = -b");
}
[Test]
public void BlockStatements()
{
TestStatement("checked { }");
TestStatement("unchecked { }");
TestStatement("unsafe { }");
}
[Test]
public void ExceptionHandling()
{
TestStatement("try { throw new Exception(); } " +
"catch (FirstException e) { } " +
"catch (SecondException) { } " +
"catch { throw; } " +
"finally { }");
}
[Test]
public void LoopStatements()
{
TestStatement("foreach (Type var in col) { }");
TestStatement("while (true) { }");
TestStatement("do { } while (true);");
}
[Test]
public void SizeOf()
{
TestExpression("sizeof(IntPtr)");
}
[Test]
public void ParenthesizedExpression()
{
TestExpression("(a)");
}
[Test]
public void MethodOnGenericClass()
{
TestExpression("Container<string>.CreateInstance()");
}
[Test]
public void EmptyStatement()
{
TestStatement(";");
}
[Test]
public void Yield()
{
TestStatement("yield break;");
TestStatement("yield return null;");
}
[Test]
public void Integer()
{
@ -191,6 +269,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -191,6 +269,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestExpression("@class");
}
[Test]
public void InnerClassTypeReference()
{
TestExpression("typeof(List<string>.Enumerator)");
}
[Test]
public void GenericDelegate()
{
@ -247,5 +331,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -247,5 +331,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
" string InterfaceMethod2();\n" +
"}");
}
[Test]
public void IndexerDeclaration()
{
TestTypeMember("public string this[int index] { get { return index.ToString(); } set { } }");
TestTypeMember("public string IList.this[int index] { get { return index.ToString(); } set { } }");
}
}
}

62
src/Libraries/NRefactory/Test/Output/CSharp/VBToCSharpConverterTest.cs

@ -75,6 +75,23 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -75,6 +75,23 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestProgram("Class tmp1 \n Sub tmp2() \n" + input + "\n End Sub \n End Class", b.ToString());
}
[Test]
public void ReferenceEquality()
{
TestStatement("b = a Is Nothing",
"b = a == null;");
TestStatement("b = a IsNot Nothing",
"b = a != null;");
TestStatement("b = Nothing Is a",
"b = null == a;");
TestStatement("b = Nothing IsNot a",
"b = null != a;");
TestStatement("c = a Is b",
"c = object.ReferenceEquals(a, b);");
TestStatement("c = a IsNot b",
"c = !object.ReferenceEquals(a, b);");
}
[Test]
public void AddHandler()
{
@ -100,6 +117,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -100,6 +117,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"if (someEvent != null) {\n\tsomeEvent(this, EventArgs.Empty);\n}");
}
[Test]
public void EraseStatement()
{
TestStatement("Erase a, b",
"a = null;\nb = null;");
}
[Test]
public void StaticMethod()
{
@ -107,6 +131,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -107,6 +131,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"public static void A()\n{\n}");
}
[Test]
public void Property()
{
TestMember("ReadOnly Property A()\nGet\nReturn Nothing\nEnd Get\nEnd Property",
"public object A {\n\tget {\n\t\treturn null;\n\t}\n}");
}
[Test]
public void PInvoke()
{
@ -120,11 +151,42 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -120,11 +151,42 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"static extern IntPtr SendMessage(IntPtr hWnd, int Msg, UIntPtr wParam, IntPtr lParam);",
"System.Runtime.InteropServices");
TestMember("Declare Auto Function SendMessage Lib \"user32.dll\" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As UIntPtr, ByVal lParam As IntPtr) As IntPtr",
"[DllImport(\"user32.dll\", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]\n" +
"static extern IntPtr SendMessage(IntPtr hWnd, int Msg, UIntPtr wParam, IntPtr lParam);",
"System.Runtime.InteropServices");
TestMember("<DllImport(\"user32.dll\", CharSet:=CharSet.Auto)> _\n" +
"Shared Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer\n" +
"End Function",
"[DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\n" +
"public static extern int MessageBox(IntPtr hwnd, string t, string caption, UInt32 t2);");
}
[Test]
public void Constructor()
{
TestMember("Sub New()\n\tMyBase.New(1)\nEnd Sub",
"public tmp1() : base(1)\n{\n}");
TestMember("Public Sub New()\n\tMe.New(1)\nEnd Sub",
"public tmp1() : this(1)\n{\n}");
}
[Test]
public void Destructor()
{
TestMember("Protected Overrides Sub Finalize()\n" +
"\tTry\n" +
"\t\tDead()\n" +
"\tFinally\n" +
"\t\tMyBase.Finalize()\n" +
"\tEnd Try\n" +
"End Sub",
"~tmp1()\n" +
"{\n" +
"\tDead();\n" +
"}");
}
}
}

67
src/Libraries/NRefactory/Test/Output/SpecialOutputVisitor.cs

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 06.02.2006
* Time: 14:41
*/
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Parser.AST;
using ICSharpCode.NRefactory.PrettyPrinter;
namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
{
[TestFixture]
public class SpecialOutputVisitorTest
{
void TestProgram(string program)
{
IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));
parser.Parse();
Assert.AreEqual("", parser.Errors.ErrorOutput);
CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
using (SpecialNodesInserter.Install(parser.Lexer.SpecialTracker.RetrieveSpecials(),
outputVisitor)) {
outputVisitor.Visit(parser.CompilationUnit, null);
}
Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
Assert.AreEqual(program, outputVisitor.Text.TrimEnd().Replace("\r", ""));
parser.Dispose();
}
[Test]
public void SimpleComments()
{
TestProgram("// before class\n" +
"class A\n" +
"{\n" +
"\t// in class\n" +
"}\n" +
"// after class");
}
[Test, Ignore("Requires BlankLine to work correctly")]
public void BlockComment()
{
TestProgram("/* before class */\n" +
"class A\n" +
"{\n" +
"\t/* in class */\n" +
"}\n" +
"/* after class */");
}
[Test]
public void PreProcessing()
{
TestProgram("#if WITH_A\n" +
"class A\n" +
"{\n" +
"}\n" +
"#end if");
}
}
}

51
src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs

@ -215,5 +215,56 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -215,5 +215,56 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, UIntPtr wParam, IntPtr lParam);",
"Public Declare Auto Function SendMessage Lib \"user32.dll\" Alias \"SendMessageW\" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As UIntPtr, ByVal lParam As IntPtr) As IntPtr");
}
[Test]
public void Constructor()
{
TestMember("public tmp1() : base(1) { }",
"Public Sub New()\n\tMyBase.New(1)\nEnd Sub");
TestMember("public tmp1() : this(1) { }",
"Public Sub New()\n\tMe.New(1)\nEnd Sub");
}
[Test]
public void Destructor()
{
TestMember("~tmp1() { Dead(); }",
"Protected Overrides Sub Finalize()\n" +
"\tTry\n" +
"\t\tDead()\n" +
"\tFinally\n" +
"\t\tMyBase.Finalize()\n" +
"\tEnd Try\n" +
"End Sub");
}
[Test]
public void RenameConflictingNames()
{
TestMember("int count;" +
"public int Count { get { return count; } }" +
"void Test1(int count) { count = 3; }" +
"void Test2() { int count; count = 3; }" +
"void Test3() { foreach (int count in someList) { count = 3; } }",
"Private m_count As Integer\n" +
"Public ReadOnly Property Count() As Integer\n" +
"\tGet\n" +
"\t\tReturn m_count\n" +
"\tEnd Get\n" +
"End Property\n" +
"Private Sub Test1(ByVal count As Integer)\n" +
"\tcount = 3\n" +
"End Sub\n" +
"Private Sub Test2()\n" +
"\tDim count As Integer\n" +
"\tcount = 3\n" +
"End Sub\n" +
"Private Sub Test3()\n" +
"\tFor Each count As Integer In someList\n" +
"\t\tcount = 3\n" +
"\tNext\n" +
"End Sub");
}
}
}

Loading…
Cancel
Save