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

Side by Side Diff: pkg/analysis_server/lib/src/analysis_server.dart

Issue 1242023008: Server .packages support. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: More merging/nits. Created 5 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/context_manager.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analysis.server; 5 library analysis.server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:core' hide Resource; 9 import 'dart:core' hide Resource;
10 import 'dart:math' show max; 10 import 'dart:math' show max;
(...skipping 17 matching lines...) Expand all
28 import 'package:analyzer/source/package_map_resolver.dart'; 28 import 'package:analyzer/source/package_map_resolver.dart';
29 import 'package:analyzer/source/sdk_ext.dart'; 29 import 'package:analyzer/source/sdk_ext.dart';
30 import 'package:analyzer/src/generated/ast.dart'; 30 import 'package:analyzer/src/generated/ast.dart';
31 import 'package:analyzer/src/generated/element.dart'; 31 import 'package:analyzer/src/generated/element.dart';
32 import 'package:analyzer/src/generated/engine.dart'; 32 import 'package:analyzer/src/generated/engine.dart';
33 import 'package:analyzer/src/generated/java_engine.dart'; 33 import 'package:analyzer/src/generated/java_engine.dart';
34 import 'package:analyzer/src/generated/sdk.dart'; 34 import 'package:analyzer/src/generated/sdk.dart';
35 import 'package:analyzer/src/generated/source.dart'; 35 import 'package:analyzer/src/generated/source.dart';
36 import 'package:analyzer/src/generated/source_io.dart'; 36 import 'package:analyzer/src/generated/source_io.dart';
37 import 'package:analyzer/src/generated/utilities_general.dart'; 37 import 'package:analyzer/src/generated/utilities_general.dart';
38 import 'package:package_config/packages.dart';
38 import 'package:plugin/plugin.dart'; 39 import 'package:plugin/plugin.dart';
39 40
40 typedef void OptionUpdater(AnalysisOptionsImpl options); 41 typedef void OptionUpdater(AnalysisOptionsImpl options);
41 42
42 /** 43 /**
43 * Enum representing reasons why analysis might be done for a given file. 44 * Enum representing reasons why analysis might be done for a given file.
44 */ 45 */
45 class AnalysisDoneReason { 46 class AnalysisDoneReason {
46 /** 47 /**
47 * Analysis of the file completed successfully. 48 * Analysis of the file completed successfully.
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 new StreamController<ContextsChangedEvent>.broadcast(); 1356 new StreamController<ContextsChangedEvent>.broadcast();
1356 } 1357 }
1357 1358
1358 /** 1359 /**
1359 * The stream that is notified when contexts are added or removed. 1360 * The stream that is notified when contexts are added or removed.
1360 */ 1361 */
1361 Stream<ContextsChangedEvent> get onContextsChanged => 1362 Stream<ContextsChangedEvent> get onContextsChanged =>
1362 _onContextsChangedController.stream; 1363 _onContextsChangedController.stream;
1363 1364
1364 @override 1365 @override
1365 AnalysisContext addContext(Folder folder, UriResolver packageUriResolver) { 1366 AnalysisContext addContext(Folder folder, UriResolver packageUriResolver, Pack ages packages) {
1366 InternalAnalysisContext context = 1367 InternalAnalysisContext context =
1367 AnalysisEngine.instance.createAnalysisContext(); 1368 AnalysisEngine.instance.createAnalysisContext();
1368 context.contentCache = analysisServer.overlayState; 1369 context.contentCache = analysisServer.overlayState;
1369 analysisServer.folderMap[folder] = context; 1370 analysisServer.folderMap[folder] = context;
1370 context.sourceFactory = _createSourceFactory(packageUriResolver); 1371 context.sourceFactory = _createSourceFactory(packageUriResolver, packages);
1371 context.analysisOptions = new AnalysisOptionsImpl.from(defaultOptions); 1372 context.analysisOptions = new AnalysisOptionsImpl.from(defaultOptions);
1372 _onContextsChangedController 1373 _onContextsChangedController
1373 .add(new ContextsChangedEvent(added: [context])); 1374 .add(new ContextsChangedEvent(added: [context]));
1374 analysisServer.schedulePerformAnalysisOperation(context); 1375 analysisServer.schedulePerformAnalysisOperation(context);
1375 return context; 1376 return context;
1376 } 1377 }
1377 1378
1378 @override 1379 @override
1379 void applyChangesToContext(Folder contextFolder, ChangeSet changeSet) { 1380 void applyChangesToContext(Folder contextFolder, ChangeSet changeSet) {
1380 AnalysisContext context = analysisServer.folderMap[contextFolder]; 1381 AnalysisContext context = analysisServer.folderMap[contextFolder];
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 // links causing the analyzer to thrash, just ignore links to 1434 // links causing the analyzer to thrash, just ignore links to
1434 // non-existent files. 1435 // non-existent files.
1435 return file.exists; 1436 return file.exists;
1436 } 1437 }
1437 } 1438 }
1438 return false; 1439 return false;
1439 } 1440 }
1440 1441
1441 @override 1442 @override
1442 void updateContextPackageUriResolver( 1443 void updateContextPackageUriResolver(
1443 Folder contextFolder, UriResolver packageUriResolver) { 1444 Folder contextFolder, UriResolver packageUriResolver, Packages packages) {
1444 AnalysisContext context = analysisServer.folderMap[contextFolder]; 1445 AnalysisContext context = analysisServer.folderMap[contextFolder];
1445 context.sourceFactory = _createSourceFactory(packageUriResolver); 1446 context.sourceFactory = _createSourceFactory(packageUriResolver, packages);
1446 _onContextsChangedController 1447 _onContextsChangedController
1447 .add(new ContextsChangedEvent(changed: [context])); 1448 .add(new ContextsChangedEvent(changed: [context]));
1448 analysisServer.schedulePerformAnalysisOperation(context); 1449 analysisServer.schedulePerformAnalysisOperation(context);
1449 } 1450 }
1450 1451
1451 void _computingPackageMap(bool computing) { 1452 void _computingPackageMap(bool computing) {
1452 if (analysisServer.serverServices.contains(ServerService.STATUS)) { 1453 if (analysisServer.serverServices.contains(ServerService.STATUS)) {
1453 PubStatus pubStatus = new PubStatus(computing); 1454 PubStatus pubStatus = new PubStatus(computing);
1454 ServerStatusParams params = new ServerStatusParams(pub: pubStatus); 1455 ServerStatusParams params = new ServerStatusParams(pub: pubStatus);
1455 analysisServer.sendNotification(params.toNotification()); 1456 analysisServer.sendNotification(params.toNotification());
1456 } 1457 }
1457 } 1458 }
1458 1459
1459 /** 1460 /**
1460 * Set up a [SourceFactory] that resolves packages using the given 1461 * Set up a [SourceFactory] that resolves packages using the given
1461 * [packageUriResolver]. 1462 * [packageUriResolver] and [packages] resolution strategy.
1462 */ 1463 */
1463 SourceFactory _createSourceFactory(UriResolver packageUriResolver) { 1464 SourceFactory _createSourceFactory(UriResolver packageUriResolver, Packages pa ckages) {
1464 UriResolver dartResolver = new DartUriResolver(analysisServer.defaultSdk); 1465 UriResolver dartResolver = new DartUriResolver(analysisServer.defaultSdk);
1465 UriResolver resourceResolver = new ResourceUriResolver(resourceProvider); 1466 UriResolver resourceResolver = new ResourceUriResolver(resourceProvider);
1466 List<UriResolver> resolvers = []; 1467 List<UriResolver> resolvers = [];
1467 resolvers.add(dartResolver); 1468 resolvers.add(dartResolver);
1468 if (packageUriResolver is PackageMapUriResolver) { 1469 if (packageUriResolver is PackageMapUriResolver) {
1469 UriResolver sdkExtResolver = 1470 UriResolver sdkExtResolver =
1470 new SdkExtUriResolver(packageUriResolver.packageMap); 1471 new SdkExtUriResolver(packageUriResolver.packageMap);
1471 resolvers.add(sdkExtResolver); 1472 resolvers.add(sdkExtResolver);
1472 } 1473 }
1473 if (packageUriResolver != null) { 1474 if (packageUriResolver != null) {
1474 resolvers.add(packageUriResolver); 1475 resolvers.add(packageUriResolver);
1475 } 1476 }
1476 resolvers.add(resourceResolver); 1477 resolvers.add(resourceResolver);
1477 return new SourceFactory(resolvers); 1478 return new SourceFactory(resolvers, packages);
1478 } 1479 }
1479 } 1480 }
1480 1481
1481 /** 1482 /**
1482 * A class used by [AnalysisServer] to record performance information 1483 * A class used by [AnalysisServer] to record performance information
1483 * such as request latency. 1484 * such as request latency.
1484 */ 1485 */
1485 class ServerPerformance { 1486 class ServerPerformance {
1486 1487
1487 /** 1488 /**
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 /** 1574 /**
1574 * The [PerformanceTag] for time spent in server request handlers. 1575 * The [PerformanceTag] for time spent in server request handlers.
1575 */ 1576 */
1576 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); 1577 static PerformanceTag serverRequests = new PerformanceTag('serverRequests');
1577 1578
1578 /** 1579 /**
1579 * The [PerformanceTag] for time spent in split store microtasks. 1580 * The [PerformanceTag] for time spent in split store microtasks.
1580 */ 1581 */
1581 static PerformanceTag splitStore = new PerformanceTag('splitStore'); 1582 static PerformanceTag splitStore = new PerformanceTag('splitStore');
1582 } 1583 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/context_manager.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698