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

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

Issue 2746013003: [fasta] Add and correct even more offsets (Closed)
Patch Set: Created 3 years, 9 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 AsyncMarker, ProcedureKind; 7 import 'package:kernel/ast.dart' show AsyncMarker, ProcedureKind;
8 8
9 import '../parser/parser.dart' show FormalParameterType, optional; 9 import '../parser/parser.dart' show FormalParameterType, optional;
10 10
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 TypeBuilder supertype = pop(); 215 TypeBuilder supertype = pop();
216 List<TypeVariableBuilder> typeVariables = pop(); 216 List<TypeVariableBuilder> typeVariables = pop();
217 String name = pop(); 217 String name = pop();
218 if (typeVariables != null && supertype is MixinApplicationBuilder) { 218 if (typeVariables != null && supertype is MixinApplicationBuilder) {
219 supertype.typeVariables = typeVariables; 219 supertype.typeVariables = typeVariables;
220 supertype.subclassName = name; 220 supertype.subclassName = name;
221 } 221 }
222 int modifiers = Modifier.validate(pop()); 222 int modifiers = Modifier.validate(pop());
223 List<MetadataBuilder> metadata = pop(); 223 List<MetadataBuilder> metadata = pop();
224 library.addClass(metadata, modifiers, name, typeVariables, supertype, 224 library.addClass(metadata, modifiers, name, typeVariables, supertype,
225 interfaces, beginToken.charOffset); 225 interfaces, classKeyword.next?.charOffset ?? beginToken.charOffset);
226 checkEmpty(beginToken.charOffset); 226 checkEmpty(beginToken.charOffset);
227 } 227 }
228 228
229 ProcedureKind computeProcedureKind(Token token) { 229 ProcedureKind computeProcedureKind(Token token) {
230 if (token == null) return ProcedureKind.Method; 230 if (token == null) return ProcedureKind.Method;
231 if (optional("get", token)) return ProcedureKind.Getter; 231 if (optional("get", token)) return ProcedureKind.Getter;
232 if (optional("set", token)) return ProcedureKind.Setter; 232 if (optional("set", token)) return ProcedureKind.Setter;
233 return internalError("Unhandled: ${token.lexeme}"); 233 return internalError("Unhandled: ${token.lexeme}");
234 } 234 }
235 235
236 @override 236 @override
237 void beginTopLevelMethod(Token token, Token name) { 237 void beginTopLevelMethod(Token token, Token name) {
238 library.beginNestedDeclaration(name.lexeme, hasMembers: false); 238 library.beginNestedDeclaration(name.lexeme, hasMembers: false);
239 } 239 }
240 240
241 @override 241 @override
242 void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) { 242 void endTopLevelMethod(Token beginToken, Token getOrSet,
243 Token formalParametersToken, Token endToken) {
243 debugEvent("endTopLevelMethod"); 244 debugEvent("endTopLevelMethod");
244 MethodBody kind = pop(); 245 MethodBody kind = pop();
245 AsyncMarker asyncModifier = pop(); 246 AsyncMarker asyncModifier = pop();
246 List<FormalParameterBuilder> formals = pop(); 247 List<FormalParameterBuilder> formals = pop();
247 List<TypeVariableBuilder> typeVariables = pop(); 248 List<TypeVariableBuilder> typeVariables = pop();
248 String name = pop(); 249 String name = pop();
249 TypeBuilder returnType = pop(); 250 TypeBuilder returnType = pop();
250 int modifiers = 251 int modifiers =
251 Modifier.validate(pop(), isAbstract: kind == MethodBody.Abstract); 252 Modifier.validate(pop(), isAbstract: kind == MethodBody.Abstract);
252 List<MetadataBuilder> metadata = pop(); 253 List<MetadataBuilder> metadata = pop();
253 checkEmpty(beginToken.charOffset); 254 checkEmpty(beginToken.charOffset);
254 library.addProcedure( 255 library.addProcedure(
255 metadata, 256 metadata,
256 modifiers, 257 modifiers,
257 returnType, 258 returnType,
258 name, 259 name,
259 typeVariables, 260 typeVariables,
260 formals, 261 formals,
261 asyncModifier, 262 asyncModifier,
262 computeProcedureKind(getOrSet), 263 computeProcedureKind(getOrSet),
263 beginToken.charOffset, 264 beginToken.charOffset,
265 formalParametersToken.charOffset,
264 endToken.charOffset, 266 endToken.charOffset,
265 nativeMethodName, 267 nativeMethodName,
266 isTopLevel: true); 268 isTopLevel: true);
267 nativeMethodName = null; 269 nativeMethodName = null;
268 } 270 }
269 271
270 @override 272 @override
271 void handleNoFunctionBody(Token token) { 273 void handleNoFunctionBody(Token token) {
272 debugEvent("NoFunctionBody"); 274 debugEvent("NoFunctionBody");
273 push(MethodBody.Abstract); 275 push(MethodBody.Abstract);
274 } 276 }
275 277
276 @override 278 @override
277 void handleFunctionBodySkipped(Token token) { 279 void handleFunctionBodySkipped(Token token) {
278 debugEvent("handleFunctionBodySkipped"); 280 debugEvent("handleFunctionBodySkipped");
279 push(MethodBody.Regular); 281 push(MethodBody.Regular);
280 } 282 }
281 283
282 @override 284 @override
283 void beginMethod(Token token, Token name) { 285 void beginMethod(Token token, Token name) {
284 library.beginNestedDeclaration(name.lexeme, hasMembers: false); 286 library.beginNestedDeclaration(name.lexeme, hasMembers: false);
285 } 287 }
286 288
287 @override 289 @override
288 void endMethod(Token getOrSet, Token beginToken, Token endToken) { 290 void endMethod(Token getOrSet, Token beginToken, Token formalParametersToken,
291 Token endToken) {
289 debugEvent("Method"); 292 debugEvent("Method");
290 MethodBody bodyKind = pop(); 293 MethodBody bodyKind = pop();
291 if (bodyKind == MethodBody.RedirectingFactoryBody) { 294 if (bodyKind == MethodBody.RedirectingFactoryBody) {
292 // This will cause an error later. 295 // This will cause an error later.
293 pop(); 296 pop();
294 } 297 }
295 AsyncMarker asyncModifier = pop(); 298 AsyncMarker asyncModifier = pop();
296 List<FormalParameterBuilder> formals = pop(); 299 List<FormalParameterBuilder> formals = pop();
297 List<TypeVariableBuilder> typeVariables = pop(); 300 List<TypeVariableBuilder> typeVariables = pop();
298 dynamic nameOrOperator = pop(); 301 dynamic nameOrOperator = pop();
(...skipping 16 matching lines...) Expand all
315 library.addProcedure( 318 library.addProcedure(
316 metadata, 319 metadata,
317 modifiers, 320 modifiers,
318 returnType, 321 returnType,
319 name, 322 name,
320 typeVariables, 323 typeVariables,
321 formals, 324 formals,
322 asyncModifier, 325 asyncModifier,
323 kind, 326 kind,
324 beginToken.charOffset, 327 beginToken.charOffset,
328 formalParametersToken.charOffset,
325 endToken.charOffset, 329 endToken.charOffset,
326 nativeMethodName, 330 nativeMethodName,
327 isTopLevel: false); 331 isTopLevel: false);
328 nativeMethodName = null; 332 nativeMethodName = null;
329 } 333 }
330 334
331 @override 335 @override
332 void endMixinApplication(Token withKeyword) { 336 void endMixinApplication(Token withKeyword) {
333 debugEvent("MixinApplication"); 337 debugEvent("MixinApplication");
334 List<TypeBuilder> mixins = pop(); 338 List<TypeBuilder> mixins = pop();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 push(popList(count) ?? NullValue.TypeVariables); 395 push(popList(count) ?? NullValue.TypeVariables);
392 } 396 }
393 397
394 @override 398 @override
395 void handleVoidKeyword(Token token) { 399 void handleVoidKeyword(Token token) {
396 debugEvent("VoidKeyword"); 400 debugEvent("VoidKeyword");
397 push(library.addVoidType(token.charOffset)); 401 push(library.addVoidType(token.charOffset));
398 } 402 }
399 403
400 @override 404 @override
401 void endFormalParameter( 405 void endFormalParameter(Token covariantKeyword, Token thisKeyword,
402 Token covariantKeyword, Token thisKeyword, FormalParameterType kind) { 406 Token nameToken, FormalParameterType kind) {
403 debugEvent("FormalParameter"); 407 debugEvent("FormalParameter");
404 String name = pop(); 408 String name = pop();
405 TypeBuilder type = pop(); 409 TypeBuilder type = pop();
406 int modifiers = Modifier.validate(pop()); 410 int modifiers = Modifier.validate(pop());
407 List<MetadataBuilder> metadata = pop(); 411 List<MetadataBuilder> metadata = pop();
408 // TODO(ahe): Needs begin token. 412 // TODO(ahe): Needs begin token.
409 push(library.addFormalParameter(metadata, modifiers, type, name, 413 push(library.addFormalParameter(
410 thisKeyword != null, thisKeyword?.charOffset ?? -1)); 414 metadata,
415 modifiers,
416 type,
417 name,
418 thisKeyword != null,
419 thisKeyword?.charOffset ?? nameToken?.charOffset ?? -1));
411 } 420 }
412 421
413 @override 422 @override
414 void handleValuedFormalParameter(Token equals, Token token) { 423 void handleValuedFormalParameter(Token equals, Token token) {
415 debugEvent("ValuedFormalParameter"); 424 debugEvent("ValuedFormalParameter");
416 // Ignored for now. 425 // Ignored for now.
417 } 426 }
418 427
419 @override 428 @override
420 void handleFormalParameterWithoutValue(Token token) { 429 void handleFormalParameterWithoutValue(Token token) {
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 push(library.addConstructorReference( 602 push(library.addConstructorReference(
594 name, typeArguments, suffix, start.charOffset)); 603 name, typeArguments, suffix, start.charOffset));
595 } 604 }
596 605
597 @override 606 @override
598 void beginFactoryMethod(Token token) { 607 void beginFactoryMethod(Token token) {
599 library.beginNestedDeclaration(null, hasMembers: false); 608 library.beginNestedDeclaration(null, hasMembers: false);
600 } 609 }
601 610
602 @override 611 @override
603 void endFactoryMethod( 612 void endFactoryMethod(Token beginToken, Token factoryKeyword,
604 Token beginToken, Token factoryKeyword, Token endToken) { 613 Token formalParametersToken, Token endToken) {
605 debugEvent("FactoryMethod"); 614 debugEvent("FactoryMethod");
606 MethodBody kind = pop(); 615 MethodBody kind = pop();
607 ConstructorReferenceBuilder redirectionTarget; 616 ConstructorReferenceBuilder redirectionTarget;
608 if (kind == MethodBody.RedirectingFactoryBody) { 617 if (kind == MethodBody.RedirectingFactoryBody) {
609 redirectionTarget = pop(); 618 redirectionTarget = pop();
610 } 619 }
611 AsyncMarker asyncModifier = pop(); 620 AsyncMarker asyncModifier = pop();
612 List<FormalParameterBuilder> formals = pop(); 621 List<FormalParameterBuilder> formals = pop();
613 var name = pop(); 622 var name = pop();
614 int modifiers = Modifier.validate(pop()); 623 int modifiers = Modifier.validate(pop());
615 List<MetadataBuilder> metadata = pop(); 624 List<MetadataBuilder> metadata = pop();
616 library.addFactoryMethod( 625 library.addFactoryMethod(
617 metadata, 626 metadata,
618 modifiers, 627 modifiers,
619 name, 628 name,
620 formals, 629 formals,
621 asyncModifier, 630 asyncModifier,
622 redirectionTarget, 631 redirectionTarget,
623 beginToken.charOffset, 632 beginToken.charOffset,
633 formalParametersToken.charOffset,
624 endToken.charOffset, 634 endToken.charOffset,
625 nativeMethodName); 635 nativeMethodName);
626 nativeMethodName = null; 636 nativeMethodName = null;
627 } 637 }
628 638
629 @override 639 @override
630 void endRedirectingFactoryBody(Token beginToken, Token endToken) { 640 void endRedirectingFactoryBody(Token beginToken, Token endToken) {
631 debugEvent("RedirectingFactoryBody"); 641 debugEvent("RedirectingFactoryBody");
632 push(MethodBody.RedirectingFactoryBody); 642 push(MethodBody.RedirectingFactoryBody);
633 } 643 }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 Link<Token> handleMemberName(Link<Token> identifiers) { 710 Link<Token> handleMemberName(Link<Token> identifiers) {
701 if (!isDartLibrary || identifiers.isEmpty) return identifiers; 711 if (!isDartLibrary || identifiers.isEmpty) return identifiers;
702 return removeNativeClause(identifiers); 712 return removeNativeClause(identifiers);
703 } 713 }
704 714
705 @override 715 @override
706 void debugEvent(String name) { 716 void debugEvent(String name) {
707 // printEvent(name); 717 // printEvent(name);
708 } 718 }
709 } 719 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698