| Index: pkg/analyzer/lib/context/context_root.dart
|
| diff --git a/pkg/analyzer/lib/context/context_root.dart b/pkg/analyzer/lib/context/context_root.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f871ab1c0a8993bd93aa8895d26917d86bddc601
|
| --- /dev/null
|
| +++ b/pkg/analyzer/lib/context/context_root.dart
|
| @@ -0,0 +1,68 @@
|
| +// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import 'package:analyzer/src/generated/utilities_general.dart';
|
| +
|
| +/**
|
| + * Information about the root directory associated with an analysis context.
|
| + *
|
| + * Clients may not extend, implement or mix-in this class.
|
| + */
|
| +class ContextRoot {
|
| + /**
|
| + * The absolute path of the root directory containing the files to be
|
| + * analyzed.
|
| + */
|
| + final String root;
|
| +
|
| + /**
|
| + * A list of the absolute paths of files and directories within the root
|
| + * directory that should not be analyzed.
|
| + */
|
| + final List<String> exclude;
|
| +
|
| + /**
|
| + * Initialize a newly created context root.
|
| + */
|
| + ContextRoot(this.root, this.exclude);
|
| +
|
| + @override
|
| + int get hashCode {
|
| + int hash = 0;
|
| + hash = JenkinsSmiHash.combine(hash, root.hashCode);
|
| + hash = JenkinsSmiHash.combine(hash, exclude.hashCode);
|
| + return JenkinsSmiHash.finish(hash);
|
| + }
|
| +
|
| + @override
|
| + bool operator ==(other) {
|
| + if (other is ContextRoot) {
|
| + return root == other.root &&
|
| + _listEqual(exclude, other.exclude, (String a, String b) => a == b);
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + /**
|
| + * Compare the lists [listA] and [listB], using [itemEqual] to compare
|
| + * list elements.
|
| + */
|
| + bool _listEqual(List listA, List listB, bool itemEqual(a, b)) {
|
| + if (listA == null) {
|
| + return listB == null;
|
| + }
|
| + if (listB == null) {
|
| + return false;
|
| + }
|
| + if (listA.length != listB.length) {
|
| + return false;
|
| + }
|
| + for (int i = 0; i < listA.length; i++) {
|
| + if (!itemEqual(listA[i], listB[i])) {
|
| + return false;
|
| + }
|
| + }
|
| + return true;
|
| + }
|
| +}
|
|
|