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

Unified Diff: pkg/analyzer_experimental/lib/src/services/formatter_impl.dart

Issue 23044004: Formatter cleanup. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer_experimental/test/services/formatter_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_experimental/lib/src/services/formatter_impl.dart
===================================================================
--- pkg/analyzer_experimental/lib/src/services/formatter_impl.dart (revision 26064)
+++ pkg/analyzer_experimental/lib/src/services/formatter_impl.dart (working copy)
@@ -161,64 +161,60 @@
}
visitAnnotation(Annotation node) {
- writer.print('@');
+ emitToken(node.atSign);
visit(node.name);
visitPrefixed('.', node.constructorName);
visit(node.arguments);
}
visitArgumentDefinitionTest(ArgumentDefinitionTest node) {
- writer.print('?');
+ emitToken(node.question);
visit(node.identifier);
}
visitArgumentList(ArgumentList node) {
- writer.print('(');
+ emitToken(node.leftParenthesis);
visitList(node.arguments, ', ');
- writer.print(')');
+ emitToken(node.rightParenthesis);
}
visitAsExpression(AsExpression node) {
visit(node.expression);
- writer.print(' as ');
+ emitToken(node.asOperator, prefix: ' ', suffix: ' ');
visit(node.type);
}
visitAssertStatement(AssertStatement node) {
- writer.print('assert (');
+ emitToken(node.keyword, suffix: ' (');
visit(node.condition);
- writer.print(');');
+ emitToken(node.semicolon, prefix: ')');
}
visitAssignmentExpression(AssignmentExpression node) {
visit(node.leftHandSide);
- writer.print(' ');
- writer.print(node.operator.lexeme);
- writer.print(' ');
+ emitToken(node.operator, prefix: ' ', suffix: ' ');
visit(node.rightHandSide);
}
visitBinaryExpression(BinaryExpression node) {
visit(node.leftOperand);
- writer.print(' ');
- writer.print(node.operator.lexeme);
- writer.print(' ');
+ emitToken(node.operator, prefix: ' ', suffix: ' ');
visit(node.rightOperand);
}
visitBlock(Block node) {
-// writer.print('{');
emitToken(node.leftBracket);
- writer.indent();
+ indent();
for (var stmt in node.statements) {
- //writer.newline();
visit(stmt);
}
- writer.unindent();
- writer.newline();
- writer.print('}');
+ unindent();
+ newline();
+ print('}');
+//TODO(pquitslund): make this work
+// emitToken(node.rightBracket);
previousToken = node.rightBracket;
}
@@ -227,13 +223,13 @@
}
visitBooleanLiteral(BooleanLiteral node) {
- writer.print(node.literal.lexeme);
+ emitToken(node.literal);
}
visitBreakStatement(BreakStatement node) {
emitToken(node.keyword);
visitPrefixed(' ', node.label);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitCascadeExpression(CascadeExpression node) {
@@ -245,54 +241,51 @@
visitPrefixed('on ', node.exceptionType);
if (node.catchKeyword != null) {
if (node.exceptionType != null) {
- writer.print(' ');
+ print(' ');
}
- writer.print('catch (');
+ print('catch (');
visit(node.exceptionParameter);
visitPrefixed(', ', node.stackTraceParameter);
- writer.print(') ');
+ print(') ');
} else {
- writer.print(' ');
+ print(' ');
}
visit(node.body);
- writer.newline();
+ newline();
}
visitClassDeclaration(ClassDeclaration node) {
- emitToken(node.abstractKeyword, ' ');
- emitToken(node.classKeyword, ' ');
+ emitToken(node.abstractKeyword, suffix: ' ');
+ emitToken(node.classKeyword, suffix: ' ');
visit(node.name);
visit(node.typeParameters);
visitPrefixed(' ', node.extendsClause);
visitPrefixed(' ', node.withClause);
visitPrefixed(' ', node.implementsClause);
-// writer.print(' {');
-// writer.print(' ');
-// emit(node.leftBracket);
- emitPrefixedToken(' ', node.leftBracket);
- writer.indent();
+ emitToken(node.leftBracket, prefix: ' ');
+ indent();
for (var i = 0; i < node.members.length; i++) {
visit(node.members[i]);
}
- writer.unindent();
+ unindent();
- emit(node.rightBracket, min: 1);
+ emitToken(node.rightBracket, minNewlines: 1);
}
visitClassTypeAlias(ClassTypeAlias node) {
- writer.print('typedef ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.name);
visit(node.typeParameters);
- writer.print(' = ');
+ print(' = ');
if (node.abstractKeyword != null) {
- writer.print('abstract ');
+ print('abstract ');
}
visit(node.superclass);
visitPrefixed(' ', node.withClause);
visitPrefixed(' ', node.implementsClause);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitComment(Comment node) => null;
@@ -310,21 +303,21 @@
visitPrefixedList(prefix, node.declarations);
//TODO(pquitslund): move this?
- writer.newline();
+ newline();
}
visitConditionalExpression(ConditionalExpression node) {
visit(node.condition);
- writer.print(' ? ');
+ print(' ? ');
visit(node.thenExpression);
- writer.print(' : ');
+ print(' : ');
visit(node.elseExpression);
}
visitConstructorDeclaration(ConstructorDeclaration node) {
- emitToken(node.externalKeyword, ' ');
- emitToken(node.constKeyword, ' ');
- emitToken(node.factoryKeyword, ' ');
+ emitToken(node.externalKeyword, suffix: ' ');
+ emitToken(node.constKeyword, suffix: ' ');
+ emitToken(node.factoryKeyword, suffix: ' ');
visit(node.returnType);
visitPrefixed('.', node.name);
visit(node.parameters);
@@ -334,9 +327,9 @@
}
visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
- emitToken(node.keyword, '.');
+ emitToken(node.keyword, suffix: '.');
visit(node.fieldName);
- writer.print(' = ');
+ print(' = ');
visit(node.expression);
}
@@ -346,13 +339,13 @@
}
visitContinueStatement(ContinueStatement node) {
- writer.print('continue');
+ emitToken(node.keyword);
visitPrefixed(' ', node.label);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitDeclaredIdentifier(DeclaredIdentifier node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visitSuffixed(node.type, ' ');
visit(node.identifier);
}
@@ -360,138 +353,136 @@
visitDefaultFormalParameter(DefaultFormalParameter node) {
visit(node.parameter);
if (node.separator != null) {
- writer.print(' ');
- writer.print(node.separator.lexeme);
+ print(' ');
+ print(node.separator.lexeme);
visitPrefixed(' ', node.defaultValue);
}
}
visitDoStatement(DoStatement node) {
- writer.print('do ');
+ emitToken(node.doKeyword, suffix: ' ');
visit(node.body);
- writer.print(' while (');
+ emitToken(node.whileKeyword, prefix: ' ', suffix: ' (');
visit(node.condition);
- writer.print(');');
+ emitToken(node.semicolon, prefix: ')');
}
visitDoubleLiteral(DoubleLiteral node) {
- writer.print(node.literal.lexeme);
+ print(node.literal.lexeme);
}
visitEmptyFunctionBody(EmptyFunctionBody node) {
- writer.print(';');
+ emitToken(node.semicolon);
}
visitEmptyStatement(EmptyStatement node) {
- writer.print(';');
+ emitToken(node.semicolon);
}
visitExportDirective(ExportDirective node) {
- writer.print('export ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.uri);
visitPrefixedList(' ', node.combinators, ' ');
- writer.print(';');
+ emitToken(node.semicolon);
}
visitExpressionFunctionBody(ExpressionFunctionBody node) {
- writer.print('=> ');
+ emitToken(node.functionDefinition, suffix: ' ');
visit(node.expression);
- if (node.semicolon != null) {
- writer.print(';');
- }
+ emitToken(node.semicolon);
}
visitExpressionStatement(ExpressionStatement node) {
visit(node.expression);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitExtendsClause(ExtendsClause node) {
- writer.print('extends ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.superclass);
}
visitFieldDeclaration(FieldDeclaration node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.fields);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitFieldFormalParameter(FieldFormalParameter node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visitSuffixed(node.type, ' ');
- writer.print('this.');
+ print('this.');
visit(node.identifier);
visit(node.parameters);
}
visitForEachStatement(ForEachStatement node) {
- writer.print('for (');
+ print('for (');
visit(node.loopVariable);
- writer.print(' in ');
+ print(' in ');
visit(node.iterator);
- writer.print(') ');
+ print(') ');
visit(node.body);
}
visitFormalParameterList(FormalParameterList node) {
var groupEnd = null;
- writer.print('(');
+ print('(');
var parameters = node.parameters;
var size = parameters.length;
for (var i = 0; i < size; i++) {
var parameter = parameters[i];
if (i > 0) {
- writer.print(', ');
+ print(', ');
}
if (groupEnd == null && parameter is DefaultFormalParameter) {
if (identical(parameter.kind, ParameterKind.NAMED)) {
groupEnd = '}';
- writer.print('{');
+ print('{');
} else {
groupEnd = ']';
- writer.print('[');
+ print('[');
}
}
parameter.accept(this);
}
if (groupEnd != null) {
- writer.print(groupEnd);
+ print(groupEnd);
}
- writer.print(')');
+ print(')');
}
visitForStatement(ForStatement node) {
var initialization = node.initialization;
- writer.print('for (');
+ print('for (');
if (initialization != null) {
visit(initialization);
} else {
visit(node.variables);
}
- writer.print(';');
+ print(';');
visitPrefixed(' ', node.condition);
- writer.print(';');
+ print(';');
visitPrefixedList(' ', node.updaters, ', ');
- writer.print(') ');
+ print(') ');
visit(node.body);
}
visitFunctionDeclaration(FunctionDeclaration node) {
visitSuffixed(node.returnType, ' ');
- emitToken(node.propertyKeyword, ' ');
+ emitToken(node.propertyKeyword, suffix: ' ');
visit(node.name);
visit(node.functionExpression);
}
visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
visit(node.functionDeclaration);
- writer.print(';');
+ print(';');
}
visitFunctionExpression(FunctionExpression node) {
visit(node.parameters);
- writer.print(' ');
+ print(' ');
visit(node.body);
}
@@ -501,12 +492,12 @@
}
visitFunctionTypeAlias(FunctionTypeAlias node) {
- writer.print('typedef ');
+ emitToken(node.keyword, suffix: ' ');
visitSuffixed(node.returnType, ' ');
visit(node.name);
visit(node.typeParameters);
visit(node.parameters);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
@@ -516,83 +507,81 @@
}
visitHideCombinator(HideCombinator node) {
- writer.print('hide ');
+ emitToken(node.keyword, suffix: ' ');
visitList(node.hiddenNames, ', ');
}
visitIfStatement(IfStatement node) {
emitToken(node.ifKeyword);
- writer.print(' (');
+ print(' (');
visit(node.condition);
- writer.print(') ');
+ print(') ');
visit(node.thenStatement);
visitPrefixed(' else ', node.elseStatement);
}
visitImplementsClause(ImplementsClause node) {
- writer.print('implements ');
+ emitToken(node.keyword, suffix: ' ');
visitList(node.interfaces, ', ');
}
visitImportDirective(ImportDirective node) {
- writer.print('import ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.uri);
visitPrefixed(' as ', node.prefix);
visitPrefixedList(' ', node.combinators, ' ');
-// writer.print(';');
emitToken(node.semicolon);
-// writer.newline();
}
visitIndexExpression(IndexExpression node) {
if (node.isCascaded) {
- writer.print('..');
+ print('..');
} else {
visit(node.target);
}
- writer.print('[');
+ print('[');
visit(node.index);
- writer.print(']');
+ print(']');
}
visitInstanceCreationExpression(InstanceCreationExpression node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.constructorName);
visit(node.argumentList);
}
visitIntegerLiteral(IntegerLiteral node) {
- writer.print(node.literal.lexeme);
+ print(node.literal.lexeme);
}
visitInterpolationExpression(InterpolationExpression node) {
if (node.rightBracket != null) {
- writer.print('\${');
+ print('\${');
visit(node.expression);
- writer.print('}');
+ print('}');
} else {
- writer.print('\$');
+ print('\$');
visit(node.expression);
}
}
visitInterpolationString(InterpolationString node) {
- writer.print(node.contents.lexeme);
+ print(node.contents.lexeme);
}
visitIsExpression(IsExpression node) {
visit(node.expression);
if (node.notOperator == null) {
- writer.print(' is ');
+ print(' is ');
} else {
- writer.print(' is! ');
+ print(' is! ');
}
visit(node.type);
}
visitLabel(Label node) {
visit(node.label);
- writer.print(':');
+ print(':');
}
visitLabeledStatement(LabeledStatement node) {
@@ -601,49 +590,49 @@
}
visitLibraryDirective(LibraryDirective node) {
- writer.print('library ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.name);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitLibraryIdentifier(LibraryIdentifier node) {
- writer.print(node.name);
+ print(node.name);
}
visitListLiteral(ListLiteral node) {
if (node.modifier != null) {
- writer.print(node.modifier.lexeme);
- writer.print(' ');
+ print(node.modifier.lexeme);
+ print(' ');
}
visit(node.typeArguments);
- writer.print('[');
+ print('[');
visitList(node.elements, ', ');
- writer.print(']');
+ print(']');
}
visitMapLiteral(MapLiteral node) {
if (node.modifier != null) {
- writer.print(node.modifier.lexeme);
- writer.print(' ');
+ print(node.modifier.lexeme);
+ print(' ');
}
visitSuffixed(node.typeArguments, ' ');
- writer.print('{');
+ print('{');
visitList(node.entries, ', ');
- writer.print('}');
+ print('}');
}
visitMapLiteralEntry(MapLiteralEntry node) {
visit(node.key);
- writer.print(' : ');
+ print(' : ');
visit(node.value);
}
visitMethodDeclaration(MethodDeclaration node) {
- emitToken(node.externalKeyword, ' ');
- emitToken(node.modifierKeyword, ' ');
+ emitToken(node.externalKeyword, suffix: ' ');
+ emitToken(node.modifierKeyword, suffix: ' ');
visitSuffixed(node.returnType, ' ');
- emitToken(node.propertyKeyword, ' ');
- emitToken(node.operatorKeyword, ' ');
+ emitToken(node.propertyKeyword, suffix: ' ');
+ emitToken(node.operatorKeyword, suffix: ' ');
visit(node.name);
if (!node.isGetter) {
visit(node.parameters);
@@ -653,7 +642,7 @@
visitMethodInvocation(MethodInvocation node) {
if (node.isCascaded) {
- writer.print('..');
+ print('..');
} else {
visitSuffixed(node.target, '.');
}
@@ -667,98 +656,97 @@
}
visitNativeClause(NativeClause node) {
- writer.print('native ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.name);
}
visitNativeFunctionBody(NativeFunctionBody node) {
- writer.print('native ');
+ emitToken(node.nativeToken, suffix: ' ');
visit(node.stringLiteral);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitNullLiteral(NullLiteral node) {
- writer.print('null');
+ emitToken(node.literal);
}
visitParenthesizedExpression(ParenthesizedExpression node) {
- writer.print('(');
+ emitToken(node.leftParenthesis);
visit(node.expression);
- writer.print(')');
+ emitToken(node.rightParenthesis);
}
visitPartDirective(PartDirective node) {
- writer.print('part ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.uri);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitPartOfDirective(PartOfDirective node) {
- writer.print('part of ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.libraryName);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitPostfixExpression(PostfixExpression node) {
visit(node.operand);
- writer.print(node.operator.lexeme);
+ print(node.operator.lexeme);
}
visitPrefixedIdentifier(PrefixedIdentifier node) {
visit(node.prefix);
- writer.print('.');
+ print('.');
visit(node.identifier);
}
visitPrefixExpression(PrefixExpression node) {
- writer.print(node.operator.lexeme);
+ emitToken(node.operator);
visit(node.operand);
}
visitPropertyAccess(PropertyAccess node) {
if (node.isCascaded) {
- writer.print('..');
+ print('..');
} else {
visit(node.target);
- writer.print('.');
+ print('.');
}
visit(node.propertyName);
}
visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) {
- writer.print('this');
+ emitToken(node.keyword);
visitPrefixed('.', node.constructorName);
visit(node.argumentList);
}
visitRethrowExpression(RethrowExpression node) {
- writer.print('rethrow');
+ emitToken(node.keyword);
}
visitReturnStatement(ReturnStatement node) {
var expression = node.expression;
if (expression == null) {
- emit(node.keyword, min: 1);
- writer.print(';');
+ emitToken(node.keyword, minNewlines: 1);
+ emitToken(node.semicolon);
} else {
- emit(node.keyword, min: 1);
- writer.print(' ');
+ emitToken(node.keyword, suffix: ' ', minNewlines: 1);
expression.accept(this);
- writer.print(';');
+ emitToken(node.semicolon);
}
}
visitScriptTag(ScriptTag node) {
- writer.print(node.scriptTag.lexeme);
+ print(node.scriptTag.lexeme);
}
visitShowCombinator(ShowCombinator node) {
- writer.print('show ');
+ emitToken(node.keyword, suffix: ' ');
visitList(node.shownNames, ', ');
}
visitSimpleFormalParameter(SimpleFormalParameter node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visitSuffixed(node.type, ' ');
visit(node.identifier);
}
@@ -768,7 +756,7 @@
}
visitSimpleStringLiteral(SimpleStringLiteral node) {
- writer.print(node.literal.lexeme);
+ emitToken(node.literal);
}
visitStringInterpolation(StringInterpolation node) {
@@ -776,43 +764,42 @@
}
visitSuperConstructorInvocation(SuperConstructorInvocation node) {
- writer.print('super');
+ emitToken(node.keyword);
visitPrefixed('.', node.constructorName);
visit(node.argumentList);
}
visitSuperExpression(SuperExpression node) {
- writer.print('super');
+ emitToken(node.keyword);
}
visitSwitchCase(SwitchCase node) {
visitSuffixedList(node.labels, ' ', ' ');
- emitToken(node.keyword);
- writer.print(' ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.expression);
- writer.print(':');
- writer.indent();
+ print(':');
+ indent();
visitList(node.statements);
- writer.unindent();
+ unindent();
}
visitSwitchDefault(SwitchDefault node) {
visitSuffixedList(node.labels, ' ', ' ');
- writer.print('default: ');
+ emitToken(node.keyword, suffix: ': ');
visitList(node.statements, ' ');
}
visitSwitchStatement(SwitchStatement node) {
emitToken(node.keyword);
- writer.print(' (');
+ print(' (');
visit(node.expression);
- writer.print(') ');
+ print(') ');
emitToken(node.leftBracket);
- writer.indent();
+ indent();
visitList(node.members);
- writer.unindent();
+ unindent();
emitToken(node.rightBracket);
- writer.newline();
+ newline();
}
visitSymbolLiteral(SymbolLiteral node) {
@@ -820,11 +807,11 @@
}
visitThisExpression(ThisExpression node) {
- writer.print('this');
+ emitToken(node.keyword);
}
visitThrowExpression(ThrowExpression node) {
- writer.print('throw ');
+ emitToken(node.keyword, suffix: ' ');
visit(node.expression);
}
@@ -833,16 +820,16 @@
}
visitTryStatement(TryStatement node) {
- writer.print('try ');
+ emitToken(node.tryKeyword, suffix: ' ');
visit(node.body);
visitPrefixedList(' ', node.catchClauses, ' ');
visitPrefixed(' finally ', node.finallyClause);
}
visitTypeArgumentList(TypeArgumentList node) {
- writer.print('<');
+ emitToken(node.leftBracket);
visitList(node.arguments, ', ');
- writer.print('>');
+ emitToken(node.rightBracket);
}
visitTypeName(TypeName node) {
@@ -856,9 +843,9 @@
}
visitTypeParameterList(TypeParameterList node) {
- writer.print('<');
+ emitToken(node.leftBracket);
visitList(node.typeParameters, ', ');
- writer.print('>');
+ emitToken(node.rightBracket);
}
visitVariableDeclaration(VariableDeclaration node) {
@@ -867,25 +854,25 @@
}
visitVariableDeclarationList(VariableDeclarationList node) {
- emitToken(node.keyword, ' ');
+ emitToken(node.keyword, suffix: ' ');
visitSuffixed(node.type, ' ');
visitList(node.variables, ', ');
}
visitVariableDeclarationStatement(VariableDeclarationStatement node) {
visit(node.variables);
- writer.print(';');
+ emitToken(node.semicolon);
}
visitWhileStatement(WhileStatement node) {
- writer.print('while (');
+ emitToken(node.keyword, suffix: ' (');
visit(node.condition);
- writer.print(') ');
+ print(') ');
visit(node.body);
}
visitWithClause(WithClause node) {
- writer.print('with ');
+ emitToken(node.withKeyword, suffix: ' ');
visitList(node.mixinTypes, ', ');
}
@@ -901,7 +888,7 @@
visitSuffixed(ASTNode node, String suffix) {
if (node != null) {
node.accept(this);
- writer.print(suffix);
+ print(suffix);
}
}
@@ -909,7 +896,7 @@
/// it is non-null.
visitPrefixed(String prefix, ASTNode node) {
if (node != null) {
- writer.print(prefix);
+ print(prefix);
node.accept(this);
}
}
@@ -918,38 +905,18 @@
/// body is not empty.
visitPrefixedBody(String prefix, FunctionBody body) {
if (body is! EmptyFunctionBody) {
- writer.print(prefix);
+ print(prefix);
}
visit(body);
}
- /// Emit the given [token], printing the prefix before the [token]
- /// if it is non-null.
- emitPrefixedToken(String prefix, Token token) {
- if (token != null) {
- writer.print(prefix);
- emitToken(token);
- }
- }
-
- /// Emit the given [token], printing the suffix after the [token]
- /// node if it is non-null.
- emitToken(Token token, [String suffix]) {
- if (token != null) {
- emit(token);
- if (suffix != null) {
- writer.print(suffix);
- }
- }
- }
-
- /// Print a list of [nodes], separated by the given [separator].
+ /// Print a list of [nodes], optionally separated by the given [separator].
visitList(NodeList<ASTNode> nodes, [String separator = '']) {
if (nodes != null) {
var size = nodes.length;
for (var i = 0; i < size; i++) {
if (i > 0) {
- writer.print(separator);
+ print(separator);
}
nodes[i].accept(this);
}
@@ -963,11 +930,11 @@
if (size > 0) {
for (var i = 0; i < size; i++) {
if (i > 0) {
- writer.print(separator);
+ print(separator);
}
nodes[i].accept(this);
}
- writer.print(suffix);
+ print(suffix);
}
}
}
@@ -978,10 +945,10 @@
if (nodes != null) {
var size = nodes.length;
if (size > 0) {
- writer.print(prefix);
+ print(prefix);
for (var i = 0; i < size; i++) {
if (i > 0 && separator != null) {
- writer.print(separator);
+ print(separator);
}
nodes[i].accept(this);
}
@@ -989,21 +956,60 @@
}
}
- /// Emit the given [token], preceeded by any detected newlines or a minimum
- /// as specified by [min].
- emit(Token token, {min: 0}) {
+
+ /// Emit the given [token], if it's non-null, preceded by any detected
+ /// newlines or a minimum as specified by [minNewlines], printing a [prefix]
+ /// before and a [suffix] after.
+ emitToken(Token token, {String prefix, String suffix,
+ int minNewlines: 0}) {
+ if (token != null) {
+ print(prefix);
+ emitPrecedingNewlines(token, min: minNewlines);
+ print(token.lexeme);
+ print(suffix);
+ }
+ }
+
+ /// Print the given [string] to the source writer if it's non-null.
+ print(String string) {
+ if (string != null) {
+ writer.print(string);
+ }
+ }
+
+ /// Emit a newline.
+ newline() {
+ writer.newline();
+ }
+
+ /// Emit [n] newlines.
+ newlines(n) {
+ writer.newlines(n);
+ }
+
+ /// Indent.
+ indent() {
+ writer.indent();
+ }
+
+ /// Unindent
+ unindent() {
+ writer.unindent();
+ }
+
+ /// Emit any detected newlines or a minimum as specified by [minNewlines].
+ emitPrecedingNewlines(Token token, {min: 0}) {
var comment = token.precedingComments;
var currentToken = comment != null ? comment : token;
- var newlines = max(min, countNewlinesBetween(previousToken, currentToken));
- writer.newlines(newlines);
+ var lines = max(min, countNewlinesBetween(previousToken, currentToken));
+ newlines(lines);
while (comment != null) {
- writer.print(comment.toString().trim());
- writer.newline();
+ print(comment.toString().trim());
+ newline();
comment = comment.next;
}
previousToken = token;
- writer.print(token.lexeme);
}
/// Count the blanks between these two nodes.
« no previous file with comments | « no previous file | pkg/analyzer_experimental/test/services/formatter_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698