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

Side by Side Diff: pkg/compiler/lib/src/parser/member_listener.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.parser.member_listener; 5 library dart2js.parser.member_listener;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../elements/elements.dart' show 8 import '../elements/elements.dart'
9 Element, 9 show Element, ElementKind, Elements, MetadataAnnotation;
10 ElementKind, 10 import '../elements/modelx.dart'
11 Elements, 11 show ClassElementX, ElementX, FieldElementX, VariableList;
12 MetadataAnnotation; 12 import '../tokens/token.dart' show Token;
13 import '../elements/modelx.dart' show
14 ClassElementX,
15 ElementX,
16 FieldElementX,
17 VariableList;
18 import '../tokens/token.dart' show
19 Token;
20 import '../tree/tree.dart'; 13 import '../tree/tree.dart';
21 14
22 import 'element_listener.dart' show 15 import 'element_listener.dart' show ScannerOptions;
23 ScannerOptions; 16 import 'node_listener.dart' show NodeListener;
24 import 'node_listener.dart' show 17 import 'partial_elements.dart'
25 NodeListener; 18 show
26 import 'partial_elements.dart' show 19 PartialConstructorElement,
27 PartialConstructorElement, 20 PartialFunctionElement,
28 PartialFunctionElement, 21 PartialMetadataAnnotation;
29 PartialMetadataAnnotation;
30 22
31 class MemberListener extends NodeListener { 23 class MemberListener extends NodeListener {
32 final ClassElementX enclosingClass; 24 final ClassElementX enclosingClass;
33 25
34 MemberListener(ScannerOptions scannerOptions, 26 MemberListener(ScannerOptions scannerOptions, DiagnosticReporter listener,
35 DiagnosticReporter listener, 27 ClassElementX enclosingElement)
36 ClassElementX enclosingElement)
37 : this.enclosingClass = enclosingElement, 28 : this.enclosingClass = enclosingElement,
38 super(scannerOptions, listener, enclosingElement.compilationUnit); 29 super(scannerOptions, listener, enclosingElement.compilationUnit);
39 30
40 bool isConstructorName(Node nameNode) { 31 bool isConstructorName(Node nameNode) {
41 if (enclosingClass == null || 32 if (enclosingClass == null || enclosingClass.kind != ElementKind.CLASS) {
42 enclosingClass.kind != ElementKind.CLASS) {
43 return false; 33 return false;
44 } 34 }
45 String name; 35 String name;
46 if (nameNode.asIdentifier() != null) { 36 if (nameNode.asIdentifier() != null) {
47 name = nameNode.asIdentifier().source; 37 name = nameNode.asIdentifier().source;
48 } else { 38 } else {
49 Send send = nameNode.asSend(); 39 Send send = nameNode.asSend();
50 name = send.receiver.asIdentifier().source; 40 name = send.receiver.asIdentifier().source;
51 } 41 }
52 return enclosingClass.name == name; 42 return enclosingClass.name == name;
(...skipping 30 matching lines...) Expand all
83 super.endMethod(getOrSet, beginToken, endToken); 73 super.endMethod(getOrSet, beginToken, endToken);
84 FunctionExpression method = popNode(); 74 FunctionExpression method = popNode();
85 pushNode(null); 75 pushNode(null);
86 bool isConstructor = isConstructorName(method.name); 76 bool isConstructor = isConstructorName(method.name);
87 String name = getMethodNameHack(method.name); 77 String name = getMethodNameHack(method.name);
88 Element memberElement; 78 Element memberElement;
89 if (isConstructor) { 79 if (isConstructor) {
90 if (getOrSet != null) { 80 if (getOrSet != null) {
91 recoverableError(getOrSet, 'illegal modifier'); 81 recoverableError(getOrSet, 'illegal modifier');
92 } 82 }
93 memberElement = new PartialConstructorElement( 83 memberElement = new PartialConstructorElement(name, beginToken, endToken,
94 name, beginToken, endToken, 84 ElementKind.GENERATIVE_CONSTRUCTOR, method.modifiers, enclosingClass);
95 ElementKind.GENERATIVE_CONSTRUCTOR,
96 method.modifiers,
97 enclosingClass);
98 } else { 85 } else {
99 memberElement = new PartialFunctionElement( 86 memberElement = new PartialFunctionElement(name, beginToken, getOrSet,
100 name, beginToken, getOrSet, endToken, 87 endToken, method.modifiers, enclosingClass,
101 method.modifiers, enclosingClass, hasBody: method.hasBody); 88 hasBody: method.hasBody);
102 } 89 }
103 addMember(memberElement); 90 addMember(memberElement);
104 } 91 }
105 92
106 void endFactoryMethod(Token beginToken, Token endToken) { 93 void endFactoryMethod(Token beginToken, Token endToken) {
107 super.endFactoryMethod(beginToken, endToken); 94 super.endFactoryMethod(beginToken, endToken);
108 FunctionExpression method = popNode(); 95 FunctionExpression method = popNode();
109 pushNode(null); 96 pushNode(null);
110 String name = getMethodNameHack(method.name); 97 String name = getMethodNameHack(method.name);
111 Identifier singleIdentifierName = method.name.asIdentifier(); 98 Identifier singleIdentifierName = method.name.asIdentifier();
112 if (singleIdentifierName != null && singleIdentifierName.source == name) { 99 if (singleIdentifierName != null && singleIdentifierName.source == name) {
113 if (name != enclosingClass.name) { 100 if (name != enclosingClass.name) {
114 reporter.reportErrorMessage( 101 reporter.reportErrorMessage(
115 singleIdentifierName, 102 singleIdentifierName,
116 MessageKind.INVALID_UNNAMED_CONSTRUCTOR_NAME, 103 MessageKind.INVALID_UNNAMED_CONSTRUCTOR_NAME,
117 {'name': enclosingClass.name}); 104 {'name': enclosingClass.name});
118 } 105 }
119 } 106 }
120 Element memberElement = new PartialConstructorElement( 107 Element memberElement = new PartialConstructorElement(
121 name, beginToken, endToken, 108 name,
109 beginToken,
110 endToken,
122 ElementKind.FACTORY_CONSTRUCTOR, 111 ElementKind.FACTORY_CONSTRUCTOR,
123 method.modifiers, 112 method.modifiers,
124 enclosingClass); 113 enclosingClass);
125 addMember(memberElement); 114 addMember(memberElement);
126 } 115 }
127 116
128 void endFields(int count, Token beginToken, Token endToken) { 117 void endFields(int count, Token beginToken, Token endToken) {
129 bool hasParseError = memberErrors.head; 118 bool hasParseError = memberErrors.head;
130 super.endFields(count, beginToken, endToken); 119 super.endFields(count, beginToken, endToken);
131 VariableDefinitions variableDefinitions = popNode(); 120 VariableDefinitions variableDefinitions = popNode();
132 Modifiers modifiers = variableDefinitions.modifiers; 121 Modifiers modifiers = variableDefinitions.modifiers;
133 pushNode(null); 122 pushNode(null);
134 void buildFieldElement(Identifier name, VariableList fields) { 123 void buildFieldElement(Identifier name, VariableList fields) {
135 Element element = 124 Element element = new FieldElementX(name, enclosingClass, fields);
136 new FieldElementX(name, enclosingClass, fields);
137 addMember(element); 125 addMember(element);
138 } 126 }
139 buildFieldElements(modifiers, variableDefinitions.definitions, 127 buildFieldElements(modifiers, variableDefinitions.definitions,
140 enclosingClass, 128 enclosingClass, buildFieldElement, beginToken, endToken, hasParseError);
141 buildFieldElement, beginToken, endToken,
142 hasParseError);
143 } 129 }
144 130
145 void endInitializer(Token assignmentOperator) { 131 void endInitializer(Token assignmentOperator) {
146 pushNode(null); // Super expects an expression, but 132 pushNode(null); // Super expects an expression, but
147 // ClassElementParser just skips expressions. 133 // ClassElementParser just skips expressions.
148 super.endInitializer(assignmentOperator); 134 super.endInitializer(assignmentOperator);
149 } 135 }
150 136
151 void endInitializers(int count, Token beginToken, Token endToken) { 137 void endInitializers(int count, Token beginToken, Token endToken) {
152 pushNode(null); 138 pushNode(null);
153 } 139 }
154 140
155 void addMetadata(ElementX memberElement) { 141 void addMetadata(ElementX memberElement) {
156 memberElement.metadata = metadata.toList(); 142 memberElement.metadata = metadata.toList();
157 } 143 }
158 144
159 void addMember(ElementX memberElement) { 145 void addMember(ElementX memberElement) {
160 addMetadata(memberElement); 146 addMetadata(memberElement);
161 enclosingClass.addMember(memberElement, reporter); 147 enclosingClass.addMember(memberElement, reporter);
162 } 148 }
163 149
164 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { 150 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
165 popNode(); // Discard arguments. 151 popNode(); // Discard arguments.
166 if (periodBeforeName != null) { 152 if (periodBeforeName != null) {
167 popNode(); // Discard name. 153 popNode(); // Discard name.
168 } 154 }
169 popNode(); // Discard node (Send or Identifier). 155 popNode(); // Discard node (Send or Identifier).
170 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken)); 156 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken));
171 } 157 }
172 } 158 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/listener.dart ('k') | pkg/compiler/lib/src/parser/node_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698