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

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

Issue 2704753002: Implement line and column numbers. (Closed)
Patch Set: Undo whitespace change. 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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 134
135 @override 135 @override
136 void endExport(Token exportKeyword, Token semicolon) { 136 void endExport(Token exportKeyword, Token semicolon) {
137 debugEvent("Export"); 137 debugEvent("Export");
138 List<Combinator> combinators = pop(); 138 List<Combinator> combinators = pop();
139 Unhandled conditionalUris = pop(); 139 Unhandled conditionalUris = pop();
140 String uri = pop(); 140 String uri = pop();
141 List<MetadataBuilder> metadata = pop(); 141 List<MetadataBuilder> metadata = pop();
142 library.addExport( 142 library.addExport(
143 metadata, uri, conditionalUris, combinators, exportKeyword.charOffset); 143 metadata, uri, conditionalUris, combinators, exportKeyword.charOffset);
144 checkEmpty(); 144 checkEmpty(exportKeyword.charOffset);
145 } 145 }
146 146
147 @override 147 @override
148 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, 148 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword,
149 Token semicolon) { 149 Token semicolon) {
150 debugEvent("endImport"); 150 debugEvent("endImport");
151 List<Combinator> combinators = pop(); 151 List<Combinator> combinators = pop();
152 String prefix = popIfNotNull(asKeyword); 152 String prefix = popIfNotNull(asKeyword);
153 Unhandled conditionalUris = pop(); 153 Unhandled conditionalUris = pop();
154 String uri = pop(); 154 String uri = pop();
155 List<MetadataBuilder> metadata = pop(); 155 List<MetadataBuilder> metadata = pop();
156 library.addImport(metadata, uri, conditionalUris, prefix, combinators, 156 library.addImport(metadata, uri, conditionalUris, prefix, combinators,
157 deferredKeyword != null, importKeyword.charOffset, 157 deferredKeyword != null, importKeyword.charOffset,
158 asKeyword?.next?.charOffset ?? -1); 158 asKeyword?.next?.charOffset ?? -1);
159 checkEmpty(); 159 checkEmpty(importKeyword.charOffset);
160 } 160 }
161 161
162 @override 162 @override
163 void endPart(Token partKeyword, Token semicolon) { 163 void endPart(Token partKeyword, Token semicolon) {
164 debugEvent("Part"); 164 debugEvent("Part");
165 String uri = pop(); 165 String uri = pop();
166 List<MetadataBuilder> metadata = pop(); 166 List<MetadataBuilder> metadata = pop();
167 library.addPart(metadata, uri); 167 library.addPart(metadata, uri);
168 checkEmpty(); 168 checkEmpty(partKeyword.charOffset);
169 } 169 }
170 170
171 @override 171 @override
172 void handleOperatorName(Token operatorKeyword, Token token) { 172 void handleOperatorName(Token operatorKeyword, Token token) {
173 debugEvent("OperatorName"); 173 debugEvent("OperatorName");
174 push(operatorFromString(token.stringValue)); 174 push(operatorFromString(token.stringValue));
175 } 175 }
176 176
177 @override 177 @override
178 void endIdentifierList(int count) { 178 void endIdentifierList(int count) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 List<TypeVariableBuilder> typeVariables = pop(); 211 List<TypeVariableBuilder> typeVariables = pop();
212 String name = pop(); 212 String name = pop();
213 if (typeVariables != null && supertype is MixinApplicationBuilder) { 213 if (typeVariables != null && supertype is MixinApplicationBuilder) {
214 supertype.typeVariables = typeVariables; 214 supertype.typeVariables = typeVariables;
215 supertype.subclassName = name; 215 supertype.subclassName = name;
216 } 216 }
217 int modifiers = Modifier.validate(pop()); 217 int modifiers = Modifier.validate(pop());
218 List<MetadataBuilder> metadata = pop(); 218 List<MetadataBuilder> metadata = pop();
219 library.addClass(metadata, modifiers, name, typeVariables, supertype, 219 library.addClass(metadata, modifiers, name, typeVariables, supertype,
220 interfaces, beginToken.charOffset); 220 interfaces, beginToken.charOffset);
221 checkEmpty(); 221 checkEmpty(beginToken.charOffset);
222 } 222 }
223 223
224 ProcedureKind computeProcedureKind(Token token) { 224 ProcedureKind computeProcedureKind(Token token) {
225 if (token == null) return ProcedureKind.Method; 225 if (token == null) return ProcedureKind.Method;
226 if (optional("get", token)) return ProcedureKind.Getter; 226 if (optional("get", token)) return ProcedureKind.Getter;
227 if (optional("set", token)) return ProcedureKind.Setter; 227 if (optional("set", token)) return ProcedureKind.Setter;
228 return internalError("Unhandled: ${token.value}"); 228 return internalError("Unhandled: ${token.value}");
229 } 229 }
230 230
231 @override 231 @override
232 void beginTopLevelMethod(Token token, Token name) { 232 void beginTopLevelMethod(Token token, Token name) {
233 library.beginNestedDeclaration(name.value, hasMembers: false); 233 library.beginNestedDeclaration(name.value, hasMembers: false);
234 } 234 }
235 235
236 @override 236 @override
237 void endTopLevelMethod( 237 void endTopLevelMethod(
238 Token beginToken, Token getOrSet, Token endToken) { 238 Token beginToken, Token getOrSet, Token endToken) {
239 debugEvent("endTopLevelMethod"); 239 debugEvent("endTopLevelMethod");
240 MethodBody kind = pop(); 240 MethodBody kind = pop();
241 AsyncMarker asyncModifier = pop(); 241 AsyncMarker asyncModifier = pop();
242 List<FormalParameterBuilder> formals = pop(); 242 List<FormalParameterBuilder> formals = pop();
243 List<TypeVariableBuilder> typeVariables = pop(); 243 List<TypeVariableBuilder> typeVariables = pop();
244 String name = pop(); 244 String name = pop();
245 TypeBuilder returnType = pop(); 245 TypeBuilder returnType = pop();
246 int modifiers = Modifier.validate(pop(), 246 int modifiers = Modifier.validate(pop(),
247 isAbstract: kind == MethodBody.Abstract); 247 isAbstract: kind == MethodBody.Abstract);
248 List<MetadataBuilder> metadata = pop(); 248 List<MetadataBuilder> metadata = pop();
249 checkEmpty(); 249 checkEmpty(beginToken.charOffset);
250 library.addProcedure(metadata, modifiers, returnType, name, 250 library.addProcedure(metadata, modifiers, returnType, name,
251 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), 251 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet),
252 beginToken.charOffset, nativeMethodName, isTopLevel: true); 252 beginToken.charOffset, nativeMethodName, isTopLevel: true);
253 nativeMethodName = null; 253 nativeMethodName = null;
254 } 254 }
255 255
256 @override 256 @override
257 void handleNoFunctionBody(Token token) { 257 void handleNoFunctionBody(Token token) {
258 debugEvent("NoFunctionBody"); 258 debugEvent("NoFunctionBody");
259 push(MethodBody.Abstract); 259 push(MethodBody.Abstract);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 String name = pop(); 327 String name = pop();
328 if (typeVariables != null && mixinApplication is MixinApplicationBuilder) { 328 if (typeVariables != null && mixinApplication is MixinApplicationBuilder) {
329 mixinApplication.typeVariables = typeVariables; 329 mixinApplication.typeVariables = typeVariables;
330 mixinApplication.subclassName = name; 330 mixinApplication.subclassName = name;
331 } 331 }
332 int modifiers = Modifier.validate(pop()); 332 int modifiers = Modifier.validate(pop());
333 List<MetadataBuilder> metadata = pop(); 333 List<MetadataBuilder> metadata = pop();
334 library.addNamedMixinApplication( 334 library.addNamedMixinApplication(
335 metadata, name, typeVariables, modifiers, mixinApplication, interfaces, 335 metadata, name, typeVariables, modifiers, mixinApplication, interfaces,
336 classKeyword.charOffset); 336 classKeyword.charOffset);
337 checkEmpty(); 337 checkEmpty(classKeyword.charOffset);
338 } 338 }
339 339
340 @override 340 @override
341 void endTypeArguments(int count, Token beginToken, Token endToken) { 341 void endTypeArguments(int count, Token beginToken, Token endToken) {
342 debugEvent("TypeArguments"); 342 debugEvent("TypeArguments");
343 push(popList(count) ?? NullValue.TypeArguments); 343 push(popList(count) ?? NullValue.TypeArguments);
344 } 344 }
345 345
346 @override 346 @override
347 void endType(Token beginToken, Token endToken) { 347 void endType(Token beginToken, Token endToken) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 } 441 }
442 push(formals ?? NullValue.FormalParameters); 442 push(formals ?? NullValue.FormalParameters);
443 } 443 }
444 444
445 @override 445 @override
446 void endEnum(Token enumKeyword, Token endBrace, int count) { 446 void endEnum(Token enumKeyword, Token endBrace, int count) {
447 List<String> constants = popList(count); 447 List<String> constants = popList(count);
448 String name = pop(); 448 String name = pop();
449 List<MetadataBuilder> metadata = pop(); 449 List<MetadataBuilder> metadata = pop();
450 library.addEnum(metadata, name, constants, enumKeyword.charOffset); 450 library.addEnum(metadata, name, constants, enumKeyword.charOffset);
451 checkEmpty(); 451 checkEmpty(enumKeyword.charOffset);
452 } 452 }
453 453
454 @override 454 @override
455 void beginFunctionTypeAlias(Token token) { 455 void beginFunctionTypeAlias(Token token) {
456 library.beginNestedDeclaration(null, hasMembers: false); 456 library.beginNestedDeclaration(null, hasMembers: false);
457 } 457 }
458 458
459 @override 459 @override
460 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { 460 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
461 debugEvent("endFunctionTypeAlias"); 461 debugEvent("endFunctionTypeAlias");
462 List<FormalParameterBuilder> formals = pop(); 462 List<FormalParameterBuilder> formals = pop();
463 List<TypeVariableBuilder> typeVariables = pop(); 463 List<TypeVariableBuilder> typeVariables = pop();
464 String name = pop(); 464 String name = pop();
465 TypeBuilder returnType = pop(); 465 TypeBuilder returnType = pop();
466 List<MetadataBuilder> metadata = pop(); 466 List<MetadataBuilder> metadata = pop();
467 library.addFunctionTypeAlias( 467 library.addFunctionTypeAlias(
468 metadata, returnType, name, typeVariables, formals, 468 metadata, returnType, name, typeVariables, formals,
469 typedefKeyword.charOffset); 469 typedefKeyword.charOffset);
470 checkEmpty(); 470 checkEmpty(typedefKeyword.charOffset);
471 } 471 }
472 472
473 @override 473 @override
474 void endTopLevelFields(int count, Token beginToken, Token endToken) { 474 void endTopLevelFields(int count, Token beginToken, Token endToken) {
475 debugEvent("endTopLevelFields"); 475 debugEvent("endTopLevelFields");
476 List<String> names = popList(count); 476 List<String> names = popList(count);
477 TypeBuilder type = pop(); 477 TypeBuilder type = pop();
478 int modifiers = Modifier.validate(pop()); 478 int modifiers = Modifier.validate(pop());
479 List<MetadataBuilder> metadata = pop(); 479 List<MetadataBuilder> metadata = pop();
480 library.addFields(metadata, modifiers, type, names); 480 library.addFields(metadata, modifiers, type, names);
481 checkEmpty(); 481 checkEmpty(beginToken.charOffset);
482 } 482 }
483 483
484 @override 484 @override
485 void endFields(int count, Token beginToken, Token endToken) { 485 void endFields(int count, Token beginToken, Token endToken) {
486 debugEvent("Fields"); 486 debugEvent("Fields");
487 List<String> names = popList(count); 487 List<String> names = popList(count);
488 TypeBuilder type = pop(); 488 TypeBuilder type = pop();
489 int modifiers = Modifier.validate(pop()); 489 int modifiers = Modifier.validate(pop());
490 List<MetadataBuilder> metadata = pop(); 490 List<MetadataBuilder> metadata = pop();
491 library.addFields(metadata, modifiers, type, names); 491 library.addFields(metadata, modifiers, type, names);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 Link<Token> handleMemberName(Link<Token> identifiers) { 614 Link<Token> handleMemberName(Link<Token> identifiers) {
615 if (!isDartLibrary || identifiers.isEmpty) return identifiers; 615 if (!isDartLibrary || identifiers.isEmpty) return identifiers;
616 return removeNativeClause(identifiers); 616 return removeNativeClause(identifiers);
617 } 617 }
618 618
619 @override 619 @override
620 void debugEvent(String name) { 620 void debugEvent(String name) {
621 // printEvent(name); 621 // printEvent(name);
622 } 622 }
623 } 623 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698