| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |