| Index: pkg/analyzer/lib/src/services/formatter_impl.dart
|
| ===================================================================
|
| --- pkg/analyzer/lib/src/services/formatter_impl.dart (revision 34893)
|
| +++ pkg/analyzer/lib/src/services/formatter_impl.dart (working copy)
|
| @@ -530,7 +530,7 @@
|
|
|
| visitClassDeclaration(ClassDeclaration node) {
|
| preserveLeadingNewlines();
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.abstractKeyword);
|
| token(node.classKeyword);
|
| space();
|
| @@ -556,7 +556,7 @@
|
|
|
| visitClassTypeAlias(ClassTypeAlias node) {
|
| preserveLeadingNewlines();
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.abstractKeyword);
|
| token(node.keyword);
|
| space();
|
| @@ -615,7 +615,7 @@
|
| }
|
|
|
| visitConstructorDeclaration(ConstructorDeclaration node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.externalKeyword);
|
| modifier(node.constKeyword);
|
| modifier(node.factoryKeyword);
|
| @@ -743,7 +743,7 @@
|
| }
|
|
|
| visitExportDirective(ExportDirective node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitDirectiveMetadata(node.metadata);
|
| token(node.keyword);
|
| space();
|
| visit(node.uri);
|
| @@ -772,7 +772,7 @@
|
| }
|
|
|
| visitFieldDeclaration(FieldDeclaration node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.staticKeyword);
|
| visit(node.fields);
|
| token(node.semicolon);
|
| @@ -862,7 +862,7 @@
|
|
|
| visitFunctionDeclaration(FunctionDeclaration node) {
|
| preserveLeadingNewlines();
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.externalKeyword);
|
| visitNode(node.returnType, followedBy: space);
|
| modifier(node.propertyKeyword);
|
| @@ -888,7 +888,7 @@
|
| }
|
|
|
| visitFunctionTypeAlias(FunctionTypeAlias node) {
|
| - visitNodes(node.metadata, separatedBy: newlines, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| token(node.keyword);
|
| space();
|
| visitNode(node.returnType, followedBy: space);
|
| @@ -942,7 +942,7 @@
|
| }
|
|
|
| visitImportDirective(ImportDirective node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitDirectiveMetadata(node.metadata);
|
| token(node.keyword);
|
| nonBreakingSpace();
|
| visit(node.uri);
|
| @@ -1011,7 +1011,7 @@
|
| }
|
|
|
| visitLibraryDirective(LibraryDirective node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitDirectiveMetadata(node.metadata);
|
| token(node.keyword);
|
| space();
|
| visit(node.name);
|
| @@ -1055,7 +1055,7 @@
|
| }
|
|
|
| visitMethodDeclaration(MethodDeclaration node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.externalKeyword);
|
| modifier(node.modifierKeyword);
|
| visitNode(node.returnType, followedBy: space);
|
| @@ -1182,7 +1182,7 @@
|
| }
|
|
|
| visitSimpleFormalParameter(SimpleFormalParameter node) {
|
| - visitNodes(node.metadata, followedBy: space);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.keyword);
|
| visitNode(node.type, followedBy: space);
|
| visit(node.identifier);
|
| @@ -1305,7 +1305,7 @@
|
| }
|
|
|
| visitTypeParameter(TypeParameter node) {
|
| - visitNodes(node.metadata, followedBy: space);
|
| + visitMemberMetadata(node.metadata);
|
| visit(node.name);
|
| token(node.keyword /* extends */, precededBy: space, followedBy: space);
|
| visit(node.bound);
|
| @@ -1336,7 +1336,7 @@
|
| }
|
|
|
| visitVariableDeclarationList(VariableDeclarationList node) {
|
| - visitNodes(node.metadata, followedBy: newlines);
|
| + visitMemberMetadata(node.metadata);
|
| modifier(node.keyword);
|
| visitNode(node.type, followedBy: space);
|
|
|
| @@ -1399,6 +1399,24 @@
|
| }
|
| }
|
|
|
| + /// Visit member metadata
|
| + visitMemberMetadata(NodeList<Annotation> metadata) {
|
| + visitNodes(metadata,
|
| + separatedBy: () {
|
| + space();
|
| + preserveLeadingNewlines();
|
| + },
|
| + followedBy: space);
|
| + if (metadata != null && metadata.length > 0) {
|
| + preserveLeadingNewlines();
|
| + }
|
| + }
|
| +
|
| + /// Visit member metadata
|
| + visitDirectiveMetadata(NodeList<Annotation> metadata) {
|
| + visitNodes(metadata, separatedBy: newlines, followedBy: newlines);
|
| + }
|
| +
|
| /// Visit the given function [body], printing the [prefix] before if given
|
| /// body is not empty.
|
| visitPrefixedBody(prefix(), FunctionBody body) {
|
|
|