Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: sdk/lib/_internal/compiler/implementation/elements/visitor.dart

Issue 96623004: Add a visitor for Elements (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library visitor;
6
7 import 'elements.dart';
8 import 'modelx.dart';
9 import '../scanner/scannerlib.dart'
10 show PartialClassElement;
11 import '../ssa/ssa.dart'
12 show InterceptedElement;
13 import '../closure.dart'
14 show ThisElement,
15 CheckVariableElement,
16 BoxElement,
17 BoxFieldElement,
18 ClosureClassElement,
19 ClosureFieldElement;
20
21 abstract class ElementVisitor<R> {
22 R visit(Element e) => e.accept(this);
23
24 R visitElement(Element e);
25 R visitElementX(ElementX e) => visitElement(e);
26 R visitErroneousElement(ErroneousElement e) => visitFunctionElement(e);
27 R visitWarnOnUseElement(WarnOnUseElement e) => visitElement(e);
28 R visitAmbiguousElement(AmbiguousElement e) => visitElement(e);
29 R visitScopeContainerElement(ScopeContainerElement e) => visitElement(e);
30 R visitCompilationUnitElement(CompilationUnitElement e) => visitElement(e);
31 R visitLibraryElement(LibraryElement e) => visitScopeContainerElement(e);
32 R visitPrefixElement(PrefixElement e) => visitElement(e);
33 R visitTypedefElement(TypedefElement e) => visitElement(e);
34 R visitVariableElement(VariableElement e) => visitElement(e);
35 R visitFieldParameterElement(FieldParameterElement e) => visitElement(e);
36 R visitVariableListElement(VariableListElement e) => visitElement(e);
37 R visitAbstractFieldElement(AbstractFieldElement e) => visitElement(e);
38 R visitFunctionElement(FunctionElement e) => visitElement(e);
39 R visitConstructorBodyElement(ConstructorBodyElement e) => visitElement(e);
40 R visitClassElement(ClassElement e) => visitScopeContainerElement(e);
41 R visitTypeDeclarationElement(TypeDeclarationElement e) => visitElement(e);
42 R visitBaseClassElementX(BaseClassElementX e) => visitClassElement(e);
43 R visitClassElementX(ClassElementX e) => visitBaseClassElementX(e);
ahe 2013/11/29 11:44:50 Can we find a way to avoid having X-elements in th
sigurdm 2013/11/29 12:29:52 yes
44 R visitMixinApplicationElement(MixinApplicationElement e) {
45 visitClassElement(e);
46 }
47 R visitLabelElement(LabelElement e) => visitElement(e);
48 R visitTargetElement(TargetElement e) => visitElement(e);
49 R visitTypeVariableElement(TypeVariableElement e) => visitElement(e);
50 R visitErroneousElementX(ErroneousElementX e) => visitErroneousElement(e);
51 R visitWarnOnUseElementX(WarnOnUseElementX e) => visitWarnOnUseElement(e);
52 R visitAmbiguousElementX(AmbiguousElementX e) => visitAmbiguousElement(e);
53 R visitLibraryElementX(LibraryElementX e) => visitLibraryElement(e);
54 R visitPrefixElementX(PrefixElementX e) => visitPrefixElement(e);
55 R visitTypedefElementX(TypedefElementX e) => visitTypedefElement(e);
56 R visitVariableElementX(VariableElementX e) => visitVariableElement(e);
57 R visitFieldParameterElementX(FieldParameterElementX e) {
58 return visitFieldParameterElement(e);
59 }
60 R visitVariableListElementX(VariableListElementX e) {
61 return visitVariableListElement(e);
62 }
63 R visitAbstractFieldElementX(AbstractFieldElementX e) {
64 return visitAbstractFieldElement(e);
65 }
66 R visitFunctionElementX(FunctionElementX e) => visitFunctionElement(e);
67 R visitConstructorBodyElementX(ConstructorBodyElementX e) {
68 return visitFunctionElementX(e);
69 }
70 R visitSynthesizedConstructorElementX(SynthesizedConstructorElementX e) {
71 return visitFunctionElementX(e);
72 }
73 R visitVoidElementX(VoidElementX e) => visitElementX(e);
74 R visitLabelElementX(LabelElementX e) => visitLabelElement(e);
75 R visitTargetElementX(TargetElementX e) => visitTargetElement(e);
76 R visitTypeVariableElementX(TypeVariableElementX e) {
77 visitTypeVariableElement(e);
78 }
79 R visitPartialClassElement(PartialClassElement e) {
80 return visitClassElementX(e);
81 }
82 R visitInterceptedElement(InterceptedElement e) => visitElementX(e);
83 R visitThisElement(ThisElement e) => visitElementX(e);
84 R visitCheckVariableElement(CheckVariableElement e ) => visitElementX(e);
85 R visitBoxElement(BoxElement e) => visitElementX(e);
86 R visitBoxFieldElement(BoxFieldElement e) => visitElementX(e);
87 R visitClosureClassElement(ClosureClassElement e) => visitClassElementX(e);
88 R visitClosureFieldElement(ClosureFieldElement e) => visitVariableElement(e);
89 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698