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 (BlockVariable blockVariableDeclaration)
144 public virtual object Visit (BlockConstant 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 (SwitchLabel switchLabel)
220 public virtual object Visit (GotoDefault gotoDefault)
225 public virtual object Visit (GotoCase gotoCase)
230 public virtual object Visit (Throw throwStatement)
235 public virtual object Visit (Break breakStatement)
240 public virtual object Visit (Continue continueStatement)
245 public virtual object Visit (Block blockStatement)
250 public virtual object Visit (Switch switchStatement)
255 public virtual object Visit (StatementList statementList)
260 public virtual object Visit (Lock lockStatement)
265 public virtual object Visit (Unchecked uncheckedStatement)
270 public virtual object Visit (Checked checkedStatement)
275 public virtual object Visit (Unsafe unsafeStatement)
281 public virtual object Visit (Fixed fixedStatement)
287 public virtual object Visit (TryFinally tryFinallyStatement)
292 public virtual object Visit (TryCatch tryCatchStatement)
297 public virtual object Visit (Using usingStatement)
302 public virtual object Visit (Foreach foreachStatement)
307 public virtual object Visit (Yield yieldStatement)
312 public virtual object Visit (YieldBreak yieldBreakStatement)
317 public virtual object Visit (Expression expression)
319 Debug.Fail ("Visit unknown expression:" + expression);
323 public virtual object Visit (MemberAccess memberAccess)
328 public virtual object Visit (QualifiedAliasMember qualifiedAliasMember)
333 public virtual object Visit (LocalVariableReference localVariableReference)
338 public virtual object Visit (Constant constant)
343 public virtual object Visit (BooleanExpression booleanExpression)
348 public virtual object Visit (SimpleName simpleName)
353 public virtual object Visit (ParenthesizedExpression parenthesizedExpression)
358 public virtual object Visit (Unary unaryExpression)
363 public virtual object Visit (UnaryMutator unaryMutatorExpression)
369 public virtual object Visit (Indirection indirectionExpression)
374 public virtual object Visit (Is isExpression)
379 public virtual object Visit (As asExpression)
384 public virtual object Visit (Cast castExpression)
389 public virtual object Visit (ComposedCast composedCast)
394 public virtual object Visit (DefaultValueExpression defaultValueExpression)
399 public virtual object Visit (DefaultParameterValueExpression defaultParameterValueExpression)
404 public virtual object Visit (Binary binaryExpression)
409 public virtual object Visit (Nullable.NullCoalescingOperator nullCoalescingOperator)
414 public virtual object Visit (Conditional conditionalExpression)
419 public virtual object Visit (Invocation invocationExpression)
424 public virtual object Visit (New newExpression)
429 public virtual object Visit (NewAnonymousType newAnonymousType)
434 public virtual object Visit (NewInitialize newInitializeExpression)
439 public virtual object Visit (ArrayCreation arrayCreationExpression)
444 public virtual object Visit (This thisExpression)
449 public virtual object Visit (ArglistAccess argListAccessExpression)
454 public virtual object Visit (Arglist argListExpression)
459 public virtual object Visit (TypeOf typeOfExpression)
464 public virtual object Visit (SizeOf sizeOfExpression)
469 public virtual object Visit (CheckedExpr checkedExpression)
474 public virtual object Visit (UnCheckedExpr uncheckedExpression)
479 public virtual object Visit (ElementAccess elementAccessExpression)
484 public virtual object Visit (BaseThis baseAccessExpression)
489 public virtual object Visit (StackAlloc stackAllocExpression)
494 public virtual object Visit (SimpleAssign simpleAssign)
499 public virtual object Visit (CompoundAssign compoundAssign)
504 public virtual object Visit (TypeExpression typeExpression)
509 public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
514 public virtual object Visit (LambdaExpression lambdaExpression)
519 public virtual object Visit (ConstInitializer constInitializer)
524 public virtual object Visit (ArrayInitializer arrayInitializer)
529 public virtual object Visit (Linq.QueryExpression queryExpression)
534 public virtual object Visit (Linq.QueryStartClause queryExpression)
539 public virtual object Visit (Linq.SelectMany selectMany)
544 public virtual object Visit (Linq.Select select)
549 public virtual object Visit (Linq.GroupBy groupBy)
554 public virtual object Visit (Linq.Let let)
559 public virtual object Visit (Linq.Where where)
564 public virtual object Visit (Linq.Join join)
569 public virtual object Visit (Linq.GroupJoin groupJoin)
574 public virtual object Visit (Linq.OrderByAscending orderByAscending)
579 public virtual object Visit (Linq.OrderByDescending orderByDescending)
584 public virtual object Visit (Linq.ThenByAscending thenByAscending)
589 public virtual object Visit (Linq.ThenByDescending thenByDescending)
594 // undocumented expressions
595 public virtual object Visit (RefValueExpr refValueExpr)
600 public virtual object Visit (RefTypeExpr refTypeExpr)
605 public virtual object Visit (MakeRefExpr makeRefExpr)
610 public virtual object Visit (Await awaitExpr)