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

Unified Diff: lib/src/rule/argument.dart

Issue 1418483008: Optimize splitting lines with many rules. (Closed) Base URL: https://github.com/dart-lang/dart_style.git@master
Patch Set: Created 5 years, 1 month 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
Index: lib/src/rule/argument.dart
diff --git a/lib/src/rule/argument.dart b/lib/src/rule/argument.dart
index 13a358ab2579026e99212c737873aec5d3c4932c..05270b9c71fb5a962fb6348a5960fea6f4aa20c6 100644
--- a/lib/src/rule/argument.dart
+++ b/lib/src/rule/argument.dart
@@ -10,7 +10,7 @@ import 'rule.dart';
/// Base class for a rule that handles argument or parameter lists.
abstract class ArgumentRule extends Rule {
/// The rule used to split collections in the argument list, if any.
- final Rule _collectionRule;
+ Rule _collectionRule;
/// If true, then inner rules that are written will force this rule to split.
///
@@ -27,13 +27,15 @@ abstract class ArgumentRule extends Rule {
/// collections in the list.
ArgumentRule(this._collectionRule);
- Iterable<Rule> get constrainedRules {
- var rules = super.constrainedRules;
- if (_collectionRule != null) {
- rules = rules.toList()..add(_collectionRule);
- }
+ void addConstrainedRules(Set<Rule> rules) {
+ if (_collectionRule != null) rules.add(_collectionRule);
+ }
- return rules;
+ void forgetUnusedRules() {
+ super.forgetUnusedRules();
+ if (_collectionRule != null && _collectionRule.index == null) {
+ _collectionRule = null;
+ }
}
/// Called before a collection argument is written.
@@ -68,13 +70,15 @@ abstract class PositionalRule extends ArgumentRule {
/// arguments in the list.
PositionalRule(Rule collectionRule) : super(collectionRule);
- Iterable<Rule> get constrainedRules {
- var rules = super.constrainedRules;
- if (_namedArgsRule != null) {
- rules = rules.toList()..add(_namedArgsRule);
- }
+ void addConstrainedRules(Set<Rule> rules) {
+ if (_namedArgsRule != null) rules.add(_namedArgsRule);
+ }
- return rules;
+ void forgetUnusedRules() {
+ super.forgetUnusedRules();
+ if (_namedArgsRule != null && _namedArgsRule.index == null) {
+ _namedArgsRule = null;
+ }
}
/// Remembers [chunk] as containing the split that occurs right before an
@@ -122,8 +126,6 @@ class SinglePositionalRule extends PositionalRule {
/// internally without forcing a split before the argument.
final bool splitsOnInnerRules;
- bool hack = false;
-
/// Creates a new rule for a positional argument list.
///
/// If [collectionRule] is given, it is the rule used to split the

Powered by Google App Engine
This is Rietveld 408576698