[ddc] Print AST of compiled libraries with summarize-text flag.
Moves dart2js DebugPrinter and Indentation to pkg/kernel/lib/text
and produces the AST of compiled libraries when ddc is run using
the --summarize-text flag.
Change-Id: I195ff99a0929ac12791b4f7b6c5e755b19065c23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208460
Commit-Queue: Riley Porter <rileyporter@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/compiler/lib/src/helpers/helpers.dart b/pkg/compiler/lib/src/helpers/helpers.dart
index a59366a..9828b7f 100644
--- a/pkg/compiler/lib/src/helpers/helpers.dart
+++ b/pkg/compiler/lib/src/helpers/helpers.dart
@@ -7,9 +7,10 @@
library dart2js.helpers;
+import 'package:kernel/text/indentation.dart' show Indentation;
+
import '../common.dart';
import '../diagnostics/invariant.dart' show DEBUG_MODE;
-import '../util/util.dart';
export 'debug_collection.dart';
export 'expensive_map.dart';
@@ -89,6 +90,7 @@
/// Implementation of [reportHere]
_reportHere(DiagnosticReporter reporter, Spannable node, String debugMessage) {
+ // ignore: deprecated_member_use_from_same_package
reporter.reportInfoMessage(
node, MessageKind.GENERIC, {'text': 'HERE: $debugMessage'});
}
diff --git a/pkg/compiler/lib/src/helpers/stats.dart b/pkg/compiler/lib/src/helpers/stats.dart
index e524b54..7ca7960 100644
--- a/pkg/compiler/lib/src/helpers/stats.dart
+++ b/pkg/compiler/lib/src/helpers/stats.dart
@@ -6,6 +6,8 @@
import 'dart:collection';
import 'dart:convert';
+import 'package:kernel/text/indentation.dart' show Indentation;
+
import '../../compiler.dart';
import '../common.dart';
import '../compiler.dart' show Compiler;
diff --git a/pkg/compiler/lib/src/js/js_debug.dart b/pkg/compiler/lib/src/js/js_debug.dart
index 9eaca9f..f37ce23 100644
--- a/pkg/compiler/lib/src/js/js_debug.dart
+++ b/pkg/compiler/lib/src/js/js_debug.dart
@@ -7,9 +7,9 @@
library js.debug;
import 'package:js_ast/js_ast.dart';
+import 'package:kernel/text/indentation.dart' show Indentation, Tagging;
import '../io/code_output.dart' show BufferedCodeOutput;
-import '../util/util.dart' show Indentation, Tagging;
/// Unparse the JavaScript [node].
String nodeToString(Node node, {bool pretty: false}) {
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 33024bc..21e29f3 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -9,7 +9,7 @@
import 'package:kernel/class_hierarchy.dart' as ir;
import 'package:kernel/core_types.dart' as ir;
import 'package:kernel/src/bounds_checks.dart' as ir;
-
+import 'package:kernel/text/debug_printer.dart';
import 'package:kernel/type_environment.dart' as ir;
import '../closure.dart' show BoxLocal, ThisLocal;
@@ -27,7 +27,6 @@
import '../ir/cached_static_type.dart';
import '../ir/closure.dart';
import '../ir/constants.dart';
-import '../ir/debug.dart';
import '../ir/element_map.dart';
import '../ir/types.dart';
import '../ir/visitors.dart';
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index d568cea..7bf5db7 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -11,6 +11,7 @@
import 'package:kernel/class_hierarchy.dart' as ir;
import 'package:kernel/core_types.dart' as ir;
import 'package:kernel/src/bounds_checks.dart' as ir;
+import 'package:kernel/text/debug_printer.dart';
import 'package:kernel/type_environment.dart' as ir;
import '../common.dart';
@@ -26,7 +27,6 @@
import '../frontend_strategy.dart';
import '../ir/annotations.dart';
import '../ir/constants.dart';
-import '../ir/debug.dart';
import '../ir/element_map.dart';
import '../ir/impact.dart';
import '../ir/impact_data.dart';
diff --git a/pkg/compiler/lib/src/tracer.dart b/pkg/compiler/lib/src/tracer.dart
index a02c499..c2c5c5f 100644
--- a/pkg/compiler/lib/src/tracer.dart
+++ b/pkg/compiler/lib/src/tracer.dart
@@ -4,11 +4,12 @@
library tracer;
+import 'package:kernel/text/indentation.dart' show Indentation;
+
import '../compiler_new.dart' as api;
import 'options.dart' show CompilerOptions;
import 'ssa/nodes.dart' as ssa show HGraph;
import 'ssa/ssa_tracer.dart' show HTracer;
-import 'util/util.dart' show Indentation;
import 'world.dart' show JClosedWorld;
String TRACE_FILTER_PATTERN_FOR_TEST;
diff --git a/pkg/compiler/lib/src/util/util.dart b/pkg/compiler/lib/src/util/util.dart
index 703bf10..6a7894f 100644
--- a/pkg/compiler/lib/src/util/util.dart
+++ b/pkg/compiler/lib/src/util/util.dart
@@ -7,13 +7,11 @@
library dart2js.util;
import 'package:front_end/src/api_unstable/dart2js.dart'
- show $BACKSLASH, $CR, $DEL, $DQ, $LF, $LS, $PS, $TAB, Link;
+ show $BACKSLASH, $CR, $DEL, $DQ, $LF, $LS, $PS, $TAB;
export 'maplet.dart';
export 'setlet.dart';
-part 'indentation.dart';
-
/// Helper functions for creating hash codes.
class Hashing {
/// If an integer is masked by this constant, the result is guaranteed to be
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index 2de20df3..408d757 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -18,6 +18,7 @@
import 'package:kernel/kernel.dart';
import 'package:kernel/target/targets.dart';
import 'package:kernel/text/ast_to_text.dart' as kernel show Printer;
+import 'package:kernel/text/debug_printer.dart';
import 'package:path/path.dart' as p;
import 'package:source_maps/source_maps.dart' show SourceMapBuilder;
@@ -88,7 +89,7 @@
..addOption('packages', help: 'The package spec file to use.')
// TODO(jmesserly): is this still useful for us, or can we remove it now?
..addFlag('summarize-text',
- help: 'Emit API summary in a .js.txt file.',
+ help: 'Emit API summary and AST in .js.txt and .ast.xml files.',
defaultsTo: false,
hide: true)
..addFlag('track-widget-creation',
@@ -413,6 +414,8 @@
var sb = StringBuffer();
kernel.Printer(sb).writeComponentFile(component);
outFiles.add(File(outPaths.first + '.txt').writeAsString(sb.toString()));
+ outFiles.add(File(outPaths.first.split('.')[0] + '.ast.xml')
+ .writeAsString(DebugPrinter.prettyPrint(compiledLibraries)));
}
final importToSummary = Map<Library, Component>.identity();
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index b0e58b2..6a43fbe 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -299,6 +299,7 @@
deepest
deeply
def
+defaulting
degrades
degree
del
@@ -821,6 +822,7 @@
ogham
oked
op
+opens
opt
optimizations
opting
@@ -1037,6 +1039,7 @@
residue
resource
respond
+restoring
restriction
resumed
ret
@@ -1211,6 +1214,7 @@
t
tagged
tagger
+tagging
tags
tailor
taking
diff --git a/pkg/compiler/lib/src/ir/debug.dart b/pkg/kernel/lib/text/debug_printer.dart
similarity index 93%
rename from pkg/compiler/lib/src/ir/debug.dart
rename to pkg/kernel/lib/text/debug_printer.dart
index 3b9e11a..fa700c1 100644
--- a/pkg/compiler/lib/src/ir/debug.dart
+++ b/pkg/kernel/lib/text/debug_printer.dart
@@ -8,14 +8,14 @@
import 'package:kernel/ast.dart';
-import '../util/util.dart' show Indentation, Tagging;
+import 'indentation.dart' show Indentation, Tagging;
class DebugPrinter extends Visitor<void>
with Indentation, Tagging<Node>, VisitorVoidMixin {
@override
StringBuffer sb = new StringBuffer();
- void visitNodeWithChildren(Node node, String type, [Map params]) {
+ void visitNodeWithChildren(Node node, String type, [Map? params]) {
openNode(node, type, params);
node.visitChildren(this);
closeNode();
@@ -102,7 +102,7 @@
/// Pretty-prints given node tree into string.
static String prettyPrint(Node node) {
- var p = new DebugPrinter();
+ DebugPrinter p = new DebugPrinter();
node.accept(p);
return p.sb.toString();
}
diff --git a/pkg/compiler/lib/src/util/indentation.dart b/pkg/kernel/lib/text/indentation.dart
similarity index 95%
rename from pkg/compiler/lib/src/util/indentation.dart
rename to pkg/kernel/lib/text/indentation.dart
index d792f2f..0b7f8ee 100644
--- a/pkg/compiler/lib/src/util/indentation.dart
+++ b/pkg/kernel/lib/text/indentation.dart
@@ -2,9 +2,7 @@
// 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.
-// @dart=2.12
-
-part of dart2js.util;
+import 'package:_fe_analyzer_shared/src/util/link.dart' show Link;
/// Indentation utility class. Should be used as a mixin in most cases.
class Indentation {
@@ -48,7 +46,7 @@
/// upon return of [f] and returning its result.
indentBlock(Function f) {
indentMore();
- var result = f();
+ dynamic result = f();
indentLess();
return result;
}
@@ -135,5 +133,5 @@
}
/// Converts a parameter value into a string.
- String valueToString(var value) => value;
+ String valueToString(dynamic value) => value;
}
diff --git a/pkg/kernel/pubspec.yaml b/pkg/kernel/pubspec.yaml
index 72c0820..c8300b2 100644
--- a/pkg/kernel/pubspec.yaml
+++ b/pkg/kernel/pubspec.yaml
@@ -8,6 +8,8 @@
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
+ _fe_analyzer_shared:
+ path: ../_fe_analyzer_shared
dev_dependencies:
args: '>=0.13.4 <2.0.0'
expect:
diff --git a/pkg/compiler/test/model/indentation_test.dart b/pkg/kernel/test/indentation_test.dart
similarity index 88%
rename from pkg/compiler/test/model/indentation_test.dart
rename to pkg/kernel/test/indentation_test.dart
index 98a4f41..94bf983 100644
--- a/pkg/compiler/test/model/indentation_test.dart
+++ b/pkg/kernel/test/indentation_test.dart
@@ -2,10 +2,8 @@
// 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.
-// @dart = 2.7
-
-import "package:expect/expect.dart";
-import 'package:compiler/src/util/util.dart' show Indentation;
+import 'package:expect/expect.dart';
+import 'package:kernel/text/indentation.dart' show Indentation;
main() {
Indentation ind = new Indentation();