CQ. Put TreeStringSink into analyzer_utilities/ to reuse.

Change-Id: I7a1a3e6bc42830b842060fd778a6265ed614f9f5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/378080
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov
2024-07-30 20:32:24 +00:00
parent c18b84d6d2
commit 57392e8324
19 changed files with 17 additions and 103 deletions
@@ -14,6 +14,7 @@ import 'package:analyzer/src/util/file_paths.dart' as file_paths;
import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -21,7 +22,6 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'analysis_server_base.dart';
import 'mocks.dart';
import 'services/completion/dart/text_expectations.dart';
import 'utils/tree_string_sink.dart';
void main() {
defineReflectiveSuite(() {
@@ -13,6 +13,7 @@ import 'package:analysis_server/src/protocol_server.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_plugin/src/utilities/client_uri_converter.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
@@ -21,7 +22,6 @@ import '../analysis_server_base.dart';
import '../lsp/change_verifier.dart';
import '../lsp/request_helpers_mixin.dart';
import '../services/completion/dart/text_expectations.dart';
import '../utils/tree_string_sink.dart';
class EventsCollector {
final ContextResolutionTest test;
@@ -19,11 +19,11 @@ import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer/src/workspace/basic.dart';
import 'package:analyzer/src/workspace/pub.dart';
import 'package:analyzer/src/workspace/workspace.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:linter/src/rules.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../util/tree_string_sink.dart';
import '../resolution/context_collection_resolution.dart';
import '../resolution/node_text_expectations.dart';
@@ -14,12 +14,12 @@ import 'package:analyzer/src/dart/analysis/status.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/utilities/extensions/async.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:linter/src/rules.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
import '../resolution/context_collection_resolution.dart';
import '../resolution/node_text_expectations.dart';
import '../resolution/resolution.dart';
@@ -12,10 +12,10 @@ import 'package:analyzer/src/dart/analysis/results.dart';
import 'package:analyzer/src/dart/analysis/status.dart';
import 'package:analyzer/src/summary/idl.dart';
import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
import '../../summary/resolved_ast_printer.dart';
sealed class DriverEvent {}
@@ -9,10 +9,10 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../util/tree_string_sink.dart';
import '../resolution/context_collection_resolution.dart';
import '../resolution/node_text_expectations.dart';
@@ -8,12 +8,12 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
import '../../summary/elements_base.dart';
import '../resolution/context_collection_resolution.dart';
import '../resolution/node_text_expectations.dart';
@@ -4,10 +4,10 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/constant/value.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
/// Prints [DartObjectImpl] as a tree, with values and fields.
class DartObjectPrinter {
@@ -7,13 +7,13 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
import 'context_collection_resolution.dart';
import 'node_text_expectations.dart';
@@ -21,11 +21,11 @@ import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/test_utilities/find_element.dart';
import 'package:analyzer/src/test_utilities/find_node.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import '../../../generated/test_support.dart';
import '../../../util/element_printer.dart';
import '../../../util/tree_string_sink.dart';
import '../../summary/macros_environment.dart';
import '../../summary/resolved_ast_printer.dart';
import '../analysis/result_printer.dart';
@@ -7,12 +7,12 @@ import 'package:analyzer/dart/analysis/utilities.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/src/test_utilities/find_node.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import '../../generated/test_support.dart';
import '../../util/element_printer.dart';
import '../../util/feature_sets.dart';
import '../../util/tree_string_sink.dart';
import '../dart/resolution/node_text_expectations.dart';
import '../summary/resolved_ast_printer.dart';
@@ -11,11 +11,11 @@ import 'package:analyzer/src/summary2/export.dart';
import 'package:analyzer/src/summary2/macro_application_error.dart';
import 'package:analyzer/src/summary2/macro_type_location.dart';
import 'package:analyzer/src/task/inference_error.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:test/test.dart';
import '../../util/element_printer.dart';
import '../../util/tree_string_sink.dart';
import 'resolved_ast_printer.dart';
String getLibraryText({
@@ -16,6 +16,7 @@ import 'package:analyzer/src/summary2/macro.dart';
import 'package:analyzer/src/summary2/macro_application.dart';
import 'package:analyzer/src/summary2/macro_application_error.dart';
import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:macros/src/bootstrap.dart' as macro;
import 'package:macros/src/executor/serialization.dart' as macro;
@@ -23,7 +24,6 @@ import 'package:path/path.dart' as package_path;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../util/tree_string_sink.dart';
import '../dart/resolution/context_collection_resolution.dart';
import '../dart/resolution/node_text_expectations.dart';
import 'element_text.dart';
@@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../util/tree_string_sink.dart';
import '../dart/resolution/node_text_expectations.dart';
main() {
@@ -11,10 +11,10 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
import 'package:analyzer/src/utilities/extensions/string.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import '../../util/element_printer.dart';
import '../../util/tree_string_sink.dart';
/// Prints AST as a tree, with properties and children.
class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
+1 -2
View File
@@ -9,10 +9,9 @@ import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:test/test.dart';
import 'tree_string_sink.dart';
class ElementPrinter {
final TreeStringSink _sink;
final ElementPrinterConfiguration _configuration;
@@ -1,84 +0,0 @@
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/// Wrapper around a [StringSink] for writing tree structures.
class TreeStringSink {
final StringSink _sink;
String _indent = '';
TreeStringSink({
required StringSink sink,
required String indent,
}) : _sink = sink,
_indent = indent;
void withIndent(void Function() f) {
var indent = _indent;
_indent = '$indent ';
f();
_indent = indent;
}
void write(Object object) {
_sink.write(object);
}
void writeElements<T extends Object>(
String name,
List<T> elements,
void Function(T) f,
) {
if (elements.isNotEmpty) {
writelnWithIndent(name);
withIndent(() {
for (var element in elements) {
f(element);
}
});
}
}
Future<void> writeFlags(Map<String, bool> flags) async {
if (flags.values.any((flag) => flag)) {
writeIndentedLine(() {
write('flags:');
for (var entry in flags.entries) {
if (entry.value) {
write(' ${entry.key}');
}
}
});
}
}
void writeIf(bool flag, Object object) {
if (flag) {
write(object);
}
}
void writeIndent() {
_sink.write(_indent);
}
void writeIndentedLine(void Function() f) {
writeIndent();
f();
writeln();
}
void writeln([Object? object = '']) {
_sink.writeln(object);
}
void writelnWithIndent(Object object) {
_sink.write(_indent);
_sink.writeln(object);
}
void writeWithIndent(Object object) {
_sink.write(_indent);
_sink.write(object);
}
}
+1 -2
View File
@@ -4,10 +4,9 @@
import 'package:analyzer/src/manifest/manifest_validator.dart';
import 'package:analyzer/src/utilities/extensions/object.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import '../../../test/util/tree_string_sink.dart';
String formatSizeInBytes(int value) {
var buffer = StringBuffer();
buffer.write('$value');