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

Side by Side Diff: pkg/front_end/lib/src/fasta/source/outline_builder.dart

Issue 2689793002: Track names in DeclarationBuilder. (Closed)
Patch Set: Created 3 years, 10 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 fasta.outline_builder; 5 library fasta.outline_builder;
6 6
7 import 'package:kernel/ast.dart' show 7 import 'package:kernel/ast.dart' show
8 AsyncMarker, 8 AsyncMarker,
9 ProcedureKind; 9 ProcedureKind;
10 10
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 void endLibraryName(Token libraryKeyword, Token semicolon) { 187 void endLibraryName(Token libraryKeyword, Token semicolon) {
188 debugEvent("endLibraryName"); 188 debugEvent("endLibraryName");
189 String name = pop(); 189 String name = pop();
190 List<MetadataBuilder> metadata = pop(); 190 List<MetadataBuilder> metadata = pop();
191 library.name = name; 191 library.name = name;
192 library.metadata = metadata; 192 library.metadata = metadata;
193 } 193 }
194 194
195 @override 195 @override
196 void beginClassDeclaration(Token begin, Token name) { 196 void beginClassDeclaration(Token begin, Token name) {
197 library.beginNestedDeclaration(); 197 library.beginNestedDeclaration(name.value);
198 } 198 }
199 199
200 @override 200 @override
201 void endClassDeclaration(int interfacesCount, Token beginToken, 201 void endClassDeclaration(int interfacesCount, Token beginToken,
202 Token extendsKeyword, Token implementsKeyword, Token endToken) { 202 Token extendsKeyword, Token implementsKeyword, Token endToken) {
203 debugEvent("endClassDeclaration"); 203 debugEvent("endClassDeclaration");
204 List<TypeBuilder> interfaces = popList(interfacesCount); 204 List<TypeBuilder> interfaces = popList(interfacesCount);
205 TypeBuilder supertype = pop(); 205 TypeBuilder supertype = pop();
206 List<TypeVariableBuilder> typeVariables = pop(); 206 List<TypeVariableBuilder> typeVariables = pop();
207 String name = pop(); 207 String name = pop();
208 int modifiers = Modifier.validate(pop()); 208 int modifiers = Modifier.validate(pop());
209 List<MetadataBuilder> metadata = pop(); 209 List<MetadataBuilder> metadata = pop();
210 library.addClass(metadata, modifiers, name, typeVariables, supertype, 210 library.addClass(metadata, modifiers, name, typeVariables, supertype,
211 interfaces, beginToken.charOffset); 211 interfaces, beginToken.charOffset);
212 checkEmpty(); 212 checkEmpty();
213 } 213 }
214 214
215 ProcedureKind computeProcedureKind(Token token) { 215 ProcedureKind computeProcedureKind(Token token) {
216 if (token == null) return ProcedureKind.Method; 216 if (token == null) return ProcedureKind.Method;
217 if (optional("get", token)) return ProcedureKind.Getter; 217 if (optional("get", token)) return ProcedureKind.Getter;
218 if (optional("set", token)) return ProcedureKind.Setter; 218 if (optional("set", token)) return ProcedureKind.Setter;
219 return internalError("Unhandled: ${token.value}"); 219 return internalError("Unhandled: ${token.value}");
220 } 220 }
221 221
222 @override 222 @override
223 void beginTopLevelMethod(Token token, Token name) { 223 void beginTopLevelMethod(Token token, Token name) {
224 library.beginNestedDeclaration(hasMembers: false); 224 library.beginNestedDeclaration(name.value, hasMembers: false);
225 } 225 }
226 226
227 @override 227 @override
228 void endTopLevelMethod( 228 void endTopLevelMethod(
229 Token beginToken, Token getOrSet, Token endToken) { 229 Token beginToken, Token getOrSet, Token endToken) {
230 debugEvent("endTopLevelMethod"); 230 debugEvent("endTopLevelMethod");
231 MethodBody kind = pop(); 231 MethodBody kind = pop();
232 AsyncMarker asyncModifier = pop(); 232 AsyncMarker asyncModifier = pop();
233 List<FormalParameterBuilder> formals = pop(); 233 List<FormalParameterBuilder> formals = pop();
234 List<TypeVariableBuilder> typeVariables = pop(); 234 List<TypeVariableBuilder> typeVariables = pop();
235 String name = pop(); 235 String name = pop();
236 TypeBuilder returnType = pop(); 236 TypeBuilder returnType = pop();
237 int modifiers = Modifier.validate(pop(), 237 int modifiers = Modifier.validate(pop(),
238 isAbstract: kind == MethodBody.Abstract); 238 isAbstract: kind == MethodBody.Abstract);
239 List<MetadataBuilder> metadata = pop(); 239 List<MetadataBuilder> metadata = pop();
240 checkEmpty(); 240 checkEmpty();
241 library.addProcedure(metadata, modifiers, returnType, name, 241 library.addProcedure(metadata, modifiers, returnType, name,
242 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), 242 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet),
243 beginToken.charOffset); 243 beginToken.charOffset, isTopLevel: true);
244 } 244 }
245 245
246 @override 246 @override
247 void handleNoFunctionBody(Token token) { 247 void handleNoFunctionBody(Token token) {
248 debugEvent("NoFunctionBody"); 248 debugEvent("NoFunctionBody");
249 push(MethodBody.Abstract); 249 push(MethodBody.Abstract);
250 } 250 }
251 251
252 @override 252 @override
253 void handleFunctionBodySkipped(Token token) { 253 void handleFunctionBodySkipped(Token token) {
254 debugEvent("handleFunctionBodySkipped"); 254 debugEvent("handleFunctionBodySkipped");
255 push(MethodBody.Regular); 255 push(MethodBody.Regular);
256 } 256 }
257 257
258 @override 258 @override
259 void beginMethod(Token token, Token name) { 259 void beginMethod(Token token, Token name) {
260 library.beginNestedDeclaration(hasMembers: false); 260 library.beginNestedDeclaration(name.value, hasMembers: false);
261 } 261 }
262 262
263 @override 263 @override
264 void endMethod(Token getOrSet, Token beginToken, Token endToken) { 264 void endMethod(Token getOrSet, Token beginToken, Token endToken) {
265 debugEvent("Method"); 265 debugEvent("Method");
266 MethodBody bodyKind = pop(); 266 MethodBody bodyKind = pop();
267 if (bodyKind == MethodBody.RedirectingFactoryBody) { 267 if (bodyKind == MethodBody.RedirectingFactoryBody) {
268 // This will cause an error later. 268 // This will cause an error later.
269 pop(); 269 pop();
270 } 270 }
(...skipping 11 matching lines...) Expand all
282 kind = ProcedureKind.Operator; 282 kind = ProcedureKind.Operator;
283 } else { 283 } else {
284 name = nameOrOperator; 284 name = nameOrOperator;
285 kind = computeProcedureKind(getOrSet); 285 kind = computeProcedureKind(getOrSet);
286 } 286 }
287 TypeBuilder returnType = pop(); 287 TypeBuilder returnType = pop();
288 int modifiers = Modifier.validate(pop(), 288 int modifiers = Modifier.validate(pop(),
289 isAbstract: bodyKind == MethodBody.Abstract); 289 isAbstract: bodyKind == MethodBody.Abstract);
290 List<MetadataBuilder> metadata = pop(); 290 List<MetadataBuilder> metadata = pop();
291 library.addProcedure(metadata, modifiers, returnType, name, typeVariables, 291 library.addProcedure(metadata, modifiers, returnType, name, typeVariables,
292 formals, asyncModifier, kind, beginToken.charOffset); 292 formals, asyncModifier, kind, beginToken.charOffset, isTopLevel: false);
293 } 293 }
294 294
295 @override 295 @override
296 void endMixinApplication() { 296 void endMixinApplication() {
297 debugEvent("MixinApplication"); 297 debugEvent("MixinApplication");
298 List<TypeBuilder> mixins = pop(); 298 List<TypeBuilder> mixins = pop();
299 TypeBuilder supertype = pop(); 299 TypeBuilder supertype = pop();
300 push(library.addMixinApplication(supertype, mixins, -1)); 300 push(library.addMixinApplication(supertype, mixins, -1));
301 } 301 }
302 302
303 @override 303 @override
304 void beginNamedMixinApplication(Token begin, Token name) { 304 void beginNamedMixinApplication(Token begin, Token name) {
305 library.beginNestedDeclaration(hasMembers: false); 305 library.beginNestedDeclaration(name.value, hasMembers: false);
306 } 306 }
307 307
308 @override 308 @override
309 void endNamedMixinApplication( 309 void endNamedMixinApplication(
310 Token classKeyword, Token implementsKeyword, Token endToken) { 310 Token classKeyword, Token implementsKeyword, Token endToken) {
311 debugEvent("endNamedMixinApplication"); 311 debugEvent("endNamedMixinApplication");
312 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword); 312 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword);
313 TypeBuilder mixinApplication = pop(); 313 TypeBuilder mixinApplication = pop();
314 List<TypeVariableBuilder> typeVariables = pop(); 314 List<TypeVariableBuilder> typeVariables = pop();
315 String name = pop(); 315 String name = pop();
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 void endEnum(Token enumKeyword, Token endBrace, int count) { 427 void endEnum(Token enumKeyword, Token endBrace, int count) {
428 List<String> constants = popList(count); 428 List<String> constants = popList(count);
429 String name = pop(); 429 String name = pop();
430 List<MetadataBuilder> metadata = pop(); 430 List<MetadataBuilder> metadata = pop();
431 library.addEnum(metadata, name, constants, enumKeyword.charOffset); 431 library.addEnum(metadata, name, constants, enumKeyword.charOffset);
432 checkEmpty(); 432 checkEmpty();
433 } 433 }
434 434
435 @override 435 @override
436 void beginFunctionTypeAlias(Token token) { 436 void beginFunctionTypeAlias(Token token) {
437 library.beginNestedDeclaration(hasMembers: false); 437 library.beginNestedDeclaration(null, hasMembers: false);
438 } 438 }
439 439
440 @override 440 @override
441 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { 441 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
442 debugEvent("endFunctionTypeAlias"); 442 debugEvent("endFunctionTypeAlias");
443 List<FormalParameterBuilder> formals = pop(); 443 List<FormalParameterBuilder> formals = pop();
444 List<TypeVariableBuilder> typeVariables = pop(); 444 List<TypeVariableBuilder> typeVariables = pop();
445 String name = pop(); 445 String name = pop();
446 TypeBuilder returnType = pop(); 446 TypeBuilder returnType = pop();
447 List<MetadataBuilder> metadata = pop(); 447 List<MetadataBuilder> metadata = pop();
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 Link<Token> handleMemberName(Link<Token> identifiers) { 585 Link<Token> handleMemberName(Link<Token> identifiers) {
586 if (!isDartLibrary || identifiers.isEmpty) return identifiers; 586 if (!isDartLibrary || identifiers.isEmpty) return identifiers;
587 return removeNativeClause(identifiers); 587 return removeNativeClause(identifiers);
588 } 588 }
589 589
590 @override 590 @override
591 void debugEvent(String name) { 591 void debugEvent(String name) {
592 // printEvent(name); 592 // printEvent(name);
593 } 593 }
594 } 594 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698