| 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 dart_style.src.source_visitor; | 5 library dart_style.src.source_visitor; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 import 'package:analyzer/src/generated/scanner.dart'; | 8 import 'package:analyzer/src/generated/scanner.dart'; |
| 9 import 'package:analyzer/src/generated/source.dart'; | 9 import 'package:analyzer/src/generated/source.dart'; |
| 10 | 10 |
| (...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 if (param != node.parameters.last) token(param.endToken.next); | 830 if (param != node.parameters.last) token(param.endToken.next); |
| 831 | 831 |
| 832 if (param != requiredParams.last) rule.beforeArgument(split()); | 832 if (param != requiredParams.last) rule.beforeArgument(split()); |
| 833 } | 833 } |
| 834 | 834 |
| 835 builder.endSpan(); | 835 builder.endSpan(); |
| 836 builder.endRule(); | 836 builder.endRule(); |
| 837 } | 837 } |
| 838 | 838 |
| 839 if (optionalParams.isNotEmpty) { | 839 if (optionalParams.isNotEmpty) { |
| 840 var namedRule = new NamedRule(); | 840 var namedRule = new NamedRule(null, 0, 0); |
| 841 if (rule != null) rule.setNamedArgsRule(namedRule); | 841 if (rule != null) rule.setNamedArgsRule(namedRule); |
| 842 | 842 |
| 843 _metadataRules.last.bindNamedRule(namedRule); | 843 _metadataRules.last.bindNamedRule(namedRule); |
| 844 | 844 |
| 845 builder.startRule(namedRule); | 845 builder.startRule(namedRule); |
| 846 | 846 |
| 847 // Make sure multi-line default values are indented. | 847 // Make sure multi-line default values are indented. |
| 848 builder.startBlockArgumentNesting(); | 848 builder.startBlockArgumentNesting(); |
| 849 | 849 |
| 850 namedRule | 850 namedRule.beforeArgument(builder.split(space: requiredParams.isNotEmpty)); |
| 851 .beforeArguments(builder.split(space: requiredParams.isNotEmpty)); | |
| 852 | 851 |
| 853 // "[" or "{" for optional parameters. | 852 // "[" or "{" for optional parameters. |
| 854 token(node.leftDelimiter); | 853 token(node.leftDelimiter); |
| 855 | 854 |
| 856 for (var param in optionalParams) { | 855 for (var param in optionalParams) { |
| 857 visit(param); | 856 visit(param); |
| 858 | 857 |
| 859 // Write the trailing comma. | 858 // Write the trailing comma. |
| 860 if (param != node.parameters.last) token(param.endToken.next); | 859 if (param != node.parameters.last) token(param.endToken.next); |
| 861 if (param != optionalParams.last) split(); | 860 if (param != optionalParams.last) namedRule.beforeArgument(split()); |
| 862 } | 861 } |
| 863 | 862 |
| 864 builder.endBlockArgumentNesting(); | 863 builder.endBlockArgumentNesting(); |
| 865 builder.endRule(); | 864 builder.endRule(); |
| 866 | 865 |
| 867 // "]" or "}" for optional parameters. | 866 // "]" or "}" for optional parameters. |
| 868 token(node.rightDelimiter); | 867 token(node.rightDelimiter); |
| 869 } | 868 } |
| 870 | 869 |
| 871 _metadataRules.removeLast(); | 870 _metadataRules.removeLast(); |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 return; | 1196 return; |
| 1198 } | 1197 } |
| 1199 | 1198 |
| 1200 new CallChainVisitor(this, node).visit(); | 1199 new CallChainVisitor(this, node).visit(); |
| 1201 } | 1200 } |
| 1202 | 1201 |
| 1203 visitNamedExpression(NamedExpression node) { | 1202 visitNamedExpression(NamedExpression node) { |
| 1204 builder.nestExpression(); | 1203 builder.nestExpression(); |
| 1205 builder.startSpan(); | 1204 builder.startSpan(); |
| 1206 visit(node.name); | 1205 visit(node.name); |
| 1207 visit(node.expression, before: soloSplit); | 1206 |
| 1207 // Don't allow a split between a name and a collection. Instead, we want |
| 1208 // the collection itself to split, or to split before the argument. |
| 1209 if (node.expression is ListLiteral || node.expression is MapLiteral) { |
| 1210 space(); |
| 1211 } else { |
| 1212 soloSplit(); |
| 1213 } |
| 1214 |
| 1215 visit(node.expression); |
| 1208 builder.endSpan(); | 1216 builder.endSpan(); |
| 1209 builder.unnest(); | 1217 builder.unnest(); |
| 1210 } | 1218 } |
| 1211 | 1219 |
| 1212 visitNativeClause(NativeClause node) { | 1220 visitNativeClause(NativeClause node) { |
| 1213 token(node.nativeKeyword); | 1221 token(node.nativeKeyword); |
| 1214 space(); | 1222 space(); |
| 1215 visit(node.name); | 1223 visit(node.name); |
| 1216 } | 1224 } |
| 1217 | 1225 |
| (...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2332 /// Gets the 1-based line number that the beginning of [token] lies on. | 2340 /// Gets the 1-based line number that the beginning of [token] lies on. |
| 2333 int _startLine(Token token) => _lineInfo.getLocation(token.offset).lineNumber; | 2341 int _startLine(Token token) => _lineInfo.getLocation(token.offset).lineNumber; |
| 2334 | 2342 |
| 2335 /// Gets the 1-based line number that the end of [token] lies on. | 2343 /// Gets the 1-based line number that the end of [token] lies on. |
| 2336 int _endLine(Token token) => _lineInfo.getLocation(token.end).lineNumber; | 2344 int _endLine(Token token) => _lineInfo.getLocation(token.end).lineNumber; |
| 2337 | 2345 |
| 2338 /// Gets the 1-based column number that the beginning of [token] lies on. | 2346 /// Gets the 1-based column number that the beginning of [token] lies on. |
| 2339 int _startColumn(Token token) => | 2347 int _startColumn(Token token) => |
| 2340 _lineInfo.getLocation(token.offset).columnNumber; | 2348 _lineInfo.getLocation(token.offset).columnNumber; |
| 2341 } | 2349 } |
| OLD | NEW |