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

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

Issue 1152013002: Add support for specifying files needing analysis (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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 | « pkg/analysis_server/lib/plugin/index.dart ('k') | pkg/analysis_server/lib/src/context_manager.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/analysis_server.dart
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 1b7bda309c3fc698102528e7caafc18600a4f6c2..40a4458033665d465338aa16425504f37cc9fc7a 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -8,12 +8,14 @@ import 'dart:async';
import 'dart:collection';
import 'dart:math' show max;
+import 'package:analysis_server/plugin/analyzed_files.dart';
import 'package:analysis_server/src/analysis_logger.dart';
import 'package:analysis_server/src/channel/channel.dart';
import 'package:analysis_server/src/context_manager.dart';
import 'package:analysis_server/src/operation/operation.dart';
import 'package:analysis_server/src/operation/operation_analysis.dart';
import 'package:analysis_server/src/operation/operation_queue.dart';
+import 'package:analysis_server/src/plugin/server_plugin.dart';
import 'package:analysis_server/src/protocol.dart' hide Element;
import 'package:analysis_server/src/services/correction/namespace.dart';
import 'package:analysis_server/src/services/index/index.dart';
@@ -97,6 +99,11 @@ class AnalysisServer {
final SearchEngine searchEngine;
/**
+ * The plugin associated with this analysis server.
+ */
+ final ServerPlugin serverPlugin;
+
+ /**
* [ContextManager] which handles the mapping from analysis roots
* to context directories.
*/
@@ -250,8 +257,9 @@ class AnalysisServer {
*/
AnalysisServer(this.channel, this.resourceProvider,
OptimizingPubPackageMapProvider packageMapProvider, Index _index,
- AnalysisServerOptions analysisServerOptions, this.defaultSdk,
- this.instrumentationService, {this.rethrowExceptions: true})
+ this.serverPlugin, AnalysisServerOptions analysisServerOptions,
+ this.defaultSdk, this.instrumentationService,
+ {this.rethrowExceptions: true})
: index = _index,
searchEngine = _index != null ? createSearchEngine(_index) : null {
_performance = performanceDuringStartup;
@@ -281,6 +289,7 @@ class AnalysisServer {
new ServerConnectedParams(VERSION).toNotification();
channel.sendNotification(notification);
channel.listen(handleRequest, onDone: done, onError: error);
+ handlers = serverPlugin.createDomains(this);
}
/**
@@ -1374,6 +1383,24 @@ class ServerContextManager extends ContextManager {
}
@override
+ bool shouldFileBeAnalyzed(File file) {
+ List<ShouldAnalyzeFile> functions =
+ analysisServer.serverPlugin.analyzeFileFunctions;
+ for (ShouldAnalyzeFile shouldAnalyzeFile in functions) {
+ if (shouldAnalyzeFile(file)) {
+ // Emacs creates dummy links to track the fact that a file is open for
+ // editing and has unsaved changes (e.g. having unsaved changes to
+ // 'foo.dart' causes a link '.#foo.dart' to be created, which points to
+ // the non-existent file 'username@hostname.pid'. To avoid these dummy
+ // links causing the analyzer to thrash, just ignore links to
+ // non-existent files.
+ return file.exists;
+ }
+ }
+ return false;
+ }
+
+ @override
void updateContextPackageUriResolver(
Folder contextFolder, UriResolver packageUriResolver) {
AnalysisContext context = analysisServer.folderMap[contextFolder];
« no previous file with comments | « pkg/analysis_server/lib/plugin/index.dart ('k') | pkg/analysis_server/lib/src/context_manager.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698