| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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.line_splitting.solve_state; | 5 library dart_style.src.line_splitting.solve_state; |
| 6 | 6 |
| 7 import '../debug.dart' as debug; | 7 import '../debug.dart' as debug; |
| 8 import '../rule/rule.dart'; | 8 import '../rule/rule.dart'; |
| 9 import '../whitespace.dart'; | 9 import '../whitespace.dart'; |
| 10 import 'line_splitter.dart'; | 10 import 'line_splitter.dart'; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 /// invalid constraints on the currently bound values. | 90 /// invalid constraints on the currently bound values. |
| 91 /// | 91 /// |
| 92 /// For example, say rule A is bound to 1 and B is unbound. If B has value | 92 /// For example, say rule A is bound to 1 and B is unbound. If B has value |
| 93 /// 1, it constrains A to be 1. Likewise, if B is 2, it constrains A to be | 93 /// 1, it constrains A to be 1. Likewise, if B is 2, it constrains A to be |
| 94 /// 2 as well. Since we already know A is 1, that means we know B cannot be | 94 /// 2 as well. Since we already know A is 1, that means we know B cannot be |
| 95 /// bound to value 2. This means B is more limited in this state than it | 95 /// bound to value 2. This means B is more limited in this state than it |
| 96 /// might be in another state that binds A to a different value. | 96 /// might be in another state that binds A to a different value. |
| 97 /// | 97 /// |
| 98 /// It's important to track this, because we can't allow to states to overlap | 98 /// It's important to track this, because we can't allow to states to overlap |
| 99 /// if one permits more values for some unbound rule than the other does. | 99 /// if one permits more values for some unbound rule than the other does. |
| 100 Map<Rule, List<int>> _unboundConstraints; | 100 Map<Rule, Set<int>> _unboundConstraints; |
| 101 | 101 |
| 102 /// The bound rules that appear inside lines also containing unbound rules. | 102 /// The bound rules that appear inside lines also containing unbound rules. |
| 103 /// | 103 /// |
| 104 /// By appearing in the same line, it means these bound rules may affect the | 104 /// By appearing in the same line, it means these bound rules may affect the |
| 105 /// results of binding those unbound rules. This is used to tell if two | 105 /// results of binding those unbound rules. This is used to tell if two |
| 106 /// states may diverge by binding unbound rules or not. | 106 /// states may diverge by binding unbound rules or not. |
| 107 Set<Rule> _boundRulesInUnboundLines; | 107 Set<Rule> _boundRulesInUnboundLines; |
| 108 | 108 |
| 109 SolveState(this._splitter, this._ruleValues) { | 109 SolveState(this._splitter, this._ruleValues) { |
| 110 _calculateSplits(); | 110 _calculateSplits(); |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 | 585 |
| 586 buffer.write(" \$${splits.cost}"); | 586 buffer.write(" \$${splits.cost}"); |
| 587 | 587 |
| 588 if (overflowChars > 0) buffer.write(" (${overflowChars} over)"); | 588 if (overflowChars > 0) buffer.write(" (${overflowChars} over)"); |
| 589 if (!_isComplete) buffer.write(" (incomplete)"); | 589 if (!_isComplete) buffer.write(" (incomplete)"); |
| 590 if (splits == null) buffer.write(" invalid"); | 590 if (splits == null) buffer.write(" invalid"); |
| 591 | 591 |
| 592 return buffer.toString(); | 592 return buffer.toString(); |
| 593 } | 593 } |
| 594 } | 594 } |
| OLD | NEW |