Chromium Code Reviews| Index: pkg/analysis_server/lib/src/context_manager.dart |
| diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart |
| index fc93e96ec3b5d302ee074d6c356ed0a982353e09..3c4b35240ea993c7a13c8f6e0f6123055877608f 100644 |
| --- a/pkg/analysis_server/lib/src/context_manager.dart |
| +++ b/pkg/analysis_server/lib/src/context_manager.dart |
| @@ -14,6 +14,7 @@ import 'package:analysis_server/uri/resolver_provider.dart'; |
| import 'package:analyzer/file_system/file_system.dart'; |
| import 'package:analyzer/instrumentation/instrumentation.dart'; |
| import 'package:analyzer/source/package_map_resolver.dart'; |
| +import 'package:analyzer/source/path_filter.dart'; |
| import 'package:analyzer/src/generated/engine.dart'; |
| import 'package:analyzer/src/generated/java_io.dart'; |
| import 'package:analyzer/src/generated/source.dart'; |
| @@ -163,6 +164,16 @@ abstract class AbstractContextManager implements ContextManager { |
| // Do nothing. |
| } |
| + // Sets the [ignorePatterns] for the context [folder]. |
| + void setIgnorePatternsForContext(Folder folder, List<String> ignorePatterns) { |
| + _ContextInfo info = _contexts[folder]; |
| + if (info == null) { |
| + return; |
| + } |
| + var pathFilter = info.pathFilter; |
| + pathFilter.setIgnorePatterns(ignorePatterns); |
| + } |
| + |
| @override |
| bool isInAnalysisRoot(String path) { |
| // check if excluded |
| @@ -318,6 +329,10 @@ abstract class AbstractContextManager implements ContextManager { |
| } |
| for (Resource child in children) { |
| String path = child.path; |
| + // Path is being ignored. |
| + if (info.ignored(path)) { |
| + return; |
|
Brian Wilkerson
2015/07/17 18:44:58
I think this should be "continue" rather than "ret
pquitslund
2015/07/17 19:01:12
+1.
Cutch
2015/07/17 19:42:32
Done.
|
| + } |
| // add files, recurse into folders |
| if (child is File) { |
| // ignore if should not be analyzed at all |
| @@ -361,7 +376,7 @@ abstract class AbstractContextManager implements ContextManager { |
| for (Resource child in children) { |
| String path = child.path; |
| // ignore excluded files or folders |
| - if (_isExcluded(path) || info.excludes(path)) { |
| + if (_isExcluded(path) || info.excludes(path) || info.ignored(path)) { |
| continue; |
| } |
| // add files, recurse into folders |
| @@ -606,6 +621,9 @@ abstract class AbstractContextManager implements ContextManager { |
| if (info.excludes(path)) { |
| return; |
| } |
| + if (info.ignored(path)) { |
| + return; |
| + } |
| // handle the change |
| switch (event.type) { |
| case ChangeType.ADD: |
| @@ -859,6 +877,9 @@ class _ContextInfo { |
| */ |
| final Folder folder; |
| + /// The [PathFilter] used to filter sources from being analyzed. |
| + final PathFilter pathFilter; |
| + |
| /** |
| * The enclosed pubspec-based contexts. |
| */ |
| @@ -910,7 +931,9 @@ class _ContextInfo { |
| */ |
| OptimizingPubPackageMapInfo packageMapInfo; |
| - _ContextInfo(this.folder, File pubspecFile, this.children, this.packageRoot) { |
| + _ContextInfo(Folder folder, File pubspecFile, this.children, this.packageRoot) |
| + : folder = folder, |
| + pathFilter = new PathFilter(folder.path, null) { |
| pubspecPath = pubspecFile.path; |
| for (_ContextInfo child in children) { |
| child.parent = this; |
| @@ -931,6 +954,9 @@ class _ContextInfo { |
| }); |
| } |
| + /// Returns `true` if [path] should be ignored. |
| + bool ignored(String path) => pathFilter.ignored(path); |
| + |
| /** |
| * Returns `true` if [resource] is excluded, as it is in one of the children. |
| */ |