| 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 3b5f5658909b739029f147481a6f5934640bc94e..6c790aa9936c79900140916de54320f02976e384 100644
|
| --- a/pkg/analysis_server/lib/src/analysis_server.dart
|
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart
|
| @@ -393,6 +393,25 @@ class AnalysisServer {
|
| }
|
|
|
| /**
|
| + * Return the [AnalysisContext] that contains the given [path].
|
| + * Return `null` if no context contains the [path].
|
| + */
|
| + AnalysisContext getContainingContext(String path) {
|
| + Folder containingFolder = null;
|
| + AnalysisContext containingContext = null;
|
| + folderMap.forEach((Folder folder, AnalysisContext context) {
|
| + if (folder.isOrContains(path)) {
|
| + if (containingFolder == null ||
|
| + containingFolder.path.length < folder.path.length) {
|
| + containingFolder = folder;
|
| + containingContext = context;
|
| + }
|
| + }
|
| + });
|
| + return containingContext;
|
| + }
|
| +
|
| + /**
|
| * Return the primary [ContextSourcePair] representing the given [path].
|
| *
|
| * The [AnalysisContext] of this pair will be the context that explicitly
|
| @@ -420,17 +439,7 @@ class AnalysisServer {
|
| Resource resource = resourceProvider.getResource(path);
|
| File file = resource is File ? resource : null;
|
| {
|
| - Folder containingFolder = null;
|
| - AnalysisContext containingContext = null;
|
| - folderMap.forEach((Folder folder, AnalysisContext context) {
|
| - if (folder.isOrContains(path)) {
|
| - if (containingFolder == null ||
|
| - containingFolder.path.length < folder.path.length) {
|
| - containingFolder = folder;
|
| - containingContext = context;
|
| - }
|
| - }
|
| - });
|
| + AnalysisContext containingContext = getContainingContext(path);
|
| if (containingContext != null) {
|
| Source source = file != null
|
| ? ContextManager.createSourceInContext(containingContext, file)
|
|
|