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

Side by Side Diff: pkg/analyzer/lib/src/dart/ast/utilities.dart

Issue 2314403008: Remove PrintWriter and PrintStringWriter from java_core. (Closed)
Patch Set: remove _printf Created 4 years, 3 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
« no previous file with comments | « pkg/analyzer/lib/src/dart/ast/ast.dart ('k') | pkg/analyzer/lib/src/generated/java_core.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 analyzer.src.dart.ast.utilities; 5 library analyzer.src.dart.ast.utilities;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/token.dart'; 10 import 'package:analyzer/dart/ast/token.dart';
11 import 'package:analyzer/dart/ast/visitor.dart'; 11 import 'package:analyzer/dart/ast/visitor.dart';
12 import 'package:analyzer/dart/element/element.dart'; 12 import 'package:analyzer/dart/element/element.dart';
13 import 'package:analyzer/src/dart/ast/token.dart'; 13 import 'package:analyzer/src/dart/ast/token.dart';
14 import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine; 14 import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
15 import 'package:analyzer/src/generated/java_core.dart';
16 import 'package:analyzer/src/generated/java_engine.dart'; 15 import 'package:analyzer/src/generated/java_engine.dart';
17 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; 16 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap;
18 import 'package:analyzer/src/generated/utilities_dart.dart'; 17 import 'package:analyzer/src/generated/utilities_dart.dart';
19 18
20 /** 19 /**
21 * An AST visitor that will clone any AST structure that it visits. The cloner 20 * An AST visitor that will clone any AST structure that it visits. The cloner
22 * will only clone the structure, it will not preserve any resolution results or 21 * will only clone the structure, it will not preserve any resolution results or
23 * properties associated with the nodes. 22 * properties associated with the nodes.
24 */ 23 */
25 class AstCloner implements AstVisitor<AstNode> { 24 class AstCloner implements AstVisitor<AstNode> {
(...skipping 6663 matching lines...) Expand 10 before | Expand all | Expand 10 after
6689 return node.end < _position; 6688 return node.end < _position;
6690 } 6689 }
6691 } 6690 }
6692 6691
6693 /** 6692 /**
6694 * A visitor used to write a source representation of a visited AST node (and 6693 * A visitor used to write a source representation of a visited AST node (and
6695 * all of it's children) to a writer. 6694 * all of it's children) to a writer.
6696 */ 6695 */
6697 class ToSourceVisitor implements AstVisitor<Object> { 6696 class ToSourceVisitor implements AstVisitor<Object> {
6698 /** 6697 /**
6699 * The writer to which the source is to be written. 6698 * The buffer to which the source is to be written.
6700 */ 6699 */
6701 final PrintWriter _writer; 6700 final StringBuffer _buffer;
6702 6701
6703 /** 6702 /**
6704 * Initialize a newly created visitor to write source code representing the 6703 * Initialize a newly created visitor to write source code representing the
6705 * visited nodes to the given [writer]. 6704 * visited nodes to the given [_buffer].
6706 */ 6705 */
6707 ToSourceVisitor(this._writer); 6706 ToSourceVisitor(this._buffer);
6708 6707
6709 @override 6708 @override
6710 Object visitAdjacentStrings(AdjacentStrings node) { 6709 Object visitAdjacentStrings(AdjacentStrings node) {
6711 _visitNodeListWithSeparator(node.strings, " "); 6710 _visitNodeListWithSeparator(node.strings, " ");
6712 return null; 6711 return null;
6713 } 6712 }
6714 6713
6715 @override 6714 @override
6716 Object visitAnnotation(Annotation node) { 6715 Object visitAnnotation(Annotation node) {
6717 _writer.print('@'); 6716 _buffer.write('@');
6718 _visitNode(node.name); 6717 _visitNode(node.name);
6719 _visitNodeWithPrefix(".", node.constructorName); 6718 _visitNodeWithPrefix(".", node.constructorName);
6720 _visitNode(node.arguments); 6719 _visitNode(node.arguments);
6721 return null; 6720 return null;
6722 } 6721 }
6723 6722
6724 @override 6723 @override
6725 Object visitArgumentList(ArgumentList node) { 6724 Object visitArgumentList(ArgumentList node) {
6726 _writer.print('('); 6725 _buffer.write('(');
6727 _visitNodeListWithSeparator(node.arguments, ", "); 6726 _visitNodeListWithSeparator(node.arguments, ", ");
6728 _writer.print(')'); 6727 _buffer.write(')');
6729 return null; 6728 return null;
6730 } 6729 }
6731 6730
6732 @override 6731 @override
6733 Object visitAsExpression(AsExpression node) { 6732 Object visitAsExpression(AsExpression node) {
6734 _visitNode(node.expression); 6733 _visitNode(node.expression);
6735 _writer.print(" as "); 6734 _buffer.write(" as ");
6736 _visitNode(node.type); 6735 _visitNode(node.type);
6737 return null; 6736 return null;
6738 } 6737 }
6739 6738
6740 @override 6739 @override
6741 Object visitAssertStatement(AssertStatement node) { 6740 Object visitAssertStatement(AssertStatement node) {
6742 _writer.print("assert ("); 6741 _buffer.write("assert (");
6743 _visitNode(node.condition); 6742 _visitNode(node.condition);
6744 if (node.message != null) { 6743 if (node.message != null) {
6745 _writer.print(', '); 6744 _buffer.write(', ');
6746 _visitNode(node.message); 6745 _visitNode(node.message);
6747 } 6746 }
6748 _writer.print(");"); 6747 _buffer.write(");");
6749 return null; 6748 return null;
6750 } 6749 }
6751 6750
6752 @override 6751 @override
6753 Object visitAssignmentExpression(AssignmentExpression node) { 6752 Object visitAssignmentExpression(AssignmentExpression node) {
6754 _visitNode(node.leftHandSide); 6753 _visitNode(node.leftHandSide);
6755 _writer.print(' '); 6754 _buffer.write(' ');
6756 _writer.print(node.operator.lexeme); 6755 _buffer.write(node.operator.lexeme);
6757 _writer.print(' '); 6756 _buffer.write(' ');
6758 _visitNode(node.rightHandSide); 6757 _visitNode(node.rightHandSide);
6759 return null; 6758 return null;
6760 } 6759 }
6761 6760
6762 @override 6761 @override
6763 Object visitAwaitExpression(AwaitExpression node) { 6762 Object visitAwaitExpression(AwaitExpression node) {
6764 _writer.print("await "); 6763 _buffer.write("await ");
6765 _visitNode(node.expression); 6764 _visitNode(node.expression);
6766 return null; 6765 return null;
6767 } 6766 }
6768 6767
6769 @override 6768 @override
6770 Object visitBinaryExpression(BinaryExpression node) { 6769 Object visitBinaryExpression(BinaryExpression node) {
6771 _visitNode(node.leftOperand); 6770 _visitNode(node.leftOperand);
6772 _writer.print(' '); 6771 _buffer.write(' ');
6773 _writer.print(node.operator.lexeme); 6772 _buffer.write(node.operator.lexeme);
6774 _writer.print(' '); 6773 _buffer.write(' ');
6775 _visitNode(node.rightOperand); 6774 _visitNode(node.rightOperand);
6776 return null; 6775 return null;
6777 } 6776 }
6778 6777
6779 @override 6778 @override
6780 Object visitBlock(Block node) { 6779 Object visitBlock(Block node) {
6781 _writer.print('{'); 6780 _buffer.write('{');
6782 _visitNodeListWithSeparator(node.statements, " "); 6781 _visitNodeListWithSeparator(node.statements, " ");
6783 _writer.print('}'); 6782 _buffer.write('}');
6784 return null; 6783 return null;
6785 } 6784 }
6786 6785
6787 @override 6786 @override
6788 Object visitBlockFunctionBody(BlockFunctionBody node) { 6787 Object visitBlockFunctionBody(BlockFunctionBody node) {
6789 Token keyword = node.keyword; 6788 Token keyword = node.keyword;
6790 if (keyword != null) { 6789 if (keyword != null) {
6791 _writer.print(keyword.lexeme); 6790 _buffer.write(keyword.lexeme);
6792 if (node.star != null) { 6791 if (node.star != null) {
6793 _writer.print('*'); 6792 _buffer.write('*');
6794 } 6793 }
6795 _writer.print(' '); 6794 _buffer.write(' ');
6796 } 6795 }
6797 _visitNode(node.block); 6796 _visitNode(node.block);
6798 return null; 6797 return null;
6799 } 6798 }
6800 6799
6801 @override 6800 @override
6802 Object visitBooleanLiteral(BooleanLiteral node) { 6801 Object visitBooleanLiteral(BooleanLiteral node) {
6803 _writer.print(node.literal.lexeme); 6802 _buffer.write(node.literal.lexeme);
6804 return null; 6803 return null;
6805 } 6804 }
6806 6805
6807 @override 6806 @override
6808 Object visitBreakStatement(BreakStatement node) { 6807 Object visitBreakStatement(BreakStatement node) {
6809 _writer.print("break"); 6808 _buffer.write("break");
6810 _visitNodeWithPrefix(" ", node.label); 6809 _visitNodeWithPrefix(" ", node.label);
6811 _writer.print(";"); 6810 _buffer.write(";");
6812 return null; 6811 return null;
6813 } 6812 }
6814 6813
6815 @override 6814 @override
6816 Object visitCascadeExpression(CascadeExpression node) { 6815 Object visitCascadeExpression(CascadeExpression node) {
6817 _visitNode(node.target); 6816 _visitNode(node.target);
6818 _visitNodeList(node.cascadeSections); 6817 _visitNodeList(node.cascadeSections);
6819 return null; 6818 return null;
6820 } 6819 }
6821 6820
6822 @override 6821 @override
6823 Object visitCatchClause(CatchClause node) { 6822 Object visitCatchClause(CatchClause node) {
6824 _visitNodeWithPrefix("on ", node.exceptionType); 6823 _visitNodeWithPrefix("on ", node.exceptionType);
6825 if (node.catchKeyword != null) { 6824 if (node.catchKeyword != null) {
6826 if (node.exceptionType != null) { 6825 if (node.exceptionType != null) {
6827 _writer.print(' '); 6826 _buffer.write(' ');
6828 } 6827 }
6829 _writer.print("catch ("); 6828 _buffer.write("catch (");
6830 _visitNode(node.exceptionParameter); 6829 _visitNode(node.exceptionParameter);
6831 _visitNodeWithPrefix(", ", node.stackTraceParameter); 6830 _visitNodeWithPrefix(", ", node.stackTraceParameter);
6832 _writer.print(") "); 6831 _buffer.write(") ");
6833 } else { 6832 } else {
6834 _writer.print(" "); 6833 _buffer.write(" ");
6835 } 6834 }
6836 _visitNode(node.body); 6835 _visitNode(node.body);
6837 return null; 6836 return null;
6838 } 6837 }
6839 6838
6840 @override 6839 @override
6841 Object visitClassDeclaration(ClassDeclaration node) { 6840 Object visitClassDeclaration(ClassDeclaration node) {
6842 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 6841 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
6843 _visitTokenWithSuffix(node.abstractKeyword, " "); 6842 _visitTokenWithSuffix(node.abstractKeyword, " ");
6844 _writer.print("class "); 6843 _buffer.write("class ");
6845 _visitNode(node.name); 6844 _visitNode(node.name);
6846 _visitNode(node.typeParameters); 6845 _visitNode(node.typeParameters);
6847 _visitNodeWithPrefix(" ", node.extendsClause); 6846 _visitNodeWithPrefix(" ", node.extendsClause);
6848 _visitNodeWithPrefix(" ", node.withClause); 6847 _visitNodeWithPrefix(" ", node.withClause);
6849 _visitNodeWithPrefix(" ", node.implementsClause); 6848 _visitNodeWithPrefix(" ", node.implementsClause);
6850 _writer.print(" {"); 6849 _buffer.write(" {");
6851 _visitNodeListWithSeparator(node.members, " "); 6850 _visitNodeListWithSeparator(node.members, " ");
6852 _writer.print("}"); 6851 _buffer.write("}");
6853 return null; 6852 return null;
6854 } 6853 }
6855 6854
6856 @override 6855 @override
6857 Object visitClassTypeAlias(ClassTypeAlias node) { 6856 Object visitClassTypeAlias(ClassTypeAlias node) {
6858 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 6857 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
6859 if (node.abstractKeyword != null) { 6858 if (node.abstractKeyword != null) {
6860 _writer.print("abstract "); 6859 _buffer.write("abstract ");
6861 } 6860 }
6862 _writer.print("class "); 6861 _buffer.write("class ");
6863 _visitNode(node.name); 6862 _visitNode(node.name);
6864 _visitNode(node.typeParameters); 6863 _visitNode(node.typeParameters);
6865 _writer.print(" = "); 6864 _buffer.write(" = ");
6866 _visitNode(node.superclass); 6865 _visitNode(node.superclass);
6867 _visitNodeWithPrefix(" ", node.withClause); 6866 _visitNodeWithPrefix(" ", node.withClause);
6868 _visitNodeWithPrefix(" ", node.implementsClause); 6867 _visitNodeWithPrefix(" ", node.implementsClause);
6869 _writer.print(";"); 6868 _buffer.write(";");
6870 return null; 6869 return null;
6871 } 6870 }
6872 6871
6873 @override 6872 @override
6874 Object visitComment(Comment node) => null; 6873 Object visitComment(Comment node) => null;
6875 6874
6876 @override 6875 @override
6877 Object visitCommentReference(CommentReference node) => null; 6876 Object visitCommentReference(CommentReference node) => null;
6878 6877
6879 @override 6878 @override
6880 Object visitCompilationUnit(CompilationUnit node) { 6879 Object visitCompilationUnit(CompilationUnit node) {
6881 ScriptTag scriptTag = node.scriptTag; 6880 ScriptTag scriptTag = node.scriptTag;
6882 NodeList<Directive> directives = node.directives; 6881 NodeList<Directive> directives = node.directives;
6883 _visitNode(scriptTag); 6882 _visitNode(scriptTag);
6884 String prefix = scriptTag == null ? "" : " "; 6883 String prefix = scriptTag == null ? "" : " ";
6885 _visitNodeListWithSeparatorAndPrefix(prefix, directives, " "); 6884 _visitNodeListWithSeparatorAndPrefix(prefix, directives, " ");
6886 prefix = scriptTag == null && directives.isEmpty ? "" : " "; 6885 prefix = scriptTag == null && directives.isEmpty ? "" : " ";
6887 _visitNodeListWithSeparatorAndPrefix(prefix, node.declarations, " "); 6886 _visitNodeListWithSeparatorAndPrefix(prefix, node.declarations, " ");
6888 return null; 6887 return null;
6889 } 6888 }
6890 6889
6891 @override 6890 @override
6892 Object visitConditionalExpression(ConditionalExpression node) { 6891 Object visitConditionalExpression(ConditionalExpression node) {
6893 _visitNode(node.condition); 6892 _visitNode(node.condition);
6894 _writer.print(" ? "); 6893 _buffer.write(" ? ");
6895 _visitNode(node.thenExpression); 6894 _visitNode(node.thenExpression);
6896 _writer.print(" : "); 6895 _buffer.write(" : ");
6897 _visitNode(node.elseExpression); 6896 _visitNode(node.elseExpression);
6898 return null; 6897 return null;
6899 } 6898 }
6900 6899
6901 @override 6900 @override
6902 Object visitConfiguration(Configuration node) { 6901 Object visitConfiguration(Configuration node) {
6903 _writer.print('if ('); 6902 _buffer.write('if (');
6904 _visitNode(node.name); 6903 _visitNode(node.name);
6905 _visitNodeWithPrefix(" == ", node.value); 6904 _visitNodeWithPrefix(" == ", node.value);
6906 _writer.print(') '); 6905 _buffer.write(') ');
6907 _visitNode(node.libraryUri); 6906 _visitNode(node.libraryUri);
6908 return null; 6907 return null;
6909 } 6908 }
6910 6909
6911 @override 6910 @override
6912 Object visitConstructorDeclaration(ConstructorDeclaration node) { 6911 Object visitConstructorDeclaration(ConstructorDeclaration node) {
6913 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 6912 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
6914 _visitTokenWithSuffix(node.externalKeyword, " "); 6913 _visitTokenWithSuffix(node.externalKeyword, " ");
6915 _visitTokenWithSuffix(node.constKeyword, " "); 6914 _visitTokenWithSuffix(node.constKeyword, " ");
6916 _visitTokenWithSuffix(node.factoryKeyword, " "); 6915 _visitTokenWithSuffix(node.factoryKeyword, " ");
6917 _visitNode(node.returnType); 6916 _visitNode(node.returnType);
6918 _visitNodeWithPrefix(".", node.name); 6917 _visitNodeWithPrefix(".", node.name);
6919 _visitNode(node.parameters); 6918 _visitNode(node.parameters);
6920 _visitNodeListWithSeparatorAndPrefix(" : ", node.initializers, ", "); 6919 _visitNodeListWithSeparatorAndPrefix(" : ", node.initializers, ", ");
6921 _visitNodeWithPrefix(" = ", node.redirectedConstructor); 6920 _visitNodeWithPrefix(" = ", node.redirectedConstructor);
6922 _visitFunctionWithPrefix(" ", node.body); 6921 _visitFunctionWithPrefix(" ", node.body);
6923 return null; 6922 return null;
6924 } 6923 }
6925 6924
6926 @override 6925 @override
6927 Object visitConstructorFieldInitializer(ConstructorFieldInitializer node) { 6926 Object visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
6928 _visitTokenWithSuffix(node.thisKeyword, "."); 6927 _visitTokenWithSuffix(node.thisKeyword, ".");
6929 _visitNode(node.fieldName); 6928 _visitNode(node.fieldName);
6930 _writer.print(" = "); 6929 _buffer.write(" = ");
6931 _visitNode(node.expression); 6930 _visitNode(node.expression);
6932 return null; 6931 return null;
6933 } 6932 }
6934 6933
6935 @override 6934 @override
6936 Object visitConstructorName(ConstructorName node) { 6935 Object visitConstructorName(ConstructorName node) {
6937 _visitNode(node.type); 6936 _visitNode(node.type);
6938 _visitNodeWithPrefix(".", node.name); 6937 _visitNodeWithPrefix(".", node.name);
6939 return null; 6938 return null;
6940 } 6939 }
6941 6940
6942 @override 6941 @override
6943 Object visitContinueStatement(ContinueStatement node) { 6942 Object visitContinueStatement(ContinueStatement node) {
6944 _writer.print("continue"); 6943 _buffer.write("continue");
6945 _visitNodeWithPrefix(" ", node.label); 6944 _visitNodeWithPrefix(" ", node.label);
6946 _writer.print(";"); 6945 _buffer.write(";");
6947 return null; 6946 return null;
6948 } 6947 }
6949 6948
6950 @override 6949 @override
6951 Object visitDeclaredIdentifier(DeclaredIdentifier node) { 6950 Object visitDeclaredIdentifier(DeclaredIdentifier node) {
6952 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 6951 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
6953 _visitTokenWithSuffix(node.keyword, " "); 6952 _visitTokenWithSuffix(node.keyword, " ");
6954 _visitNodeWithSuffix(node.type, " "); 6953 _visitNodeWithSuffix(node.type, " ");
6955 _visitNode(node.identifier); 6954 _visitNode(node.identifier);
6956 return null; 6955 return null;
6957 } 6956 }
6958 6957
6959 @override 6958 @override
6960 Object visitDefaultFormalParameter(DefaultFormalParameter node) { 6959 Object visitDefaultFormalParameter(DefaultFormalParameter node) {
6961 _visitNode(node.parameter); 6960 _visitNode(node.parameter);
6962 if (node.separator != null) { 6961 if (node.separator != null) {
6963 _writer.print(" "); 6962 _buffer.write(" ");
6964 _writer.print(node.separator.lexeme); 6963 _buffer.write(node.separator.lexeme);
6965 _visitNodeWithPrefix(" ", node.defaultValue); 6964 _visitNodeWithPrefix(" ", node.defaultValue);
6966 } 6965 }
6967 return null; 6966 return null;
6968 } 6967 }
6969 6968
6970 @override 6969 @override
6971 Object visitDoStatement(DoStatement node) { 6970 Object visitDoStatement(DoStatement node) {
6972 _writer.print("do "); 6971 _buffer.write("do ");
6973 _visitNode(node.body); 6972 _visitNode(node.body);
6974 _writer.print(" while ("); 6973 _buffer.write(" while (");
6975 _visitNode(node.condition); 6974 _visitNode(node.condition);
6976 _writer.print(");"); 6975 _buffer.write(");");
6977 return null; 6976 return null;
6978 } 6977 }
6979 6978
6980 @override 6979 @override
6981 Object visitDottedName(DottedName node) { 6980 Object visitDottedName(DottedName node) {
6982 _visitNodeListWithSeparator(node.components, "."); 6981 _visitNodeListWithSeparator(node.components, ".");
6983 return null; 6982 return null;
6984 } 6983 }
6985 6984
6986 @override 6985 @override
6987 Object visitDoubleLiteral(DoubleLiteral node) { 6986 Object visitDoubleLiteral(DoubleLiteral node) {
6988 _writer.print(node.literal.lexeme); 6987 _buffer.write(node.literal.lexeme);
6989 return null; 6988 return null;
6990 } 6989 }
6991 6990
6992 @override 6991 @override
6993 Object visitEmptyFunctionBody(EmptyFunctionBody node) { 6992 Object visitEmptyFunctionBody(EmptyFunctionBody node) {
6994 _writer.print(';'); 6993 _buffer.write(';');
6995 return null; 6994 return null;
6996 } 6995 }
6997 6996
6998 @override 6997 @override
6999 Object visitEmptyStatement(EmptyStatement node) { 6998 Object visitEmptyStatement(EmptyStatement node) {
7000 _writer.print(';'); 6999 _buffer.write(';');
7001 return null; 7000 return null;
7002 } 7001 }
7003 7002
7004 @override 7003 @override
7005 Object visitEnumConstantDeclaration(EnumConstantDeclaration node) { 7004 Object visitEnumConstantDeclaration(EnumConstantDeclaration node) {
7006 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7005 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7007 _visitNode(node.name); 7006 _visitNode(node.name);
7008 return null; 7007 return null;
7009 } 7008 }
7010 7009
7011 @override 7010 @override
7012 Object visitEnumDeclaration(EnumDeclaration node) { 7011 Object visitEnumDeclaration(EnumDeclaration node) {
7013 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7012 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7014 _writer.print("enum "); 7013 _buffer.write("enum ");
7015 _visitNode(node.name); 7014 _visitNode(node.name);
7016 _writer.print(" {"); 7015 _buffer.write(" {");
7017 _visitNodeListWithSeparator(node.constants, ", "); 7016 _visitNodeListWithSeparator(node.constants, ", ");
7018 _writer.print("}"); 7017 _buffer.write("}");
7019 return null; 7018 return null;
7020 } 7019 }
7021 7020
7022 @override 7021 @override
7023 Object visitExportDirective(ExportDirective node) { 7022 Object visitExportDirective(ExportDirective node) {
7024 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7023 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7025 _writer.print("export "); 7024 _buffer.write("export ");
7026 _visitNode(node.uri); 7025 _visitNode(node.uri);
7027 _visitNodeListWithSeparatorAndPrefix(" ", node.combinators, " "); 7026 _visitNodeListWithSeparatorAndPrefix(" ", node.combinators, " ");
7028 _writer.print(';'); 7027 _buffer.write(';');
7029 return null; 7028 return null;
7030 } 7029 }
7031 7030
7032 @override 7031 @override
7033 Object visitExpressionFunctionBody(ExpressionFunctionBody node) { 7032 Object visitExpressionFunctionBody(ExpressionFunctionBody node) {
7034 Token keyword = node.keyword; 7033 Token keyword = node.keyword;
7035 if (keyword != null) { 7034 if (keyword != null) {
7036 _writer.print(keyword.lexeme); 7035 _buffer.write(keyword.lexeme);
7037 _writer.print(' '); 7036 _buffer.write(' ');
7038 } 7037 }
7039 _writer.print("=> "); 7038 _buffer.write("=> ");
7040 _visitNode(node.expression); 7039 _visitNode(node.expression);
7041 if (node.semicolon != null) { 7040 if (node.semicolon != null) {
7042 _writer.print(';'); 7041 _buffer.write(';');
7043 } 7042 }
7044 return null; 7043 return null;
7045 } 7044 }
7046 7045
7047 @override 7046 @override
7048 Object visitExpressionStatement(ExpressionStatement node) { 7047 Object visitExpressionStatement(ExpressionStatement node) {
7049 _visitNode(node.expression); 7048 _visitNode(node.expression);
7050 _writer.print(';'); 7049 _buffer.write(';');
7051 return null; 7050 return null;
7052 } 7051 }
7053 7052
7054 @override 7053 @override
7055 Object visitExtendsClause(ExtendsClause node) { 7054 Object visitExtendsClause(ExtendsClause node) {
7056 _writer.print("extends "); 7055 _buffer.write("extends ");
7057 _visitNode(node.superclass); 7056 _visitNode(node.superclass);
7058 return null; 7057 return null;
7059 } 7058 }
7060 7059
7061 @override 7060 @override
7062 Object visitFieldDeclaration(FieldDeclaration node) { 7061 Object visitFieldDeclaration(FieldDeclaration node) {
7063 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7062 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7064 _visitTokenWithSuffix(node.staticKeyword, " "); 7063 _visitTokenWithSuffix(node.staticKeyword, " ");
7065 _visitNode(node.fields); 7064 _visitNode(node.fields);
7066 _writer.print(";"); 7065 _buffer.write(";");
7067 return null; 7066 return null;
7068 } 7067 }
7069 7068
7070 @override 7069 @override
7071 Object visitFieldFormalParameter(FieldFormalParameter node) { 7070 Object visitFieldFormalParameter(FieldFormalParameter node) {
7072 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' '); 7071 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' ');
7073 _visitTokenWithSuffix(node.keyword, " "); 7072 _visitTokenWithSuffix(node.keyword, " ");
7074 _visitNodeWithSuffix(node.type, " "); 7073 _visitNodeWithSuffix(node.type, " ");
7075 _writer.print("this."); 7074 _buffer.write("this.");
7076 _visitNode(node.identifier); 7075 _visitNode(node.identifier);
7077 _visitNode(node.typeParameters); 7076 _visitNode(node.typeParameters);
7078 _visitNode(node.parameters); 7077 _visitNode(node.parameters);
7079 return null; 7078 return null;
7080 } 7079 }
7081 7080
7082 @override 7081 @override
7083 Object visitForEachStatement(ForEachStatement node) { 7082 Object visitForEachStatement(ForEachStatement node) {
7084 DeclaredIdentifier loopVariable = node.loopVariable; 7083 DeclaredIdentifier loopVariable = node.loopVariable;
7085 if (node.awaitKeyword != null) { 7084 if (node.awaitKeyword != null) {
7086 _writer.print("await "); 7085 _buffer.write("await ");
7087 } 7086 }
7088 _writer.print("for ("); 7087 _buffer.write("for (");
7089 if (loopVariable == null) { 7088 if (loopVariable == null) {
7090 _visitNode(node.identifier); 7089 _visitNode(node.identifier);
7091 } else { 7090 } else {
7092 _visitNode(loopVariable); 7091 _visitNode(loopVariable);
7093 } 7092 }
7094 _writer.print(" in "); 7093 _buffer.write(" in ");
7095 _visitNode(node.iterable); 7094 _visitNode(node.iterable);
7096 _writer.print(") "); 7095 _buffer.write(") ");
7097 _visitNode(node.body); 7096 _visitNode(node.body);
7098 return null; 7097 return null;
7099 } 7098 }
7100 7099
7101 @override 7100 @override
7102 Object visitFormalParameterList(FormalParameterList node) { 7101 Object visitFormalParameterList(FormalParameterList node) {
7103 String groupEnd = null; 7102 String groupEnd = null;
7104 _writer.print('('); 7103 _buffer.write('(');
7105 NodeList<FormalParameter> parameters = node.parameters; 7104 NodeList<FormalParameter> parameters = node.parameters;
7106 int size = parameters.length; 7105 int size = parameters.length;
7107 for (int i = 0; i < size; i++) { 7106 for (int i = 0; i < size; i++) {
7108 FormalParameter parameter = parameters[i]; 7107 FormalParameter parameter = parameters[i];
7109 if (i > 0) { 7108 if (i > 0) {
7110 _writer.print(", "); 7109 _buffer.write(", ");
7111 } 7110 }
7112 if (groupEnd == null && parameter is DefaultFormalParameter) { 7111 if (groupEnd == null && parameter is DefaultFormalParameter) {
7113 if (parameter.kind == ParameterKind.NAMED) { 7112 if (parameter.kind == ParameterKind.NAMED) {
7114 groupEnd = "}"; 7113 groupEnd = "}";
7115 _writer.print('{'); 7114 _buffer.write('{');
7116 } else { 7115 } else {
7117 groupEnd = "]"; 7116 groupEnd = "]";
7118 _writer.print('['); 7117 _buffer.write('[');
7119 } 7118 }
7120 } 7119 }
7121 parameter.accept(this); 7120 parameter.accept(this);
7122 } 7121 }
7123 if (groupEnd != null) { 7122 if (groupEnd != null) {
7124 _writer.print(groupEnd); 7123 _buffer.write(groupEnd);
7125 } 7124 }
7126 _writer.print(')'); 7125 _buffer.write(')');
7127 return null; 7126 return null;
7128 } 7127 }
7129 7128
7130 @override 7129 @override
7131 Object visitForStatement(ForStatement node) { 7130 Object visitForStatement(ForStatement node) {
7132 Expression initialization = node.initialization; 7131 Expression initialization = node.initialization;
7133 _writer.print("for ("); 7132 _buffer.write("for (");
7134 if (initialization != null) { 7133 if (initialization != null) {
7135 _visitNode(initialization); 7134 _visitNode(initialization);
7136 } else { 7135 } else {
7137 _visitNode(node.variables); 7136 _visitNode(node.variables);
7138 } 7137 }
7139 _writer.print(";"); 7138 _buffer.write(";");
7140 _visitNodeWithPrefix(" ", node.condition); 7139 _visitNodeWithPrefix(" ", node.condition);
7141 _writer.print(";"); 7140 _buffer.write(";");
7142 _visitNodeListWithSeparatorAndPrefix(" ", node.updaters, ", "); 7141 _visitNodeListWithSeparatorAndPrefix(" ", node.updaters, ", ");
7143 _writer.print(") "); 7142 _buffer.write(") ");
7144 _visitNode(node.body); 7143 _visitNode(node.body);
7145 return null; 7144 return null;
7146 } 7145 }
7147 7146
7148 @override 7147 @override
7149 Object visitFunctionDeclaration(FunctionDeclaration node) { 7148 Object visitFunctionDeclaration(FunctionDeclaration node) {
7150 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7149 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7151 _visitTokenWithSuffix(node.externalKeyword, " "); 7150 _visitTokenWithSuffix(node.externalKeyword, " ");
7152 _visitNodeWithSuffix(node.returnType, " "); 7151 _visitNodeWithSuffix(node.returnType, " ");
7153 _visitTokenWithSuffix(node.propertyKeyword, " "); 7152 _visitTokenWithSuffix(node.propertyKeyword, " ");
7154 _visitNode(node.name); 7153 _visitNode(node.name);
7155 _visitNode(node.functionExpression); 7154 _visitNode(node.functionExpression);
7156 return null; 7155 return null;
7157 } 7156 }
7158 7157
7159 @override 7158 @override
7160 Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) { 7159 Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
7161 _visitNode(node.functionDeclaration); 7160 _visitNode(node.functionDeclaration);
7162 return null; 7161 return null;
7163 } 7162 }
7164 7163
7165 @override 7164 @override
7166 Object visitFunctionExpression(FunctionExpression node) { 7165 Object visitFunctionExpression(FunctionExpression node) {
7167 _visitNode(node.typeParameters); 7166 _visitNode(node.typeParameters);
7168 _visitNode(node.parameters); 7167 _visitNode(node.parameters);
7169 if (node.body is! EmptyFunctionBody) { 7168 if (node.body is! EmptyFunctionBody) {
7170 _writer.print(' '); 7169 _buffer.write(' ');
7171 } 7170 }
7172 _visitNode(node.body); 7171 _visitNode(node.body);
7173 return null; 7172 return null;
7174 } 7173 }
7175 7174
7176 @override 7175 @override
7177 Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { 7176 Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
7178 _visitNode(node.function); 7177 _visitNode(node.function);
7179 _visitNode(node.typeArguments); 7178 _visitNode(node.typeArguments);
7180 _visitNode(node.argumentList); 7179 _visitNode(node.argumentList);
7181 return null; 7180 return null;
7182 } 7181 }
7183 7182
7184 @override 7183 @override
7185 Object visitFunctionTypeAlias(FunctionTypeAlias node) { 7184 Object visitFunctionTypeAlias(FunctionTypeAlias node) {
7186 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7185 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7187 _writer.print("typedef "); 7186 _buffer.write("typedef ");
7188 _visitNodeWithSuffix(node.returnType, " "); 7187 _visitNodeWithSuffix(node.returnType, " ");
7189 _visitNode(node.name); 7188 _visitNode(node.name);
7190 _visitNode(node.typeParameters); 7189 _visitNode(node.typeParameters);
7191 _visitNode(node.parameters); 7190 _visitNode(node.parameters);
7192 _writer.print(";"); 7191 _buffer.write(";");
7193 return null; 7192 return null;
7194 } 7193 }
7195 7194
7196 @override 7195 @override
7197 Object visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) { 7196 Object visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
7198 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' '); 7197 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' ');
7199 _visitNodeWithSuffix(node.returnType, " "); 7198 _visitNodeWithSuffix(node.returnType, " ");
7200 _visitNode(node.identifier); 7199 _visitNode(node.identifier);
7201 _visitNode(node.typeParameters); 7200 _visitNode(node.typeParameters);
7202 _visitNode(node.parameters); 7201 _visitNode(node.parameters);
7203 return null; 7202 return null;
7204 } 7203 }
7205 7204
7206 @override 7205 @override
7207 Object visitHideCombinator(HideCombinator node) { 7206 Object visitHideCombinator(HideCombinator node) {
7208 _writer.print("hide "); 7207 _buffer.write("hide ");
7209 _visitNodeListWithSeparator(node.hiddenNames, ", "); 7208 _visitNodeListWithSeparator(node.hiddenNames, ", ");
7210 return null; 7209 return null;
7211 } 7210 }
7212 7211
7213 @override 7212 @override
7214 Object visitIfStatement(IfStatement node) { 7213 Object visitIfStatement(IfStatement node) {
7215 _writer.print("if ("); 7214 _buffer.write("if (");
7216 _visitNode(node.condition); 7215 _visitNode(node.condition);
7217 _writer.print(") "); 7216 _buffer.write(") ");
7218 _visitNode(node.thenStatement); 7217 _visitNode(node.thenStatement);
7219 _visitNodeWithPrefix(" else ", node.elseStatement); 7218 _visitNodeWithPrefix(" else ", node.elseStatement);
7220 return null; 7219 return null;
7221 } 7220 }
7222 7221
7223 @override 7222 @override
7224 Object visitImplementsClause(ImplementsClause node) { 7223 Object visitImplementsClause(ImplementsClause node) {
7225 _writer.print("implements "); 7224 _buffer.write("implements ");
7226 _visitNodeListWithSeparator(node.interfaces, ", "); 7225 _visitNodeListWithSeparator(node.interfaces, ", ");
7227 return null; 7226 return null;
7228 } 7227 }
7229 7228
7230 @override 7229 @override
7231 Object visitImportDirective(ImportDirective node) { 7230 Object visitImportDirective(ImportDirective node) {
7232 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7231 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7233 _writer.print("import "); 7232 _buffer.write("import ");
7234 _visitNode(node.uri); 7233 _visitNode(node.uri);
7235 if (node.deferredKeyword != null) { 7234 if (node.deferredKeyword != null) {
7236 _writer.print(" deferred"); 7235 _buffer.write(" deferred");
7237 } 7236 }
7238 _visitNodeWithPrefix(" as ", node.prefix); 7237 _visitNodeWithPrefix(" as ", node.prefix);
7239 _visitNodeListWithSeparatorAndPrefix(" ", node.combinators, " "); 7238 _visitNodeListWithSeparatorAndPrefix(" ", node.combinators, " ");
7240 _writer.print(';'); 7239 _buffer.write(';');
7241 return null; 7240 return null;
7242 } 7241 }
7243 7242
7244 @override 7243 @override
7245 Object visitIndexExpression(IndexExpression node) { 7244 Object visitIndexExpression(IndexExpression node) {
7246 if (node.isCascaded) { 7245 if (node.isCascaded) {
7247 _writer.print(".."); 7246 _buffer.write("..");
7248 } else { 7247 } else {
7249 _visitNode(node.target); 7248 _visitNode(node.target);
7250 } 7249 }
7251 _writer.print('['); 7250 _buffer.write('[');
7252 _visitNode(node.index); 7251 _visitNode(node.index);
7253 _writer.print(']'); 7252 _buffer.write(']');
7254 return null; 7253 return null;
7255 } 7254 }
7256 7255
7257 @override 7256 @override
7258 Object visitInstanceCreationExpression(InstanceCreationExpression node) { 7257 Object visitInstanceCreationExpression(InstanceCreationExpression node) {
7259 _visitTokenWithSuffix(node.keyword, " "); 7258 _visitTokenWithSuffix(node.keyword, " ");
7260 _visitNode(node.constructorName); 7259 _visitNode(node.constructorName);
7261 _visitNode(node.argumentList); 7260 _visitNode(node.argumentList);
7262 return null; 7261 return null;
7263 } 7262 }
7264 7263
7265 @override 7264 @override
7266 Object visitIntegerLiteral(IntegerLiteral node) { 7265 Object visitIntegerLiteral(IntegerLiteral node) {
7267 _writer.print(node.literal.lexeme); 7266 _buffer.write(node.literal.lexeme);
7268 return null; 7267 return null;
7269 } 7268 }
7270 7269
7271 @override 7270 @override
7272 Object visitInterpolationExpression(InterpolationExpression node) { 7271 Object visitInterpolationExpression(InterpolationExpression node) {
7273 if (node.rightBracket != null) { 7272 if (node.rightBracket != null) {
7274 _writer.print("\${"); 7273 _buffer.write("\${");
7275 _visitNode(node.expression); 7274 _visitNode(node.expression);
7276 _writer.print("}"); 7275 _buffer.write("}");
7277 } else { 7276 } else {
7278 _writer.print("\$"); 7277 _buffer.write("\$");
7279 _visitNode(node.expression); 7278 _visitNode(node.expression);
7280 } 7279 }
7281 return null; 7280 return null;
7282 } 7281 }
7283 7282
7284 @override 7283 @override
7285 Object visitInterpolationString(InterpolationString node) { 7284 Object visitInterpolationString(InterpolationString node) {
7286 _writer.print(node.contents.lexeme); 7285 _buffer.write(node.contents.lexeme);
7287 return null; 7286 return null;
7288 } 7287 }
7289 7288
7290 @override 7289 @override
7291 Object visitIsExpression(IsExpression node) { 7290 Object visitIsExpression(IsExpression node) {
7292 _visitNode(node.expression); 7291 _visitNode(node.expression);
7293 if (node.notOperator == null) { 7292 if (node.notOperator == null) {
7294 _writer.print(" is "); 7293 _buffer.write(" is ");
7295 } else { 7294 } else {
7296 _writer.print(" is! "); 7295 _buffer.write(" is! ");
7297 } 7296 }
7298 _visitNode(node.type); 7297 _visitNode(node.type);
7299 return null; 7298 return null;
7300 } 7299 }
7301 7300
7302 @override 7301 @override
7303 Object visitLabel(Label node) { 7302 Object visitLabel(Label node) {
7304 _visitNode(node.label); 7303 _visitNode(node.label);
7305 _writer.print(":"); 7304 _buffer.write(":");
7306 return null; 7305 return null;
7307 } 7306 }
7308 7307
7309 @override 7308 @override
7310 Object visitLabeledStatement(LabeledStatement node) { 7309 Object visitLabeledStatement(LabeledStatement node) {
7311 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " "); 7310 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " ");
7312 _visitNode(node.statement); 7311 _visitNode(node.statement);
7313 return null; 7312 return null;
7314 } 7313 }
7315 7314
7316 @override 7315 @override
7317 Object visitLibraryDirective(LibraryDirective node) { 7316 Object visitLibraryDirective(LibraryDirective node) {
7318 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7317 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7319 _writer.print("library "); 7318 _buffer.write("library ");
7320 _visitNode(node.name); 7319 _visitNode(node.name);
7321 _writer.print(';'); 7320 _buffer.write(';');
7322 return null; 7321 return null;
7323 } 7322 }
7324 7323
7325 @override 7324 @override
7326 Object visitLibraryIdentifier(LibraryIdentifier node) { 7325 Object visitLibraryIdentifier(LibraryIdentifier node) {
7327 _writer.print(node.name); 7326 _buffer.write(node.name);
7328 return null; 7327 return null;
7329 } 7328 }
7330 7329
7331 @override 7330 @override
7332 Object visitListLiteral(ListLiteral node) { 7331 Object visitListLiteral(ListLiteral node) {
7333 if (node.constKeyword != null) { 7332 if (node.constKeyword != null) {
7334 _writer.print(node.constKeyword.lexeme); 7333 _buffer.write(node.constKeyword.lexeme);
7335 _writer.print(' '); 7334 _buffer.write(' ');
7336 } 7335 }
7337 _visitNodeWithSuffix(node.typeArguments, " "); 7336 _visitNodeWithSuffix(node.typeArguments, " ");
7338 _writer.print("["); 7337 _buffer.write("[");
7339 _visitNodeListWithSeparator(node.elements, ", "); 7338 _visitNodeListWithSeparator(node.elements, ", ");
7340 _writer.print("]"); 7339 _buffer.write("]");
7341 return null; 7340 return null;
7342 } 7341 }
7343 7342
7344 @override 7343 @override
7345 Object visitMapLiteral(MapLiteral node) { 7344 Object visitMapLiteral(MapLiteral node) {
7346 if (node.constKeyword != null) { 7345 if (node.constKeyword != null) {
7347 _writer.print(node.constKeyword.lexeme); 7346 _buffer.write(node.constKeyword.lexeme);
7348 _writer.print(' '); 7347 _buffer.write(' ');
7349 } 7348 }
7350 _visitNodeWithSuffix(node.typeArguments, " "); 7349 _visitNodeWithSuffix(node.typeArguments, " ");
7351 _writer.print("{"); 7350 _buffer.write("{");
7352 _visitNodeListWithSeparator(node.entries, ", "); 7351 _visitNodeListWithSeparator(node.entries, ", ");
7353 _writer.print("}"); 7352 _buffer.write("}");
7354 return null; 7353 return null;
7355 } 7354 }
7356 7355
7357 @override 7356 @override
7358 Object visitMapLiteralEntry(MapLiteralEntry node) { 7357 Object visitMapLiteralEntry(MapLiteralEntry node) {
7359 _visitNode(node.key); 7358 _visitNode(node.key);
7360 _writer.print(" : "); 7359 _buffer.write(" : ");
7361 _visitNode(node.value); 7360 _visitNode(node.value);
7362 return null; 7361 return null;
7363 } 7362 }
7364 7363
7365 @override 7364 @override
7366 Object visitMethodDeclaration(MethodDeclaration node) { 7365 Object visitMethodDeclaration(MethodDeclaration node) {
7367 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7366 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7368 _visitTokenWithSuffix(node.externalKeyword, " "); 7367 _visitTokenWithSuffix(node.externalKeyword, " ");
7369 _visitTokenWithSuffix(node.modifierKeyword, " "); 7368 _visitTokenWithSuffix(node.modifierKeyword, " ");
7370 _visitNodeWithSuffix(node.returnType, " "); 7369 _visitNodeWithSuffix(node.returnType, " ");
7371 _visitTokenWithSuffix(node.propertyKeyword, " "); 7370 _visitTokenWithSuffix(node.propertyKeyword, " ");
7372 _visitTokenWithSuffix(node.operatorKeyword, " "); 7371 _visitTokenWithSuffix(node.operatorKeyword, " ");
7373 _visitNode(node.name); 7372 _visitNode(node.name);
7374 if (!node.isGetter) { 7373 if (!node.isGetter) {
7375 _visitNode(node.typeParameters); 7374 _visitNode(node.typeParameters);
7376 _visitNode(node.parameters); 7375 _visitNode(node.parameters);
7377 } 7376 }
7378 _visitFunctionWithPrefix(" ", node.body); 7377 _visitFunctionWithPrefix(" ", node.body);
7379 return null; 7378 return null;
7380 } 7379 }
7381 7380
7382 @override 7381 @override
7383 Object visitMethodInvocation(MethodInvocation node) { 7382 Object visitMethodInvocation(MethodInvocation node) {
7384 if (node.isCascaded) { 7383 if (node.isCascaded) {
7385 _writer.print(".."); 7384 _buffer.write("..");
7386 } else { 7385 } else {
7387 if (node.target != null) { 7386 if (node.target != null) {
7388 node.target.accept(this); 7387 node.target.accept(this);
7389 _writer.print(node.operator.lexeme); 7388 _buffer.write(node.operator.lexeme);
7390 } 7389 }
7391 } 7390 }
7392 _visitNode(node.methodName); 7391 _visitNode(node.methodName);
7393 _visitNode(node.typeArguments); 7392 _visitNode(node.typeArguments);
7394 _visitNode(node.argumentList); 7393 _visitNode(node.argumentList);
7395 return null; 7394 return null;
7396 } 7395 }
7397 7396
7398 @override 7397 @override
7399 Object visitNamedExpression(NamedExpression node) { 7398 Object visitNamedExpression(NamedExpression node) {
7400 _visitNode(node.name); 7399 _visitNode(node.name);
7401 _visitNodeWithPrefix(" ", node.expression); 7400 _visitNodeWithPrefix(" ", node.expression);
7402 return null; 7401 return null;
7403 } 7402 }
7404 7403
7405 @override 7404 @override
7406 Object visitNativeClause(NativeClause node) { 7405 Object visitNativeClause(NativeClause node) {
7407 _writer.print("native "); 7406 _buffer.write("native ");
7408 _visitNode(node.name); 7407 _visitNode(node.name);
7409 return null; 7408 return null;
7410 } 7409 }
7411 7410
7412 @override 7411 @override
7413 Object visitNativeFunctionBody(NativeFunctionBody node) { 7412 Object visitNativeFunctionBody(NativeFunctionBody node) {
7414 _writer.print("native "); 7413 _buffer.write("native ");
7415 _visitNode(node.stringLiteral); 7414 _visitNode(node.stringLiteral);
7416 _writer.print(';'); 7415 _buffer.write(';');
7417 return null; 7416 return null;
7418 } 7417 }
7419 7418
7420 @override 7419 @override
7421 Object visitNullLiteral(NullLiteral node) { 7420 Object visitNullLiteral(NullLiteral node) {
7422 _writer.print("null"); 7421 _buffer.write("null");
7423 return null; 7422 return null;
7424 } 7423 }
7425 7424
7426 @override 7425 @override
7427 Object visitParenthesizedExpression(ParenthesizedExpression node) { 7426 Object visitParenthesizedExpression(ParenthesizedExpression node) {
7428 _writer.print('('); 7427 _buffer.write('(');
7429 _visitNode(node.expression); 7428 _visitNode(node.expression);
7430 _writer.print(')'); 7429 _buffer.write(')');
7431 return null; 7430 return null;
7432 } 7431 }
7433 7432
7434 @override 7433 @override
7435 Object visitPartDirective(PartDirective node) { 7434 Object visitPartDirective(PartDirective node) {
7436 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7435 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7437 _writer.print("part "); 7436 _buffer.write("part ");
7438 _visitNode(node.uri); 7437 _visitNode(node.uri);
7439 _writer.print(';'); 7438 _buffer.write(';');
7440 return null; 7439 return null;
7441 } 7440 }
7442 7441
7443 @override 7442 @override
7444 Object visitPartOfDirective(PartOfDirective node) { 7443 Object visitPartOfDirective(PartOfDirective node) {
7445 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7444 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7446 _writer.print("part of "); 7445 _buffer.write("part of ");
7447 _visitNode(node.libraryName); 7446 _visitNode(node.libraryName);
7448 _writer.print(';'); 7447 _buffer.write(';');
7449 return null; 7448 return null;
7450 } 7449 }
7451 7450
7452 @override 7451 @override
7453 Object visitPostfixExpression(PostfixExpression node) { 7452 Object visitPostfixExpression(PostfixExpression node) {
7454 _visitNode(node.operand); 7453 _visitNode(node.operand);
7455 _writer.print(node.operator.lexeme); 7454 _buffer.write(node.operator.lexeme);
7456 return null; 7455 return null;
7457 } 7456 }
7458 7457
7459 @override 7458 @override
7460 Object visitPrefixedIdentifier(PrefixedIdentifier node) { 7459 Object visitPrefixedIdentifier(PrefixedIdentifier node) {
7461 _visitNode(node.prefix); 7460 _visitNode(node.prefix);
7462 _writer.print('.'); 7461 _buffer.write('.');
7463 _visitNode(node.identifier); 7462 _visitNode(node.identifier);
7464 return null; 7463 return null;
7465 } 7464 }
7466 7465
7467 @override 7466 @override
7468 Object visitPrefixExpression(PrefixExpression node) { 7467 Object visitPrefixExpression(PrefixExpression node) {
7469 _writer.print(node.operator.lexeme); 7468 _buffer.write(node.operator.lexeme);
7470 _visitNode(node.operand); 7469 _visitNode(node.operand);
7471 return null; 7470 return null;
7472 } 7471 }
7473 7472
7474 @override 7473 @override
7475 Object visitPropertyAccess(PropertyAccess node) { 7474 Object visitPropertyAccess(PropertyAccess node) {
7476 if (node.isCascaded) { 7475 if (node.isCascaded) {
7477 _writer.print(".."); 7476 _buffer.write("..");
7478 } else { 7477 } else {
7479 _visitNode(node.target); 7478 _visitNode(node.target);
7480 _writer.print(node.operator.lexeme); 7479 _buffer.write(node.operator.lexeme);
7481 } 7480 }
7482 _visitNode(node.propertyName); 7481 _visitNode(node.propertyName);
7483 return null; 7482 return null;
7484 } 7483 }
7485 7484
7486 @override 7485 @override
7487 Object visitRedirectingConstructorInvocation( 7486 Object visitRedirectingConstructorInvocation(
7488 RedirectingConstructorInvocation node) { 7487 RedirectingConstructorInvocation node) {
7489 _writer.print("this"); 7488 _buffer.write("this");
7490 _visitNodeWithPrefix(".", node.constructorName); 7489 _visitNodeWithPrefix(".", node.constructorName);
7491 _visitNode(node.argumentList); 7490 _visitNode(node.argumentList);
7492 return null; 7491 return null;
7493 } 7492 }
7494 7493
7495 @override 7494 @override
7496 Object visitRethrowExpression(RethrowExpression node) { 7495 Object visitRethrowExpression(RethrowExpression node) {
7497 _writer.print("rethrow"); 7496 _buffer.write("rethrow");
7498 return null; 7497 return null;
7499 } 7498 }
7500 7499
7501 @override 7500 @override
7502 Object visitReturnStatement(ReturnStatement node) { 7501 Object visitReturnStatement(ReturnStatement node) {
7503 Expression expression = node.expression; 7502 Expression expression = node.expression;
7504 if (expression == null) { 7503 if (expression == null) {
7505 _writer.print("return;"); 7504 _buffer.write("return;");
7506 } else { 7505 } else {
7507 _writer.print("return "); 7506 _buffer.write("return ");
7508 expression.accept(this); 7507 expression.accept(this);
7509 _writer.print(";"); 7508 _buffer.write(";");
7510 } 7509 }
7511 return null; 7510 return null;
7512 } 7511 }
7513 7512
7514 @override 7513 @override
7515 Object visitScriptTag(ScriptTag node) { 7514 Object visitScriptTag(ScriptTag node) {
7516 _writer.print(node.scriptTag.lexeme); 7515 _buffer.write(node.scriptTag.lexeme);
7517 return null; 7516 return null;
7518 } 7517 }
7519 7518
7520 @override 7519 @override
7521 Object visitShowCombinator(ShowCombinator node) { 7520 Object visitShowCombinator(ShowCombinator node) {
7522 _writer.print("show "); 7521 _buffer.write("show ");
7523 _visitNodeListWithSeparator(node.shownNames, ", "); 7522 _visitNodeListWithSeparator(node.shownNames, ", ");
7524 return null; 7523 return null;
7525 } 7524 }
7526 7525
7527 @override 7526 @override
7528 Object visitSimpleFormalParameter(SimpleFormalParameter node) { 7527 Object visitSimpleFormalParameter(SimpleFormalParameter node) {
7529 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' '); 7528 _visitNodeListWithSeparatorAndSuffix(node.metadata, ' ', ' ');
7530 _visitTokenWithSuffix(node.keyword, " "); 7529 _visitTokenWithSuffix(node.keyword, " ");
7531 _visitNodeWithSuffix(node.type, " "); 7530 _visitNodeWithSuffix(node.type, " ");
7532 _visitNode(node.identifier); 7531 _visitNode(node.identifier);
7533 return null; 7532 return null;
7534 } 7533 }
7535 7534
7536 @override 7535 @override
7537 Object visitSimpleIdentifier(SimpleIdentifier node) { 7536 Object visitSimpleIdentifier(SimpleIdentifier node) {
7538 _writer.print(node.token.lexeme); 7537 _buffer.write(node.token.lexeme);
7539 return null; 7538 return null;
7540 } 7539 }
7541 7540
7542 @override 7541 @override
7543 Object visitSimpleStringLiteral(SimpleStringLiteral node) { 7542 Object visitSimpleStringLiteral(SimpleStringLiteral node) {
7544 _writer.print(node.literal.lexeme); 7543 _buffer.write(node.literal.lexeme);
7545 return null; 7544 return null;
7546 } 7545 }
7547 7546
7548 @override 7547 @override
7549 Object visitStringInterpolation(StringInterpolation node) { 7548 Object visitStringInterpolation(StringInterpolation node) {
7550 _visitNodeList(node.elements); 7549 _visitNodeList(node.elements);
7551 return null; 7550 return null;
7552 } 7551 }
7553 7552
7554 @override 7553 @override
7555 Object visitSuperConstructorInvocation(SuperConstructorInvocation node) { 7554 Object visitSuperConstructorInvocation(SuperConstructorInvocation node) {
7556 _writer.print("super"); 7555 _buffer.write("super");
7557 _visitNodeWithPrefix(".", node.constructorName); 7556 _visitNodeWithPrefix(".", node.constructorName);
7558 _visitNode(node.argumentList); 7557 _visitNode(node.argumentList);
7559 return null; 7558 return null;
7560 } 7559 }
7561 7560
7562 @override 7561 @override
7563 Object visitSuperExpression(SuperExpression node) { 7562 Object visitSuperExpression(SuperExpression node) {
7564 _writer.print("super"); 7563 _buffer.write("super");
7565 return null; 7564 return null;
7566 } 7565 }
7567 7566
7568 @override 7567 @override
7569 Object visitSwitchCase(SwitchCase node) { 7568 Object visitSwitchCase(SwitchCase node) {
7570 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " "); 7569 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " ");
7571 _writer.print("case "); 7570 _buffer.write("case ");
7572 _visitNode(node.expression); 7571 _visitNode(node.expression);
7573 _writer.print(": "); 7572 _buffer.write(": ");
7574 _visitNodeListWithSeparator(node.statements, " "); 7573 _visitNodeListWithSeparator(node.statements, " ");
7575 return null; 7574 return null;
7576 } 7575 }
7577 7576
7578 @override 7577 @override
7579 Object visitSwitchDefault(SwitchDefault node) { 7578 Object visitSwitchDefault(SwitchDefault node) {
7580 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " "); 7579 _visitNodeListWithSeparatorAndSuffix(node.labels, " ", " ");
7581 _writer.print("default: "); 7580 _buffer.write("default: ");
7582 _visitNodeListWithSeparator(node.statements, " "); 7581 _visitNodeListWithSeparator(node.statements, " ");
7583 return null; 7582 return null;
7584 } 7583 }
7585 7584
7586 @override 7585 @override
7587 Object visitSwitchStatement(SwitchStatement node) { 7586 Object visitSwitchStatement(SwitchStatement node) {
7588 _writer.print("switch ("); 7587 _buffer.write("switch (");
7589 _visitNode(node.expression); 7588 _visitNode(node.expression);
7590 _writer.print(") {"); 7589 _buffer.write(") {");
7591 _visitNodeListWithSeparator(node.members, " "); 7590 _visitNodeListWithSeparator(node.members, " ");
7592 _writer.print("}"); 7591 _buffer.write("}");
7593 return null; 7592 return null;
7594 } 7593 }
7595 7594
7596 @override 7595 @override
7597 Object visitSymbolLiteral(SymbolLiteral node) { 7596 Object visitSymbolLiteral(SymbolLiteral node) {
7598 _writer.print("#"); 7597 _buffer.write("#");
7599 List<Token> components = node.components; 7598 List<Token> components = node.components;
7600 for (int i = 0; i < components.length; i++) { 7599 for (int i = 0; i < components.length; i++) {
7601 if (i > 0) { 7600 if (i > 0) {
7602 _writer.print("."); 7601 _buffer.write(".");
7603 } 7602 }
7604 _writer.print(components[i].lexeme); 7603 _buffer.write(components[i].lexeme);
7605 } 7604 }
7606 return null; 7605 return null;
7607 } 7606 }
7608 7607
7609 @override 7608 @override
7610 Object visitThisExpression(ThisExpression node) { 7609 Object visitThisExpression(ThisExpression node) {
7611 _writer.print("this"); 7610 _buffer.write("this");
7612 return null; 7611 return null;
7613 } 7612 }
7614 7613
7615 @override 7614 @override
7616 Object visitThrowExpression(ThrowExpression node) { 7615 Object visitThrowExpression(ThrowExpression node) {
7617 _writer.print("throw "); 7616 _buffer.write("throw ");
7618 _visitNode(node.expression); 7617 _visitNode(node.expression);
7619 return null; 7618 return null;
7620 } 7619 }
7621 7620
7622 @override 7621 @override
7623 Object visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) { 7622 Object visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
7624 _visitNodeWithSuffix(node.variables, ";"); 7623 _visitNodeWithSuffix(node.variables, ";");
7625 return null; 7624 return null;
7626 } 7625 }
7627 7626
7628 @override 7627 @override
7629 Object visitTryStatement(TryStatement node) { 7628 Object visitTryStatement(TryStatement node) {
7630 _writer.print("try "); 7629 _buffer.write("try ");
7631 _visitNode(node.body); 7630 _visitNode(node.body);
7632 _visitNodeListWithSeparatorAndPrefix(" ", node.catchClauses, " "); 7631 _visitNodeListWithSeparatorAndPrefix(" ", node.catchClauses, " ");
7633 _visitNodeWithPrefix(" finally ", node.finallyBlock); 7632 _visitNodeWithPrefix(" finally ", node.finallyBlock);
7634 return null; 7633 return null;
7635 } 7634 }
7636 7635
7637 @override 7636 @override
7638 Object visitTypeArgumentList(TypeArgumentList node) { 7637 Object visitTypeArgumentList(TypeArgumentList node) {
7639 _writer.print('<'); 7638 _buffer.write('<');
7640 _visitNodeListWithSeparator(node.arguments, ", "); 7639 _visitNodeListWithSeparator(node.arguments, ", ");
7641 _writer.print('>'); 7640 _buffer.write('>');
7642 return null; 7641 return null;
7643 } 7642 }
7644 7643
7645 @override 7644 @override
7646 Object visitTypeName(TypeName node) { 7645 Object visitTypeName(TypeName node) {
7647 _visitNode(node.name); 7646 _visitNode(node.name);
7648 _visitNode(node.typeArguments); 7647 _visitNode(node.typeArguments);
7649 return null; 7648 return null;
7650 } 7649 }
7651 7650
7652 @override 7651 @override
7653 Object visitTypeParameter(TypeParameter node) { 7652 Object visitTypeParameter(TypeParameter node) {
7654 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7653 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7655 _visitNode(node.name); 7654 _visitNode(node.name);
7656 _visitNodeWithPrefix(" extends ", node.bound); 7655 _visitNodeWithPrefix(" extends ", node.bound);
7657 return null; 7656 return null;
7658 } 7657 }
7659 7658
7660 @override 7659 @override
7661 Object visitTypeParameterList(TypeParameterList node) { 7660 Object visitTypeParameterList(TypeParameterList node) {
7662 _writer.print('<'); 7661 _buffer.write('<');
7663 _visitNodeListWithSeparator(node.typeParameters, ", "); 7662 _visitNodeListWithSeparator(node.typeParameters, ", ");
7664 _writer.print('>'); 7663 _buffer.write('>');
7665 return null; 7664 return null;
7666 } 7665 }
7667 7666
7668 @override 7667 @override
7669 Object visitVariableDeclaration(VariableDeclaration node) { 7668 Object visitVariableDeclaration(VariableDeclaration node) {
7670 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7669 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7671 _visitNode(node.name); 7670 _visitNode(node.name);
7672 _visitNodeWithPrefix(" = ", node.initializer); 7671 _visitNodeWithPrefix(" = ", node.initializer);
7673 return null; 7672 return null;
7674 } 7673 }
7675 7674
7676 @override 7675 @override
7677 Object visitVariableDeclarationList(VariableDeclarationList node) { 7676 Object visitVariableDeclarationList(VariableDeclarationList node) {
7678 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 7677 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
7679 _visitTokenWithSuffix(node.keyword, " "); 7678 _visitTokenWithSuffix(node.keyword, " ");
7680 _visitNodeWithSuffix(node.type, " "); 7679 _visitNodeWithSuffix(node.type, " ");
7681 _visitNodeListWithSeparator(node.variables, ", "); 7680 _visitNodeListWithSeparator(node.variables, ", ");
7682 return null; 7681 return null;
7683 } 7682 }
7684 7683
7685 @override 7684 @override
7686 Object visitVariableDeclarationStatement(VariableDeclarationStatement node) { 7685 Object visitVariableDeclarationStatement(VariableDeclarationStatement node) {
7687 _visitNode(node.variables); 7686 _visitNode(node.variables);
7688 _writer.print(";"); 7687 _buffer.write(";");
7689 return null; 7688 return null;
7690 } 7689 }
7691 7690
7692 @override 7691 @override
7693 Object visitWhileStatement(WhileStatement node) { 7692 Object visitWhileStatement(WhileStatement node) {
7694 _writer.print("while ("); 7693 _buffer.write("while (");
7695 _visitNode(node.condition); 7694 _visitNode(node.condition);
7696 _writer.print(") "); 7695 _buffer.write(") ");
7697 _visitNode(node.body); 7696 _visitNode(node.body);
7698 return null; 7697 return null;
7699 } 7698 }
7700 7699
7701 @override 7700 @override
7702 Object visitWithClause(WithClause node) { 7701 Object visitWithClause(WithClause node) {
7703 _writer.print("with "); 7702 _buffer.write("with ");
7704 _visitNodeListWithSeparator(node.mixinTypes, ", "); 7703 _visitNodeListWithSeparator(node.mixinTypes, ", ");
7705 return null; 7704 return null;
7706 } 7705 }
7707 7706
7708 @override 7707 @override
7709 Object visitYieldStatement(YieldStatement node) { 7708 Object visitYieldStatement(YieldStatement node) {
7710 if (node.star != null) { 7709 if (node.star != null) {
7711 _writer.print("yield* "); 7710 _buffer.write("yield* ");
7712 } else { 7711 } else {
7713 _writer.print("yield "); 7712 _buffer.write("yield ");
7714 } 7713 }
7715 _visitNode(node.expression); 7714 _visitNode(node.expression);
7716 _writer.print(";"); 7715 _buffer.write(";");
7717 return null; 7716 return null;
7718 } 7717 }
7719 7718
7720 /** 7719 /**
7721 * Visit the given function [body], printing the [prefix] before if the body 7720 * Visit the given function [body], printing the [prefix] before if the body
7722 * is not empty. 7721 * is not empty.
7723 */ 7722 */
7724 void _visitFunctionWithPrefix(String prefix, FunctionBody body) { 7723 void _visitFunctionWithPrefix(String prefix, FunctionBody body) {
7725 if (body is! EmptyFunctionBody) { 7724 if (body is! EmptyFunctionBody) {
7726 _writer.print(prefix); 7725 _buffer.write(prefix);
7727 } 7726 }
7728 _visitNode(body); 7727 _visitNode(body);
7729 } 7728 }
7730 7729
7731 /** 7730 /**
7732 * Safely visit the given [node]. 7731 * Safely visit the given [node].
7733 */ 7732 */
7734 void _visitNode(AstNode node) { 7733 void _visitNode(AstNode node) {
7735 if (node != null) { 7734 if (node != null) {
7736 node.accept(this); 7735 node.accept(this);
7737 } 7736 }
7738 } 7737 }
7739 7738
7740 /** 7739 /**
7741 * Print a list of [nodes] without any separation. 7740 * Print a list of [nodes] without any separation.
7742 */ 7741 */
7743 void _visitNodeList(NodeList<AstNode> nodes) { 7742 void _visitNodeList(NodeList<AstNode> nodes) {
7744 _visitNodeListWithSeparator(nodes, ""); 7743 _visitNodeListWithSeparator(nodes, "");
7745 } 7744 }
7746 7745
7747 /** 7746 /**
7748 * Print a list of [nodes], separated by the given [separator]. 7747 * Print a list of [nodes], separated by the given [separator].
7749 */ 7748 */
7750 void _visitNodeListWithSeparator(NodeList<AstNode> nodes, String separator) { 7749 void _visitNodeListWithSeparator(NodeList<AstNode> nodes, String separator) {
7751 if (nodes != null) { 7750 if (nodes != null) {
7752 int size = nodes.length; 7751 int size = nodes.length;
7753 for (int i = 0; i < size; i++) { 7752 for (int i = 0; i < size; i++) {
7754 if (i > 0) { 7753 if (i > 0) {
7755 _writer.print(separator); 7754 _buffer.write(separator);
7756 } 7755 }
7757 nodes[i].accept(this); 7756 nodes[i].accept(this);
7758 } 7757 }
7759 } 7758 }
7760 } 7759 }
7761 7760
7762 /** 7761 /**
7763 * Print a list of [nodes], prefixed by the given [prefix] if the list is not 7762 * Print a list of [nodes], prefixed by the given [prefix] if the list is not
7764 * empty, and separated by the given [separator]. 7763 * empty, and separated by the given [separator].
7765 */ 7764 */
7766 void _visitNodeListWithSeparatorAndPrefix( 7765 void _visitNodeListWithSeparatorAndPrefix(
7767 String prefix, NodeList<AstNode> nodes, String separator) { 7766 String prefix, NodeList<AstNode> nodes, String separator) {
7768 if (nodes != null) { 7767 if (nodes != null) {
7769 int size = nodes.length; 7768 int size = nodes.length;
7770 if (size > 0) { 7769 if (size > 0) {
7771 _writer.print(prefix); 7770 _buffer.write(prefix);
7772 for (int i = 0; i < size; i++) { 7771 for (int i = 0; i < size; i++) {
7773 if (i > 0) { 7772 if (i > 0) {
7774 _writer.print(separator); 7773 _buffer.write(separator);
7775 } 7774 }
7776 nodes[i].accept(this); 7775 nodes[i].accept(this);
7777 } 7776 }
7778 } 7777 }
7779 } 7778 }
7780 } 7779 }
7781 7780
7782 /** 7781 /**
7783 * Print a list of [nodes], separated by the given [separator], followed by 7782 * Print a list of [nodes], separated by the given [separator], followed by
7784 * the given [suffix] if the list is not empty. 7783 * the given [suffix] if the list is not empty.
7785 */ 7784 */
7786 void _visitNodeListWithSeparatorAndSuffix( 7785 void _visitNodeListWithSeparatorAndSuffix(
7787 NodeList<AstNode> nodes, String separator, String suffix) { 7786 NodeList<AstNode> nodes, String separator, String suffix) {
7788 if (nodes != null) { 7787 if (nodes != null) {
7789 int size = nodes.length; 7788 int size = nodes.length;
7790 if (size > 0) { 7789 if (size > 0) {
7791 for (int i = 0; i < size; i++) { 7790 for (int i = 0; i < size; i++) {
7792 if (i > 0) { 7791 if (i > 0) {
7793 _writer.print(separator); 7792 _buffer.write(separator);
7794 } 7793 }
7795 nodes[i].accept(this); 7794 nodes[i].accept(this);
7796 } 7795 }
7797 _writer.print(suffix); 7796 _buffer.write(suffix);
7798 } 7797 }
7799 } 7798 }
7800 } 7799 }
7801 7800
7802 /** 7801 /**
7803 * Safely visit the given [node], printing the [prefix] before the node if it 7802 * Safely visit the given [node], printing the [prefix] before the node if it
7804 * is non-`null`. 7803 * is non-`null`.
7805 */ 7804 */
7806 void _visitNodeWithPrefix(String prefix, AstNode node) { 7805 void _visitNodeWithPrefix(String prefix, AstNode node) {
7807 if (node != null) { 7806 if (node != null) {
7808 _writer.print(prefix); 7807 _buffer.write(prefix);
7809 node.accept(this); 7808 node.accept(this);
7810 } 7809 }
7811 } 7810 }
7812 7811
7813 /** 7812 /**
7814 * Safely visit the given [node], printing the [suffix] after the node if it 7813 * Safely visit the given [node], printing the [suffix] after the node if it
7815 * is non-`null`. 7814 * is non-`null`.
7816 */ 7815 */
7817 void _visitNodeWithSuffix(AstNode node, String suffix) { 7816 void _visitNodeWithSuffix(AstNode node, String suffix) {
7818 if (node != null) { 7817 if (node != null) {
7819 node.accept(this); 7818 node.accept(this);
7820 _writer.print(suffix); 7819 _buffer.write(suffix);
7821 } 7820 }
7822 } 7821 }
7823 7822
7824 /** 7823 /**
7825 * Safely visit the given [token], printing the [suffix] after the token if it 7824 * Safely visit the given [token], printing the [suffix] after the token if it
7826 * is non-`null`. 7825 * is non-`null`.
7827 */ 7826 */
7828 void _visitTokenWithSuffix(Token token, String suffix) { 7827 void _visitTokenWithSuffix(Token token, String suffix) {
7829 if (token != null) { 7828 if (token != null) {
7830 _writer.print(token.lexeme); 7829 _buffer.write(token.lexeme);
7831 _writer.print(suffix); 7830 _buffer.write(suffix);
7832 } 7831 }
7833 } 7832 }
7834 } 7833 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/ast/ast.dart ('k') | pkg/analyzer/lib/src/generated/java_core.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698