/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/ObservableAstVisitor.cs

http://github.com/icsharpcode/ILSpy · C# · 857 lines · 598 code · 232 blank · 27 comment · 6 complexity · 2084758cac5eba85c5512d1c6cfd2f96 MD5 · raw file

  1. //
  2. // ObservableAstVisitor.cs
  3. //
  4. // Author:
  5. // Mike Krüger <mkrueger@novell.com>
  6. //
  7. // Copyright (c) 2011 Novell, Inc (http://www.novell.com)
  8. //
  9. // Permission is hereby granted, free of charge, to any person obtaining a copy
  10. // of this software and associated documentation files (the "Software"), to deal
  11. // in the Software without restriction, including without limitation the rights
  12. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  13. // copies of the Software, and to permit persons to whom the Software is
  14. // furnished to do so, subject to the following conditions:
  15. //
  16. // The above copyright notice and this permission notice shall be included in
  17. // all copies or substantial portions of the Software.
  18. //
  19. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  20. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  22. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  23. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  24. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  25. // THE SOFTWARE.
  26. using System;
  27. namespace ICSharpCode.NRefactory.CSharp
  28. {
  29. public class ObservableAstVisitor : IAstVisitor
  30. {
  31. void Visit<T>(Action<T> enter, Action<T> leave, T node) where T : AstNode
  32. {
  33. if (enter != null)
  34. enter(node);
  35. AstNode next;
  36. for (var child = node.FirstChild; child != null; child = next) {
  37. // Store next to allow the loop to continue
  38. // if the visitor removes/replaces children.
  39. next = child.NextSibling;
  40. child.AcceptVisitor (this);
  41. }
  42. if (leave != null)
  43. leave(node);
  44. }
  45. void IAstVisitor.VisitNullNode(AstNode nullNode)
  46. {
  47. }
  48. void IAstVisitor.VisitErrorNode(AstNode nullNode)
  49. {
  50. }
  51. public event Action<SyntaxTree> EnterSyntaxTree, LeaveSyntaxTree;
  52. void IAstVisitor.VisitSyntaxTree(SyntaxTree unit)
  53. {
  54. Visit(EnterSyntaxTree, LeaveSyntaxTree, unit);
  55. }
  56. public event Action<Comment> EnterComment, LeaveComment;
  57. void IAstVisitor.VisitComment(Comment comment)
  58. {
  59. Visit(EnterComment, LeaveComment, comment);
  60. }
  61. public event Action<NewLineNode> EnterNewLine, LeaveNewLine;
  62. void IAstVisitor.VisitNewLine(NewLineNode newLineNode)
  63. {
  64. Visit(EnterNewLine, LeaveNewLine, newLineNode);
  65. }
  66. public event Action<WhitespaceNode> EnterWhitespace, LeaveWhitespace;
  67. void IAstVisitor.VisitWhitespace(WhitespaceNode whitespace)
  68. {
  69. Visit(EnterWhitespace, LeaveWhitespace, whitespace);
  70. }
  71. public event Action<TextNode> EnterText, LeaveText;
  72. void IAstVisitor.VisitText(TextNode textNode)
  73. {
  74. Visit(EnterText, LeaveText, textNode);
  75. }
  76. public event Action<PreProcessorDirective> EnterPreProcessorDirective, LeavePreProcessorDirective;
  77. void IAstVisitor.VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective)
  78. {
  79. Visit(EnterPreProcessorDirective, LeavePreProcessorDirective, preProcessorDirective);
  80. }
  81. public event Action<DocumentationReference> EnterDocumentationReference, LeaveDocumentationReference;
  82. void IAstVisitor.VisitDocumentationReference(DocumentationReference documentationReference)
  83. {
  84. Visit(EnterDocumentationReference, LeaveDocumentationReference, documentationReference);
  85. }
  86. public event Action<Identifier> EnterIdentifier, LeaveIdentifier;
  87. void IAstVisitor.VisitIdentifier(Identifier identifier)
  88. {
  89. Visit(EnterIdentifier, LeaveIdentifier, identifier);
  90. }
  91. public event Action<CSharpTokenNode> EnterCSharpTokenNode, LeaveCSharpTokenNode;
  92. void IAstVisitor.VisitCSharpTokenNode(CSharpTokenNode token)
  93. {
  94. Visit(EnterCSharpTokenNode, LeaveCSharpTokenNode, token);
  95. }
  96. public event Action<PrimitiveType> EnterPrimitiveType, LeavePrimitiveType;
  97. void IAstVisitor.VisitPrimitiveType(PrimitiveType primitiveType)
  98. {
  99. Visit(EnterPrimitiveType, LeavePrimitiveType, primitiveType);
  100. }
  101. public event Action<ComposedType> EnterComposedType, LeaveComposedType;
  102. void IAstVisitor.VisitComposedType(ComposedType composedType)
  103. {
  104. Visit(EnterComposedType, LeaveComposedType, composedType);
  105. }
  106. public event Action<SimpleType> EnterSimpleType, LeaveSimpleType;
  107. void IAstVisitor.VisitSimpleType(SimpleType simpleType)
  108. {
  109. Visit(EnterSimpleType, LeaveSimpleType, simpleType);
  110. }
  111. public event Action<MemberType> EnterMemberType, LeaveMemberType;
  112. void IAstVisitor.VisitMemberType(MemberType memberType)
  113. {
  114. Visit(EnterMemberType, LeaveMemberType, memberType);
  115. }
  116. public event Action<Attribute> EnterAttribute, LeaveAttribute;
  117. void IAstVisitor.VisitAttribute(Attribute attribute)
  118. {
  119. Visit(EnterAttribute, LeaveAttribute, attribute);
  120. }
  121. public event Action<AttributeSection> EnterAttributeSection, LeaveAttributeSection;
  122. void IAstVisitor.VisitAttributeSection(AttributeSection attributeSection)
  123. {
  124. Visit(EnterAttributeSection, LeaveAttributeSection, attributeSection);
  125. }
  126. public event Action<DelegateDeclaration> EnterDelegateDeclaration, LeaveDelegateDeclaration;
  127. void IAstVisitor.VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration)
  128. {
  129. Visit(EnterDelegateDeclaration, LeaveDelegateDeclaration, delegateDeclaration);
  130. }
  131. public event Action<NamespaceDeclaration> EnterNamespaceDeclaration, LeaveNamespaceDeclaration;
  132. void IAstVisitor.VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration)
  133. {
  134. Visit(EnterNamespaceDeclaration, LeaveNamespaceDeclaration, namespaceDeclaration);
  135. }
  136. public event Action<TypeDeclaration> EnterTypeDeclaration, LeaveTypeDeclaration;
  137. void IAstVisitor.VisitTypeDeclaration(TypeDeclaration typeDeclaration)
  138. {
  139. Visit(EnterTypeDeclaration, LeaveTypeDeclaration, typeDeclaration);
  140. }
  141. public event Action<TypeParameterDeclaration> EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration;
  142. void IAstVisitor.VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
  143. {
  144. Visit(EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration, typeParameterDeclaration);
  145. }
  146. public event Action<EnumMemberDeclaration> EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration;
  147. void IAstVisitor.VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration)
  148. {
  149. Visit(EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration, enumMemberDeclaration);
  150. }
  151. public event Action<UsingDeclaration> EnterUsingDeclaration, LeaveUsingDeclaration;
  152. void IAstVisitor.VisitUsingDeclaration(UsingDeclaration usingDeclaration)
  153. {
  154. Visit(EnterUsingDeclaration, LeaveUsingDeclaration, usingDeclaration);
  155. }
  156. public event Action<UsingAliasDeclaration> EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration;
  157. void IAstVisitor.VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration)
  158. {
  159. Visit(EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration, usingDeclaration);
  160. }
  161. public event Action<ExternAliasDeclaration> EnterExternAliasDeclaration, LeaveExternAliasDeclaration;
  162. void IAstVisitor.VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration)
  163. {
  164. Visit(EnterExternAliasDeclaration, LeaveExternAliasDeclaration, externAliasDeclaration);
  165. }
  166. public event Action<ConstructorDeclaration> EnterConstructorDeclaration, LeaveConstructorDeclaration;
  167. void IAstVisitor.VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
  168. {
  169. Visit(EnterConstructorDeclaration, LeaveConstructorDeclaration, constructorDeclaration);
  170. }
  171. public event Action<ConstructorInitializer> EnterConstructorInitializer, LeaveConstructorInitializer;
  172. void IAstVisitor.VisitConstructorInitializer(ConstructorInitializer constructorInitializer)
  173. {
  174. Visit(EnterConstructorInitializer, LeaveConstructorInitializer, constructorInitializer);
  175. }
  176. public event Action<DestructorDeclaration> EnterDestructorDeclaration, LeaveDestructorDeclaration;
  177. void IAstVisitor.VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration)
  178. {
  179. Visit(EnterDestructorDeclaration, LeaveDestructorDeclaration, destructorDeclaration);
  180. }
  181. public event Action<EventDeclaration> EnterEventDeclaration, LeaveEventDeclaration;
  182. void IAstVisitor.VisitEventDeclaration(EventDeclaration eventDeclaration)
  183. {
  184. Visit(EnterEventDeclaration, LeaveEventDeclaration, eventDeclaration);
  185. }
  186. public event Action<CustomEventDeclaration> EnterCustomEventDeclaration, LeaveCustomEventDeclaration;
  187. void IAstVisitor.VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
  188. {
  189. Visit(EnterCustomEventDeclaration, LeaveCustomEventDeclaration, eventDeclaration);
  190. }
  191. public event Action<FieldDeclaration> EnterFieldDeclaration, LeaveFieldDeclaration;
  192. void IAstVisitor.VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
  193. {
  194. Visit(EnterFieldDeclaration, LeaveFieldDeclaration, fieldDeclaration);
  195. }
  196. public event Action<FixedFieldDeclaration> EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration;
  197. void IAstVisitor.VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration)
  198. {
  199. Visit(EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration, fixedFieldDeclaration);
  200. }
  201. public event Action<FixedVariableInitializer> EnterFixedVariableInitializer, LeaveFixedVariableInitializer;
  202. void IAstVisitor.VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer)
  203. {
  204. Visit(EnterFixedVariableInitializer, LeaveFixedVariableInitializer, fixedVariableInitializer);
  205. }
  206. public event Action<IndexerDeclaration> EnterIndexerDeclaration, LeaveIndexerDeclaration;
  207. void IAstVisitor.VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
  208. {
  209. Visit(EnterIndexerDeclaration, LeaveIndexerDeclaration, indexerDeclaration);
  210. }
  211. public event Action<MethodDeclaration> EnterMethodDeclaration, LeaveMethodDeclaration;
  212. void IAstVisitor.VisitMethodDeclaration(MethodDeclaration methodDeclaration)
  213. {
  214. Visit(EnterMethodDeclaration, LeaveMethodDeclaration, methodDeclaration);
  215. }
  216. public event Action<OperatorDeclaration> EnterOperatorDeclaration, LeaveOperatorDeclaration;
  217. void IAstVisitor.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration)
  218. {
  219. Visit(EnterOperatorDeclaration, LeaveOperatorDeclaration, operatorDeclaration);
  220. }
  221. public event Action<PropertyDeclaration> EnterPropertyDeclaration, LeavePropertyDeclaration;
  222. void IAstVisitor.VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
  223. {
  224. Visit(EnterPropertyDeclaration, LeavePropertyDeclaration, propertyDeclaration);
  225. }
  226. public event Action<Accessor> EnterAccessor, LeaveAccessor;
  227. void IAstVisitor.VisitAccessor(Accessor accessor)
  228. {
  229. Visit(EnterAccessor, LeaveAccessor, accessor);
  230. }
  231. public event Action<VariableInitializer> EnterVariableInitializer, LeaveVariableInitializer;
  232. void IAstVisitor.VisitVariableInitializer(VariableInitializer variableInitializer)
  233. {
  234. Visit(EnterVariableInitializer, LeaveVariableInitializer, variableInitializer);
  235. }
  236. public event Action<ParameterDeclaration> EnterParameterDeclaration, LeaveParameterDeclaration;
  237. void IAstVisitor.VisitParameterDeclaration(ParameterDeclaration parameterDeclaration)
  238. {
  239. Visit(EnterParameterDeclaration, LeaveParameterDeclaration, parameterDeclaration);
  240. }
  241. public event Action<Constraint> EnterConstraint, LeaveConstraint;
  242. void IAstVisitor.VisitConstraint(Constraint constraint)
  243. {
  244. Visit(EnterConstraint, LeaveConstraint, constraint);
  245. }
  246. public event Action<BlockStatement> EnterBlockStatement, LeaveBlockStatement;
  247. void IAstVisitor.VisitBlockStatement(BlockStatement blockStatement)
  248. {
  249. Visit(EnterBlockStatement, LeaveBlockStatement, blockStatement);
  250. }
  251. public event Action<ExpressionStatement> EnterExpressionStatement, LeaveExpressionStatement;
  252. void IAstVisitor.VisitExpressionStatement(ExpressionStatement expressionStatement)
  253. {
  254. Visit(EnterExpressionStatement, LeaveExpressionStatement, expressionStatement);
  255. }
  256. public event Action<BreakStatement> EnterBreakStatement, LeaveBreakStatement;
  257. void IAstVisitor.VisitBreakStatement(BreakStatement breakStatement)
  258. {
  259. Visit(EnterBreakStatement, LeaveBreakStatement, breakStatement);
  260. }
  261. public event Action<CheckedStatement> EnterCheckedStatement, LeaveCheckedStatement;
  262. void IAstVisitor.VisitCheckedStatement(CheckedStatement checkedStatement)
  263. {
  264. Visit(EnterCheckedStatement, LeaveCheckedStatement, checkedStatement);
  265. }
  266. public event Action<ContinueStatement> EnterContinueStatement, LeaveContinueStatement;
  267. void IAstVisitor.VisitContinueStatement(ContinueStatement continueStatement)
  268. {
  269. Visit(EnterContinueStatement, LeaveContinueStatement, continueStatement);
  270. }
  271. public event Action<DoWhileStatement> EnterDoWhileStatement, LeaveDoWhileStatement;
  272. void IAstVisitor.VisitDoWhileStatement(DoWhileStatement doWhileStatement)
  273. {
  274. Visit(EnterDoWhileStatement, LeaveDoWhileStatement, doWhileStatement);
  275. }
  276. public event Action<EmptyStatement> EnterEmptyStatement, LeaveEmptyStatement;
  277. void IAstVisitor.VisitEmptyStatement(EmptyStatement emptyStatement)
  278. {
  279. Visit(EnterEmptyStatement, LeaveEmptyStatement, emptyStatement);
  280. }
  281. public event Action<FixedStatement> EnterFixedStatement, LeaveFixedStatement;
  282. void IAstVisitor.VisitFixedStatement(FixedStatement fixedStatement)
  283. {
  284. Visit(EnterFixedStatement, LeaveFixedStatement, fixedStatement);
  285. }
  286. public event Action<ForeachStatement> EnterForeachStatement, LeaveForeachStatement;
  287. void IAstVisitor.VisitForeachStatement(ForeachStatement foreachStatement)
  288. {
  289. Visit(EnterForeachStatement, LeaveForeachStatement, foreachStatement);
  290. }
  291. public event Action<ForStatement> EnterForStatement, LeaveForStatement;
  292. void IAstVisitor.VisitForStatement(ForStatement forStatement)
  293. {
  294. Visit(EnterForStatement, LeaveForStatement, forStatement);
  295. }
  296. public event Action<GotoCaseStatement> EnterGotoCaseStatement, LeaveGotoCaseStatement;
  297. void IAstVisitor.VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement)
  298. {
  299. Visit(EnterGotoCaseStatement, LeaveGotoCaseStatement, gotoCaseStatement);
  300. }
  301. public event Action<GotoDefaultStatement> EnterGotoDefaultStatement, LeaveGotoDefaultStatement;
  302. void IAstVisitor.VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement)
  303. {
  304. Visit(EnterGotoDefaultStatement, LeaveGotoDefaultStatement, gotoDefaultStatement);
  305. }
  306. public event Action<GotoStatement> EnterGotoStatement, LeaveGotoStatement;
  307. void IAstVisitor.VisitGotoStatement(GotoStatement gotoStatement)
  308. {
  309. Visit(EnterGotoStatement, LeaveGotoStatement, gotoStatement);
  310. }
  311. public event Action<IfElseStatement> EnterIfElseStatement, LeaveIfElseStatement;
  312. void IAstVisitor.VisitIfElseStatement(IfElseStatement ifElseStatement)
  313. {
  314. Visit(EnterIfElseStatement, LeaveIfElseStatement, ifElseStatement);
  315. }
  316. public event Action<LabelStatement> EnterLabelStatement, LeaveLabelStatement;
  317. void IAstVisitor.VisitLabelStatement(LabelStatement labelStatement)
  318. {
  319. Visit(EnterLabelStatement, LeaveLabelStatement, labelStatement);
  320. }
  321. public event Action<LockStatement> EnterLockStatement, LeaveLockStatement;
  322. void IAstVisitor.VisitLockStatement(LockStatement lockStatement)
  323. {
  324. Visit(EnterLockStatement, LeaveLockStatement, lockStatement);
  325. }
  326. public event Action<ReturnStatement> EnterReturnStatement, LeaveReturnStatement;
  327. void IAstVisitor.VisitReturnStatement(ReturnStatement returnStatement)
  328. {
  329. Visit(EnterReturnStatement, LeaveReturnStatement, returnStatement);
  330. }
  331. public event Action<SwitchStatement> EnterSwitchStatement, LeaveSwitchStatement;
  332. void IAstVisitor.VisitSwitchStatement(SwitchStatement switchStatement)
  333. {
  334. Visit(EnterSwitchStatement, LeaveSwitchStatement, switchStatement);
  335. }
  336. public event Action<SwitchSection> EnterSwitchSection, LeaveSwitchSection;
  337. void IAstVisitor.VisitSwitchSection(SwitchSection switchSection)
  338. {
  339. Visit(EnterSwitchSection, LeaveSwitchSection, switchSection);
  340. }
  341. public event Action<CaseLabel> EnterCaseLabel, LeaveCaseLabel;
  342. void IAstVisitor.VisitCaseLabel(CaseLabel caseLabel)
  343. {
  344. Visit(EnterCaseLabel, LeaveCaseLabel, caseLabel);
  345. }
  346. public event Action<ThrowStatement> EnterThrowStatement, LeaveThrowStatement;
  347. void IAstVisitor.VisitThrowStatement(ThrowStatement throwStatement)
  348. {
  349. Visit(EnterThrowStatement, LeaveThrowStatement, throwStatement);
  350. }
  351. public event Action<TryCatchStatement> EnterTryCatchStatement, LeaveTryCatchStatement;
  352. void IAstVisitor.VisitTryCatchStatement(TryCatchStatement tryCatchStatement)
  353. {
  354. Visit(EnterTryCatchStatement, LeaveTryCatchStatement, tryCatchStatement);
  355. }
  356. public event Action<CatchClause> EnterCatchClause, LeaveCatchClause;
  357. void IAstVisitor.VisitCatchClause(CatchClause catchClause)
  358. {
  359. Visit(EnterCatchClause, LeaveCatchClause, catchClause);
  360. }
  361. public event Action<UncheckedStatement> EnterUncheckedStatement, LeaveUncheckedStatement;
  362. void IAstVisitor.VisitUncheckedStatement(UncheckedStatement uncheckedStatement)
  363. {
  364. Visit(EnterUncheckedStatement, LeaveUncheckedStatement, uncheckedStatement);
  365. }
  366. public event Action<UnsafeStatement> EnterUnsafeStatement, LeaveUnsafeStatement;
  367. void IAstVisitor.VisitUnsafeStatement(UnsafeStatement unsafeStatement)
  368. {
  369. Visit(EnterUnsafeStatement, LeaveUnsafeStatement, unsafeStatement);
  370. }
  371. public event Action<UsingStatement> EnterUsingStatement, LeaveUsingStatement;
  372. void IAstVisitor.VisitUsingStatement(UsingStatement usingStatement)
  373. {
  374. Visit(EnterUsingStatement, LeaveUsingStatement, usingStatement);
  375. }
  376. public event Action<VariableDeclarationStatement> EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement;
  377. void IAstVisitor.VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement)
  378. {
  379. Visit(EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement, variableDeclarationStatement);
  380. }
  381. public event Action<WhileStatement> EnterWhileStatement, LeaveWhileStatement;
  382. void IAstVisitor.VisitWhileStatement(WhileStatement whileStatement)
  383. {
  384. Visit(EnterWhileStatement, LeaveWhileStatement, whileStatement);
  385. }
  386. public event Action<YieldBreakStatement> EnterYieldBreakStatement, LeaveYieldBreakStatement;
  387. void IAstVisitor.VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement)
  388. {
  389. Visit(EnterYieldBreakStatement, LeaveYieldBreakStatement, yieldBreakStatement);
  390. }
  391. public event Action<YieldReturnStatement> EnterYieldReturnStatement, LeaveYieldReturnStatement;
  392. void IAstVisitor.VisitYieldReturnStatement(YieldReturnStatement yieldStatement)
  393. {
  394. Visit(EnterYieldReturnStatement, LeaveYieldReturnStatement, yieldStatement);
  395. }
  396. public event Action<AnonymousMethodExpression> EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression;
  397. void IAstVisitor.VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression)
  398. {
  399. Visit(EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression, anonymousMethodExpression);
  400. }
  401. public event Action<LambdaExpression> EnterLambdaExpression, LeaveLambdaExpression;
  402. void IAstVisitor.VisitLambdaExpression(LambdaExpression lambdaExpression)
  403. {
  404. Visit(EnterLambdaExpression, LeaveLambdaExpression, lambdaExpression);
  405. }
  406. public event Action<AssignmentExpression> EnterAssignmentExpression, LeaveAssignmentExpression;
  407. void IAstVisitor.VisitAssignmentExpression(AssignmentExpression assignmentExpression)
  408. {
  409. Visit(EnterAssignmentExpression, LeaveAssignmentExpression, assignmentExpression);
  410. }
  411. public event Action<BaseReferenceExpression> EnterBaseReferenceExpression, LeaveBaseReferenceExpression;
  412. void IAstVisitor.VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression)
  413. {
  414. Visit(EnterBaseReferenceExpression, LeaveBaseReferenceExpression, baseReferenceExpression);
  415. }
  416. public event Action<BinaryOperatorExpression> EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression;
  417. void IAstVisitor.VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression)
  418. {
  419. Visit(EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression, binaryOperatorExpression);
  420. }
  421. public event Action<CastExpression> EnterCastExpression, LeaveCastExpression;
  422. void IAstVisitor.VisitCastExpression(CastExpression castExpression)
  423. {
  424. Visit(EnterCastExpression, LeaveCastExpression, castExpression);
  425. }
  426. public event Action<CheckedExpression> EnterCheckedExpression, LeaveCheckedExpression;
  427. void IAstVisitor.VisitCheckedExpression(CheckedExpression checkedExpression)
  428. {
  429. Visit(EnterCheckedExpression, LeaveCheckedExpression, checkedExpression);
  430. }
  431. public event Action<ConditionalExpression> EnterConditionalExpression, LeaveConditionalExpression;
  432. void IAstVisitor.VisitConditionalExpression(ConditionalExpression conditionalExpression)
  433. {
  434. Visit(EnterConditionalExpression, LeaveConditionalExpression, conditionalExpression);
  435. }
  436. public event Action<IdentifierExpression> EnterIdentifierExpression, LeaveIdentifierExpression;
  437. void IAstVisitor.VisitIdentifierExpression(IdentifierExpression identifierExpression)
  438. {
  439. Visit(EnterIdentifierExpression, LeaveIdentifierExpression, identifierExpression);
  440. }
  441. public event Action<IndexerExpression> EnterIndexerExpression, LeaveIndexerExpression;
  442. void IAstVisitor.VisitIndexerExpression(IndexerExpression indexerExpression)
  443. {
  444. Visit(EnterIndexerExpression, LeaveIndexerExpression, indexerExpression);
  445. }
  446. public event Action<InvocationExpression> EnterInvocationExpression, LeaveInvocationExpression;
  447. void IAstVisitor.VisitInvocationExpression(InvocationExpression invocationExpression)
  448. {
  449. Visit(EnterInvocationExpression, LeaveInvocationExpression, invocationExpression);
  450. }
  451. public event Action<DirectionExpression> EnterDirectionExpression, LeaveDirectionExpression;
  452. void IAstVisitor.VisitDirectionExpression(DirectionExpression directionExpression)
  453. {
  454. Visit(EnterDirectionExpression, LeaveDirectionExpression, directionExpression);
  455. }
  456. public event Action<MemberReferenceExpression> EnterMemberReferenceExpression, LeaveMemberReferenceExpression;
  457. void IAstVisitor.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression)
  458. {
  459. Visit(EnterMemberReferenceExpression, LeaveMemberReferenceExpression, memberReferenceExpression);
  460. }
  461. public event Action<NullReferenceExpression> EnterNullReferenceExpression, LeaveNullReferenceExpression;
  462. void IAstVisitor.VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression)
  463. {
  464. Visit(EnterNullReferenceExpression, LeaveNullReferenceExpression, nullReferenceExpression);
  465. }
  466. public event Action<ObjectCreateExpression> EnterObjectCreateExpression, LeaveObjectCreateExpression;
  467. void IAstVisitor.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression)
  468. {
  469. Visit(EnterObjectCreateExpression, LeaveObjectCreateExpression, objectCreateExpression);
  470. }
  471. public event Action<AnonymousTypeCreateExpression> EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression;
  472. void IAstVisitor.VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression)
  473. {
  474. Visit(EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression, anonymousTypeCreateExpression);
  475. }
  476. public event Action<ArrayCreateExpression> EnterArrayCreateExpression, LeaveArrayCreateExpression;
  477. void IAstVisitor.VisitArrayCreateExpression(ArrayCreateExpression arraySCreateExpression)
  478. {
  479. Visit(EnterArrayCreateExpression, LeaveArrayCreateExpression, arraySCreateExpression);
  480. }
  481. public event Action<ParenthesizedExpression> EnterParenthesizedExpression, LeaveParenthesizedExpression;
  482. void IAstVisitor.VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression)
  483. {
  484. Visit(EnterParenthesizedExpression, LeaveParenthesizedExpression, parenthesizedExpression);
  485. }
  486. public event Action<PointerReferenceExpression> EnterPointerReferenceExpression, LeavePointerReferenceExpression;
  487. void IAstVisitor.VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression)
  488. {
  489. Visit(EnterPointerReferenceExpression, LeavePointerReferenceExpression, pointerReferenceExpression);
  490. }
  491. public event Action<PrimitiveExpression> EnterPrimitiveExpression, LeavePrimitiveExpression;
  492. void IAstVisitor.VisitPrimitiveExpression(PrimitiveExpression primitiveExpression)
  493. {
  494. Visit(EnterPrimitiveExpression, LeavePrimitiveExpression, primitiveExpression);
  495. }
  496. public event Action<SizeOfExpression> EnterSizeOfExpression, LeaveSizeOfExpression;
  497. void IAstVisitor.VisitSizeOfExpression(SizeOfExpression sizeOfExpression)
  498. {
  499. Visit(EnterSizeOfExpression, LeaveSizeOfExpression, sizeOfExpression);
  500. }
  501. public event Action<StackAllocExpression> EnterStackAllocExpression, LeaveStackAllocExpression;
  502. void IAstVisitor.VisitStackAllocExpression(StackAllocExpression stackAllocExpression)
  503. {
  504. Visit(EnterStackAllocExpression, LeaveStackAllocExpression, stackAllocExpression);
  505. }
  506. public event Action<ThisReferenceExpression> EnterThisReferenceExpression, LeaveThisReferenceExpression;
  507. void IAstVisitor.VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
  508. {
  509. Visit(EnterThisReferenceExpression, LeaveThisReferenceExpression, thisReferenceExpression);
  510. }
  511. public event Action<TypeOfExpression> EnterTypeOfExpression, LeaveTypeOfExpression;
  512. void IAstVisitor.VisitTypeOfExpression(TypeOfExpression typeOfExpression)
  513. {
  514. Visit(EnterTypeOfExpression, LeaveTypeOfExpression, typeOfExpression);
  515. }
  516. public event Action<TypeReferenceExpression> EnterTypeReferenceExpression, LeaveTypeReferenceExpression;
  517. void IAstVisitor.VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression)
  518. {
  519. Visit(EnterTypeReferenceExpression, LeaveTypeReferenceExpression, typeReferenceExpression);
  520. }
  521. public event Action<UnaryOperatorExpression> EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression;
  522. void IAstVisitor.VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression)
  523. {
  524. Visit(EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression, unaryOperatorExpression);
  525. }
  526. public event Action<UncheckedExpression> EnterUncheckedExpression, LeaveUncheckedExpression;
  527. void IAstVisitor.VisitUncheckedExpression(UncheckedExpression uncheckedExpression)
  528. {
  529. Visit(EnterUncheckedExpression, LeaveUncheckedExpression, uncheckedExpression);
  530. }
  531. public event Action<QueryExpression> EnterQueryExpression, LeaveQueryExpression;
  532. void IAstVisitor.VisitQueryExpression(QueryExpression queryExpression)
  533. {
  534. Visit(EnterQueryExpression, LeaveQueryExpression, queryExpression);
  535. }
  536. public event Action<QueryContinuationClause> EnterQueryContinuationClause, LeaveQueryContinuationClause;
  537. void IAstVisitor.VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause)
  538. {
  539. Visit(EnterQueryContinuationClause, LeaveQueryContinuationClause, queryContinuationClause);
  540. }
  541. public event Action<QueryFromClause> EnterQueryFromClause, LeaveQueryFromClause;
  542. void IAstVisitor.VisitQueryFromClause(QueryFromClause queryFromClause)
  543. {
  544. Visit(EnterQueryFromClause, LeaveQueryFromClause, queryFromClause);
  545. }
  546. public event Action<QueryLetClause> EnterQueryLetClause, LeaveQueryLetClause;
  547. void IAstVisitor.VisitQueryLetClause(QueryLetClause queryLetClause)
  548. {
  549. Visit(EnterQueryLetClause, LeaveQueryLetClause, queryLetClause);
  550. }
  551. public event Action<QueryWhereClause> EnterQueryWhereClause, LeaveQueryWhereClause;
  552. void IAstVisitor.VisitQueryWhereClause(QueryWhereClause queryWhereClause)
  553. {
  554. Visit(EnterQueryWhereClause, LeaveQueryWhereClause, queryWhereClause);
  555. }
  556. public event Action<QueryJoinClause> EnterQueryJoinClause, LeaveQueryJoinClause;
  557. void IAstVisitor.VisitQueryJoinClause(QueryJoinClause queryJoinClause)
  558. {
  559. Visit(EnterQueryJoinClause, LeaveQueryJoinClause, queryJoinClause);
  560. }
  561. public event Action<QueryOrderClause> EnterQueryOrderClause, LeaveQueryOrderClause;
  562. void IAstVisitor.VisitQueryOrderClause(QueryOrderClause queryOrderClause)
  563. {
  564. Visit(EnterQueryOrderClause, LeaveQueryOrderClause, queryOrderClause);
  565. }
  566. public event Action<QueryOrdering> EnterQueryOrdering, LeaveQueryOrdering;
  567. void IAstVisitor.VisitQueryOrdering(QueryOrdering queryOrdering)
  568. {
  569. Visit(EnterQueryOrdering, LeaveQueryOrdering, queryOrdering);
  570. }
  571. public event Action<QuerySelectClause> EnterQuerySelectClause, LeaveQuerySelectClause;
  572. void IAstVisitor.VisitQuerySelectClause(QuerySelectClause querySelectClause)
  573. {
  574. Visit(EnterQuerySelectClause, LeaveQuerySelectClause, querySelectClause);
  575. }
  576. public event Action<QueryGroupClause> EnterQueryGroupClause, LeaveQueryGroupClause;
  577. void IAstVisitor.VisitQueryGroupClause(QueryGroupClause queryGroupClause)
  578. {
  579. Visit(EnterQueryGroupClause, LeaveQueryGroupClause, queryGroupClause);
  580. }
  581. public event Action<AsExpression> EnterAsExpression, LeaveAsExpression;
  582. void IAstVisitor.VisitAsExpression(AsExpression asExpression)
  583. {
  584. Visit(EnterAsExpression, LeaveAsExpression, asExpression);
  585. }
  586. public event Action<IsExpression> EnterIsExpression, LeaveIsExpression;
  587. void IAstVisitor.VisitIsExpression(IsExpression isExpression)
  588. {
  589. Visit(EnterIsExpression, LeaveIsExpression, isExpression);
  590. }
  591. public event Action<DefaultValueExpression> EnterDefaultValueExpression, LeaveDefaultValueExpression;
  592. void IAstVisitor.VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression)
  593. {
  594. Visit(EnterDefaultValueExpression, LeaveDefaultValueExpression, defaultValueExpression);
  595. }
  596. public event Action<UndocumentedExpression> EnterUndocumentedExpression, LeaveUndocumentedExpression;
  597. void IAstVisitor.VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression)
  598. {
  599. Visit(EnterUndocumentedExpression, LeaveUndocumentedExpression, undocumentedExpression);
  600. }
  601. public event Action<ArrayInitializerExpression> EnterArrayInitializerExpression, LeaveArrayInitializerExpression;
  602. void IAstVisitor.VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression)
  603. {
  604. Visit(EnterArrayInitializerExpression, LeaveArrayInitializerExpression, arrayInitializerExpression);
  605. }
  606. public event Action<ArraySpecifier> EnterArraySpecifier, LeaveArraySpecifier;
  607. void IAstVisitor.VisitArraySpecifier(ArraySpecifier arraySpecifier)
  608. {
  609. Visit(EnterArraySpecifier, LeaveArraySpecifier, arraySpecifier);
  610. }
  611. public event Action<NamedArgumentExpression> EnterNamedArgumentExpression, LeaveNamedArgumentExpression;
  612. void IAstVisitor.VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression)
  613. {
  614. Visit(EnterNamedArgumentExpression, LeaveNamedArgumentExpression, namedArgumentExpression);
  615. }
  616. public event Action<NamedExpression> EnterNamedExpression, LeaveNamedExpression;
  617. void IAstVisitor.VisitNamedExpression(NamedExpression namedExpression)
  618. {
  619. Visit(EnterNamedExpression, LeaveNamedExpression, namedExpression);
  620. }
  621. void IAstVisitor.VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
  622. {
  623. }
  624. }
  625. }