2 // visit.cs: Visitors for parsed dom
4 // Authors: Mike Krüger (mkrueger@novell.com)
5 // Marek Safar (marek.safar@gmail.com)
7 // Dual licensed under the terms of the MIT X11 or GNU GPL
9 // Copyright (c) 2010 Novell, Inc (http://www.novell.com)
10 // Copyright 2011 Xamarin Inc
14 using System.Diagnostics;
18 public abstract class StructuralVisitor
20 public virtual void Visit (MemberCore member)
22 Debug.Fail ("unknown member type: " + member.GetType ());
25 void VisitTypeContainer (TypeContainer tc)
27 foreach (var container in tc.Containers) {
28 container.Accept (this);
32 void VisitTypeContainer (TypeDefinition tc)
34 foreach (var member in tc.Members) {
39 public virtual void Visit (ModuleContainer module)
41 VisitTypeContainer (module);
44 public virtual void Visit (UsingNamespace un)
48 public virtual void Visit (UsingAliasNamespace uan)
52 public virtual void Visit (UsingExternAlias uea)
56 public virtual void Visit (NamespaceContainer ns)
58 VisitTypeContainer (ns);
61 public virtual void Visit (Class c)
63 VisitTypeContainer (c);
66 public virtual void Visit (Struct s)
68 VisitTypeContainer (s);
72 public virtual void Visit (Interface i)
74 VisitTypeContainer (i);
77 public virtual void Visit (Delegate d)
81 public virtual void Visit (Enum e)
83 VisitTypeContainer (e);
86 public virtual void Visit (FixedField f)
90 public virtual void Visit (Const c)
94 public virtual void Visit (Field f)
98 public virtual void Visit (Operator o)
102 public virtual void Visit (Indexer i)
106 public virtual void Visit (Method m)
110 public virtual void Visit (Property p)
114 public virtual void Visit (Constructor c)
118 public virtual void Visit (Destructor d)
122 public virtual void Visit (EventField e)
125 public virtual void Visit (EventProperty ep)
129 public virtual void Visit (EnumMember em)
133 public virtual object Visit (Statement stmt)
135 Debug.Fail ("unknown statement:" + stmt);
139 public virtual object Visit (BlockVariableDeclaration blockVariableDeclaration)
144 public virtual object Visit (BlockConstantDeclaration blockConstantDeclaration)
149 public virtual object Visit (EmptyStatement emptyStatement)
154 public virtual object Visit (EmptyExpressionStatement emptyExpressionStatement)
159 public virtual object Visit (EmptyExpression emptyExpression)
164 public virtual object Visit (ErrorExpression errorExpression)
169 public virtual object Visit (If ifStatement)
175 public virtual object Visit (Do doStatement)
180 public virtual object Visit (While whileStatement)
185 public virtual object Visit (For forStatement)
190 public virtual object Visit (StatementExpression statementExpression)
195 public virtual object Visit (StatementErrorExpression errorStatement)
200 public virtual object Visit (Return returnStatement)
205 public virtual object Visit (Goto gotoStatement)
210 public virtual object Visit (LabeledStatement labeledStatement)
215 public virtual object Visit (GotoDefault gotoDefault)
220 public virtual object Visit (GotoCase gotoCase)
225 public virtual object Visit (Throw throwStatement)
230 public virtual object Visit (Break breakStatement)
235 public virtual object Visit (Continue continueStatement)
240 public virtual object Visit (Block blockStatement)
245 public virtual object Visit (Switch switchStatement)
250 public virtual object Visit (StatementList statementList)
255 public virtual object Visit (Lock lockStatement)
260 public virtual object Visit (Unchecked uncheckedStatement)
265 public virtual object Visit (Checked checkedStatement)
270 public virtual object Visit (Unsafe unsafeStatement)
276 public virtual object Visit (Fixed fixedStatement)
282 public virtual object Visit (TryFinally tryFinallyStatement)
287 public virtual object Visit (TryCatch tryCatchStatement)
292 public virtual object Visit (Using usingStatement)
297 public virtual object Visit (Foreach foreachStatement)
302 public virtual object Visit (Yield yieldStatement)
307 public virtual object Visit (YieldBreak yieldBreakStatement)
312 public virtual object Visit (Expression expression)
314 Debug.Fail ("Visit unknown expression:" + expression);
318 public virtual object Visit (MemberAccess memberAccess)
323 public virtual object Visit (QualifiedAliasMember qualifiedAliasMember)
328 public virtual object Visit (LocalVariableReference localVariableReference)
333 public virtual object Visit (Constant constant)
338 public virtual object Visit (BooleanExpression booleanExpression)
343 public virtual object Visit (SimpleName simpleName)
348 public virtual object Visit (ParenthesizedExpression parenthesizedExpression)
353 public virtual object Visit (Unary unaryExpression)
358 public virtual object Visit (UnaryMutator unaryMutatorExpression)
364 public virtual object Visit (Indirection indirectionExpression)
369 public virtual object Visit (Is isExpression)
374 public virtual object Visit (As asExpression)
379 public virtual object Visit (Cast castExpression)
384 public virtual object Visit (ComposedCast composedCast)
389 public virtual object Visit (DefaultValueExpression defaultValueExpression)
394 public virtual object Visit (DefaultParameterValueExpression defaultParameterValueExpression)
399 public virtual object Visit (Binary binaryExpression)
404 public virtual object Visit (Nullable.NullCoalescingOperator nullCoalescingOperator)
409 public virtual object Visit (Conditional conditionalExpression)
414 public virtual object Visit (Invocation invocationExpression)
419 public virtual object Visit (New newExpression)
424 public virtual object Visit (NewAnonymousType newAnonymousType)
429 public virtual object Visit (NewInitialize newInitializeExpression)
434 public virtual object Visit (ArrayCreation arrayCreationExpression)
439 public virtual object Visit (This thisExpression)
444 public virtual object Visit (ArglistAccess argListAccessExpression)
449 public virtual object Visit (Arglist argListExpression)
454 public virtual object Visit (TypeOf typeOfExpression)
459 public virtual object Visit (SizeOf sizeOfExpression)
464 public virtual object Visit (CheckedExpr checkedExpression)
469 public virtual object Visit (UnCheckedExpr uncheckedExpression)
474 public virtual object Visit (ElementAccess elementAccessExpression)
479 public virtual object Visit (BaseThis baseAccessExpression)
484 public virtual object Visit (StackAlloc stackAllocExpression)
489 public virtual object Visit (SimpleAssign simpleAssign)
494 public virtual object Visit (CompoundAssign compoundAssign)
499 public virtual object Visit (TypeExpression typeExpression)
504 public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
509 public virtual object Visit (LambdaExpression lambdaExpression)
514 public virtual object Visit (ConstInitializer constInitializer)
519 public virtual object Visit (ArrayInitializer arrayInitializer)
524 public virtual object Visit (Linq.QueryExpression queryExpression)
529 public virtual object Visit (Linq.QueryStartClause queryExpression)
534 public virtual object Visit (Linq.SelectMany selectMany)
539 public virtual object Visit (Linq.Select select)
544 public virtual object Visit (Linq.GroupBy groupBy)
549 public virtual object Visit (Linq.Let let)
554 public virtual object Visit (Linq.Where where)
559 public virtual object Visit (Linq.Join join)
564 public virtual object Visit (Linq.GroupJoin groupJoin)
569 public virtual object Visit (Linq.OrderByAscending orderByAscending)
574 public virtual object Visit (Linq.OrderByDescending orderByDescending)
579 public virtual object Visit (Linq.ThenByAscending thenByAscending)
584 public virtual object Visit (Linq.ThenByDescending thenByDescending)
589 // undocumented expressions
590 public virtual object Visit (RefValueExpr refValueExpr)
595 public virtual object Visit (RefTypeExpr refTypeExpr)
600 public virtual object Visit (MakeRefExpr makeRefExpr)
605 public virtual object Visit (Await awaitExpr)