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

Unified Diff: pkg/analysis_server/lib/src/operation/operation_analysis.dart

Issue 1380103005: Compute Outline.kind/libraryName actually. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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
Index: pkg/analysis_server/lib/src/operation/operation_analysis.dart
diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
index 712ffbff1156a7e9445278718fa176dca4d67c4a..973b831d2393dc55b5543a93510e63b1b2ef6181 100644
--- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
+++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
@@ -77,6 +77,7 @@ void scheduleIndexOperation(AnalysisServer server, String file,
*/
void scheduleNotificationOperations(
AnalysisServer server,
+ Source source,
String file,
LineInfo lineInfo,
AnalysisContext context,
@@ -99,12 +100,10 @@ void scheduleNotificationOperations(
}
if (server.hasAnalysisSubscription(
protocol.AnalysisService.NAVIGATION, file)) {
- Source source = resolvedDartUnit.element.source;
server.scheduleOperation(new NavigationOperation(context, source));
}
if (server.hasAnalysisSubscription(
protocol.AnalysisService.OCCURRENCES, file)) {
- Source source = resolvedDartUnit.element.source;
server.scheduleOperation(new OccurrencesOperation(context, source));
}
if (server.hasAnalysisSubscription(
@@ -116,8 +115,9 @@ void scheduleNotificationOperations(
if (dartUnit != null) {
if (server.hasAnalysisSubscription(
protocol.AnalysisService.OUTLINE, file)) {
- server.scheduleOperation(
- new _DartOutlineOperation(context, file, lineInfo, dartUnit));
+ SourceKind sourceKind = context.getKindOf(source);
+ server.scheduleOperation(new _DartOutlineOperation(
+ context, file, lineInfo, sourceKind, dartUnit));
}
}
// errors
@@ -213,12 +213,23 @@ void sendAnalysisNotificationOccurrences(
}
void sendAnalysisNotificationOutline(AnalysisServer server, String file,
- LineInfo lineInfo, CompilationUnit dartUnit) {
+ LineInfo lineInfo, SourceKind sourceKind, CompilationUnit dartUnit) {
_sendNotification(server, () {
+ // compute FileKind
+ protocol.FileKind fileKind = protocol.FileKind.LIBRARY;
+ if (sourceKind == SourceKind.LIBRARY) {
+ fileKind = protocol.FileKind.LIBRARY;
+ } else if (sourceKind == SourceKind.PART) {
+ fileKind = protocol.FileKind.PART;
+ }
+ // compute library name
+ String libraryName = _computeLibraryName(dartUnit);
+ // compute Outline
var computer = new DartUnitOutlineComputer(file, lineInfo, dartUnit);
- var outline = computer.compute();
- var params = new protocol.AnalysisOutlineParams(
- file, protocol.FileKind.LIBRARY, outline);
+ protocol.Outline outline = computer.compute();
+ // send notification
+ var params = new protocol.AnalysisOutlineParams(file, fileKind, outline,
+ libraryName: libraryName);
server.sendNotification(params.toNotification());
});
}
@@ -242,6 +253,20 @@ void setCacheSize(AnalysisContext context, int cacheSize) {
context.analysisOptions = options;
}
+String _computeLibraryName(CompilationUnit unit) {
+ for (Directive directive in unit.directives) {
+ if (directive is LibraryDirective && directive.name != null) {
+ return directive.name.name;
+ }
+ }
+ for (Directive directive in unit.directives) {
+ if (directive is PartOfDirective && directive.libraryName != null) {
+ return directive.libraryName.name;
+ }
+ }
+ return null;
+}
+
/**
* Runs the given notification producing function [f], catching exceptions.
*/
@@ -372,8 +397,8 @@ class PerformAnalysisOperation extends ServerOperation {
// Dart
CompilationUnit parsedDartUnit = notice.parsedDartUnit;
CompilationUnit resolvedDartUnit = notice.resolvedDartUnit;
- scheduleNotificationOperations(server, file, notice.lineInfo, context,
- parsedDartUnit, resolvedDartUnit, notice.errors);
+ scheduleNotificationOperations(server, source, file, notice.lineInfo,
+ context, parsedDartUnit, resolvedDartUnit, notice.errors);
// done
server.fileAnalyzed(notice);
}
@@ -456,14 +481,15 @@ abstract class _DartNotificationOperation extends _SingleFileOperation {
class _DartOutlineOperation extends _DartNotificationOperation {
final LineInfo lineInfo;
+ final SourceKind sourceKind;
- _DartOutlineOperation(
- AnalysisContext context, String file, this.lineInfo, CompilationUnit unit)
+ _DartOutlineOperation(AnalysisContext context, String file, this.lineInfo,
+ this.sourceKind, CompilationUnit unit)
: super(context, file, unit);
@override
void perform(AnalysisServer server) {
- sendAnalysisNotificationOutline(server, file, lineInfo, unit);
+ sendAnalysisNotificationOutline(server, file, lineInfo, sourceKind, unit);
}
}

Powered by Google App Engine
This is Rietveld 408576698