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

Side by Side Diff: pkg/kernel/lib/text/ast_to_text.dart

Issue 2849803002: Revert "Add typedef AST node boilerplate." (Closed)
Patch Set: Created 3 years, 7 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 library kernel.ast_to_text; 4 library kernel.ast_to_text;
5 5
6 import '../ast.dart'; 6 import '../ast.dart';
7 import '../import_table.dart'; 7 import '../import_table.dart';
8 8
9 class Namer<T> { 9 class Namer<T> {
10 int index = 0; 10 int index = 0;
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 return node.name ?? syntheticNames.nameClass(node); 203 return node.name ?? syntheticNames.nameClass(node);
204 } 204 }
205 205
206 String getClassReference(Class node) { 206 String getClassReference(Class node) {
207 if (node == null) return '<No Class>'; 207 if (node == null) return '<No Class>';
208 String name = getClassName(node); 208 String name = getClassName(node);
209 String library = getLibraryReference(node.enclosingLibrary); 209 String library = getLibraryReference(node.enclosingLibrary);
210 return '$library::$name'; 210 return '$library::$name';
211 } 211 }
212 212
213 String getTypedefReference(Typedef node) {
214 if (node == null) return '<No Typedef>';
215 String library = getLibraryReference(node.enclosingLibrary);
216 return '$library::${node.name}';
217 }
218
219 static final String emptyNameString = '•'; 213 static final String emptyNameString = '•';
220 static final Name emptyName = new Name(emptyNameString); 214 static final Name emptyName = new Name(emptyNameString);
221 215
222 Name getMemberName(Member node) { 216 Name getMemberName(Member node) {
223 if (node.name?.name == '') return emptyName; 217 if (node.name?.name == '') return emptyName;
224 if (node.name != null) return node.name; 218 if (node.name != null) return node.name;
225 return new Name(syntheticNames.nameMember(node)); 219 return new Name(syntheticNames.nameMember(node));
226 } 220 }
227 221
228 String getMemberReference(Member node) { 222 String getMemberReference(Member node) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 } else { 274 } else {
281 var prefix = syntheticNames.nameLibraryPrefix(library); 275 var prefix = syntheticNames.nameLibraryPrefix(library);
282 endLine('import "$importPath" as $prefix;'); 276 endLine('import "$importPath" as $prefix;');
283 } 277 }
284 } 278 }
285 for (var import in library.deferredImports) { 279 for (var import in library.deferredImports) {
286 import.accept(this); 280 import.accept(this);
287 } 281 }
288 endLine(); 282 endLine();
289 var inner = new Printer._inner(this, imports); 283 var inner = new Printer._inner(this, imports);
290 library.typedefs.forEach(inner.writeNode);
291 library.classes.forEach(inner.writeNode); 284 library.classes.forEach(inner.writeNode);
292 library.fields.forEach(inner.writeNode); 285 library.fields.forEach(inner.writeNode);
293 library.procedures.forEach(inner.writeNode); 286 library.procedures.forEach(inner.writeNode);
294 } 287 }
295 288
296 void writeProgramFile(Program program) { 289 void writeProgramFile(Program program) {
297 ImportTable imports = new ProgramImportTable(program); 290 ImportTable imports = new ProgramImportTable(program);
298 var inner = new Printer._inner(this, imports); 291 var inner = new Printer._inner(this, imports);
299 writeWord('main'); 292 writeWord('main');
300 writeSpaced('='); 293 writeSpaced('=');
(...skipping 12 matching lines...) Expand all
313 } 306 }
314 if (library.importUri != null) { 307 if (library.importUri != null) {
315 writeSpaced('from'); 308 writeSpaced('from');
316 writeWord('"${library.importUri}"'); 309 writeWord('"${library.importUri}"');
317 } 310 }
318 var prefix = syntheticNames.nameLibraryPrefix(library); 311 var prefix = syntheticNames.nameLibraryPrefix(library);
319 writeSpaced('as'); 312 writeSpaced('as');
320 writeWord(prefix); 313 writeWord(prefix);
321 endLine(' {'); 314 endLine(' {');
322 ++inner.indentation; 315 ++inner.indentation;
323 library.typedefs.forEach(inner.writeNode);
324 library.classes.forEach(inner.writeNode); 316 library.classes.forEach(inner.writeNode);
325 library.fields.forEach(inner.writeNode); 317 library.fields.forEach(inner.writeNode);
326 library.procedures.forEach(inner.writeNode); 318 library.procedures.forEach(inner.writeNode);
327 --inner.indentation; 319 --inner.indentation;
328 endLine('}'); 320 endLine('}');
329 } 321 }
330 } 322 }
331 323
332 int getPrecedence(TreeNode node) { 324 int getPrecedence(TreeNode node) {
333 return Precedence.of(node); 325 return Precedence.of(node);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 writeList(type.typeArguments, writeType); 422 writeList(type.typeArguments, writeType);
431 writeSymbol('>'); 423 writeSymbol('>');
432 } 424 }
433 } 425 }
434 } 426 }
435 427
436 visitVectorType(VectorType type) { 428 visitVectorType(VectorType type) {
437 writeWord('Vector'); 429 writeWord('Vector');
438 } 430 }
439 431
440 visitTypedefType(TypedefType type) {
441 writeTypedefReference(type.typedefNode);
442 if (type.typeArguments.isNotEmpty) {
443 writeSymbol('<');
444 writeList(type.typeArguments, writeType);
445 writeSymbol('>');
446 }
447 }
448
449 void writeModifier(bool isThere, String name) { 432 void writeModifier(bool isThere, String name) {
450 if (isThere) { 433 if (isThere) {
451 writeWord(name); 434 writeWord(name);
452 } 435 }
453 } 436 }
454 437
455 void writeName(Name name) { 438 void writeName(Name name) {
456 if (name?.name == '') { 439 if (name?.name == '') {
457 writeWord(emptyNameString); 440 writeWord(emptyNameString);
458 } else { 441 } else {
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 } 603 }
621 604
622 void writeMemberReference(Member member) { 605 void writeMemberReference(Member member) {
623 writeWord(getMemberReference(member)); 606 writeWord(getMemberReference(member));
624 } 607 }
625 608
626 void writeClassReference(Class classNode) { 609 void writeClassReference(Class classNode) {
627 writeWord(getClassReference(classNode)); 610 writeWord(getClassReference(classNode));
628 } 611 }
629 612
630 void writeTypedefReference(Typedef typedefNode) {
631 writeWord(getTypedefReference(typedefNode));
632 }
633
634 void writeLibraryReference(Library library) { 613 void writeLibraryReference(Library library) {
635 writeWord(getLibraryReference(library)); 614 writeWord(getLibraryReference(library));
636 } 615 }
637 616
638 void writeVariableReference(VariableDeclaration variable) { 617 void writeVariableReference(VariableDeclaration variable) {
639 writeWord(getVariableReference(variable)); 618 writeWord(getVariableReference(variable));
640 } 619 }
641 620
642 void writeTypeParameterReference(TypeParameter node) { 621 void writeTypeParameterReference(TypeParameter node) {
643 writeWord(getTypeParameterReference(node)); 622 writeWord(getTypeParameterReference(node));
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 endLine(endLineString); 744 endLine(endLineString);
766 ++indentation; 745 ++indentation;
767 node.fields.forEach(writeNode); 746 node.fields.forEach(writeNode);
768 node.constructors.forEach(writeNode); 747 node.constructors.forEach(writeNode);
769 node.procedures.forEach(writeNode); 748 node.procedures.forEach(writeNode);
770 --indentation; 749 --indentation;
771 writeIndentation(); 750 writeIndentation();
772 endLine('}'); 751 endLine('}');
773 } 752 }
774 753
775 visitTypedef(Typedef node) {
776 writeIndentation();
777 writeWord('typedef');
778 writeWord(node.name);
779 writeTypeParameterList(node.typeParameters);
780 writeSpaced('=');
781 writeNode(node.type);
782 endLine(';');
783 }
784
785 visitInvalidExpression(InvalidExpression node) { 754 visitInvalidExpression(InvalidExpression node) {
786 writeWord('invalid-expression'); 755 writeWord('invalid-expression');
787 } 756 }
788 757
789 visitMethodInvocation(MethodInvocation node) { 758 visitMethodInvocation(MethodInvocation node) {
790 writeExpression(node.receiver, Precedence.PRIMARY); 759 writeExpression(node.receiver, Precedence.PRIMARY);
791 writeSymbol('.'); 760 writeSymbol('.');
792 writeInterfaceTarget(node.name, node.interfaceTarget); 761 writeInterfaceTarget(node.name, node.interfaceTarget);
793 writeNode(node.arguments); 762 writeNode(node.arguments);
794 } 763 }
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 } 1612 }
1644 throw 'illegal ProcedureKind: $kind'; 1613 throw 'illegal ProcedureKind: $kind';
1645 } 1614 }
1646 1615
1647 class ExpressionPrinter { 1616 class ExpressionPrinter {
1648 final Printer writeer; 1617 final Printer writeer;
1649 final int minimumPrecedence; 1618 final int minimumPrecedence;
1650 1619
1651 ExpressionPrinter(this.writeer, this.minimumPrecedence); 1620 ExpressionPrinter(this.writeer, this.minimumPrecedence);
1652 } 1621 }
OLDNEW
« no previous file with comments | « pkg/kernel/lib/canonical_name.dart ('k') | pkg/kernel/lib/transformations/reify/transformation/remove_generics.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698