| Index: lib/src/debug.dart
|
| diff --git a/lib/src/debug.dart b/lib/src/debug.dart
|
| index b175f79ee120a9cf3e1905fe75149494d864151f..08c18f2b55d4d7bbff962e25e59a80231aa003b7 100644
|
| --- a/lib/src/debug.dart
|
| +++ b/lib/src/debug.dart
|
| @@ -8,8 +8,8 @@ library dart_style.src.debug;
|
| import 'dart:math' as math;
|
|
|
| import 'chunk.dart';
|
| -import 'line_prefix.dart';
|
| -import 'line_splitter.dart';
|
| +import 'rule/rule.dart';
|
| +import 'rule_set.dart';
|
|
|
| /// Set this to `true` to turn on diagnostic output while building chunks.
|
| bool traceChunkBuilder = false;
|
| @@ -84,6 +84,11 @@ void dumpChunks(int start, List<Chunk> chunks) {
|
|
|
| spans = spans.toList();
|
|
|
| + var rules = chunks
|
| + .map((chunk) => chunk.rule)
|
| + .where((rule) => rule != null && rule is! HardSplitRule)
|
| + .toSet();
|
| +
|
| var rows = [];
|
|
|
| addChunk(chunk, prefix, index) {
|
| @@ -113,8 +118,8 @@ void dumpChunks(int start, List<Chunk> chunks) {
|
| if (chunk.rule != null) {
|
| row.add(chunk.isHardSplit ? "" : chunk.rule.toString());
|
|
|
| - writeIf(chunk.rule.outerRules.isNotEmpty,
|
| - () => "-> ${chunk.rule.outerRules.join(" ")}");
|
| + var outerRules = chunk.rule.outerRules.toSet().intersection(rules);
|
| + writeIf(outerRules.isNotEmpty, () => "-> ${outerRules.join(" ")}");
|
| } else {
|
| row.add("(no rule)");
|
|
|
| @@ -171,15 +176,24 @@ void dumpChunks(int start, List<Chunk> chunks) {
|
| ///
|
| /// It will determine how best to split it into multiple lines of output and
|
| /// return a single string that may contain one or more newline characters.
|
| -void dumpLines(List<Chunk> chunks, LinePrefix prefix, SplitSet splits) {
|
| +void dumpLines(List<Chunk> chunks, int firstLineIndent, SplitSet splits) {
|
| var buffer = new StringBuffer();
|
|
|
| - // TODO(rnystrom): Handle block chunks here.
|
| -
|
| writeIndent(indent) => buffer.write(gray("| " * (indent ~/ 2)));
|
| - writeIndent(prefix.column);
|
|
|
| - for (var i = prefix.length; i < chunks.length - 1; i++) {
|
| + writeChunksUnsplit(List<Chunk> chunks) {
|
| + for (var chunk in chunks) {
|
| + buffer.write(chunk.text);
|
| + if (chunk.spaceWhenUnsplit) buffer.write(" ");
|
| +
|
| + // Recurse into the block.
|
| + writeChunksUnsplit(chunk.blockChunks);
|
| + }
|
| + }
|
| +
|
| + writeIndent(firstLineIndent);
|
| +
|
| + for (var i = 0; i < chunks.length - 1; i++) {
|
| var chunk = chunks[i];
|
| buffer.write(chunk.text);
|
|
|
| @@ -189,6 +203,8 @@ void dumpLines(List<Chunk> chunks, LinePrefix prefix, SplitSet splits) {
|
| writeIndent(splits.getColumn(i));
|
| }
|
| } else {
|
| + writeChunksUnsplit(chunk.blockChunks);
|
| +
|
| if (chunk.spaceWhenUnsplit) buffer.write(" ");
|
| }
|
| }
|
|
|