Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: pkg/analysis_server/lib/src/status/get_handler.dart

Issue 1392173002: Show UsedLocalElements and parts ASTs on the status pages. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/status/get_handler.dart
diff --git a/pkg/analysis_server/lib/src/status/get_handler.dart b/pkg/analysis_server/lib/src/status/get_handler.dart
index 49727f3588255ab747e0861b3f0fb60ddb8da65f..fd245b42846758f5f50d4d0acc67579a7d9f0d85 100644
--- a/pkg/analysis_server/lib/src/status/get_handler.dart
+++ b/pkg/analysis_server/lib/src/status/get_handler.dart
@@ -30,6 +30,7 @@ import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/engine.dart'
hide AnalysisCache, AnalysisContextImpl, AnalysisTask;
import 'package:analyzer/src/generated/java_engine.dart';
+import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
@@ -578,22 +579,27 @@ class GetHandler {
buffer.write('<p>Not found.</p>');
return;
}
- CacheEntry entry = context.analysisCache.get(source);
- if (entry == null) {
- buffer.write('<p>Not found.</p>');
- return;
- }
- CompilationUnit ast = _getAnyAst(entry);
- if (ast == null) {
- buffer.write('<p>null</p>');
- return;
- }
- AstWriter writer = new AstWriter(buffer);
- ast.accept(writer);
- if (writer.exceptions.isNotEmpty) {
- buffer.write('<h3>Exceptions while creating page</h3>');
- for (CaughtException exception in writer.exceptions) {
- _writeException(buffer, exception);
+ List<Source> libraries = context.getLibrariesContaining(source);
+ for (Source library in libraries) {
+ AnalysisTarget target = new LibrarySpecificUnit(library, source);
+ CacheEntry entry = context.analysisCache.get(target);
+ buffer.write('<b>$target</b><br>');
+ if (entry == null) {
+ buffer.write('<p>Not found.</p>');
+ return;
Brian Wilkerson 2015/10/08 04:12:31 I think we want to "continue" rather than "return"
+ }
+ CompilationUnit ast = _getAnyAst(entry);
+ if (ast == null) {
+ buffer.write('<p>null</p>');
+ return;
+ }
+ AstWriter writer = new AstWriter(buffer);
+ ast.accept(writer);
+ if (writer.exceptions.isNotEmpty) {
+ buffer.write('<h3>Exceptions while creating page</h3>');
+ for (CaughtException exception in writer.exceptions) {
+ _writeException(buffer, exception);
+ }
}
}
});
@@ -1831,6 +1837,53 @@ class GetHandler {
String link =
makeLink(ELEMENT_PATH, linkParameters, value.runtimeType.toString());
buffer.write('<i>$link</i>');
+ } else if (value is UsedLocalElements) {
+ buffer.write('<ul>');
+ {
+ HashSet<Element> elements = value.elements;
Brian Wilkerson 2015/10/08 04:12:31 Is it worth sorting the list?
+ buffer.write('List "elements" containing ${elements.length} entries');
+ buffer.write('<ul>');
+ for (Element element in elements) {
+ buffer.write('<li>');
+ buffer.write('<i>${element.runtimeType}</i> $element');
+ buffer.write('</li>');
+ }
+ buffer.write('</ul>');
+ }
+ {
+ List<String> members = value.members.toList();
+ members.sort((String a, String b) {
+ a = a.toLowerCase();
+ b = b.toLowerCase();
+ return a.compareTo(b);
+ });
+ buffer.write('List "members" containing ${members.length} entries');
+ buffer.write('<ul>');
+ for (String member in members) {
+ buffer.write('<li>');
+ buffer.write(member);
+ buffer.write('</li>');
+ }
+ buffer.write('</ul>');
+ }
+ {
+ List<String> readMembers = value.readMembers.toList();
Brian Wilkerson 2015/10/08 04:12:31 Duplicated code. Consider creating a method to wri
+ readMembers.sort((String a, String b) {
+ a = a.toLowerCase();
Brian Wilkerson 2015/10/08 04:12:31 Unless the "toLowerCase" is important, you could j
+ b = b.toLowerCase();
+ return a.compareTo(b);
+ });
+ buffer.write(
+ 'List "readMembers" containing ${readMembers.length} entries');
+ buffer.write('<ul>');
+ for (String readMember in readMembers) {
+ buffer.write('<li>');
+ buffer.write(readMember);
+ buffer.write('</li>');
+ }
+ buffer.write('</ul>');
+ }
+ buffer.write('</ul>');
} else {
buffer.write(HTML_ESCAPE.convert(value.toString()));
buffer.write(' <i>(${value.runtimeType.toString()})</i>');
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698