Closed munificent closed 2 weeks ago
How do we know the start of the previous line?
If I have:
var qux =
fooLongName() +
barLongName();
// some comment about the next line, or the state after the prior line.
baz();
the comment indentation should be that of the var qux =
line. (Right?)
If I am correct, I think it means the update_static_error_test.dart
file needs to be able to do some amount of expression and statement parsing to know where the prior statement started. It can't just put it relative to that
last line.
(Or do we just assume that tests are simple and the statement with the error is on one line? Which might very well be true.)
We have an automated tool in
pkg/test_runner/tool/update_static_error_tests.dart
that will automatically regenerate the test expectation comments in static error tests. That tool generally tries to indent the expectation comments at the same level as the previous line, like:But if the error marker is too early in the line, it will put the comment at column zero. This was safe to do because the old formatter never indented a line comment if it was at the beginning of the line. That feature is handy here, but was basically an anti-feature everywhere else, so the new formatter doesn't do that.
That means that if you update the test expectations and then format it, expectation comments may get shifted over and point at the wrong column. We should update
update_static_error_tests.dart
so that it always indents the comment with the previous line and then writes an explicit column number (which the static error test already supports) if the column needs to be before where the indented//
starts.