| Index: pkg/matcher/lib/mirror_matchers.dart
 | 
| diff --git a/pkg/matcher/lib/mirror_matchers.dart b/pkg/matcher/lib/mirror_matchers.dart
 | 
| deleted file mode 100644
 | 
| index f397128fc2b74c3cfc97e39c75a7082800ec51cb..0000000000000000000000000000000000000000
 | 
| --- a/pkg/matcher/lib/mirror_matchers.dart
 | 
| +++ /dev/null
 | 
| @@ -1,76 +0,0 @@
 | 
| -// Copyright (c) 2014, 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.
 | 
| -
 | 
| -/// The mirror matchers library provides some additional matchers that
 | 
| -/// make use of `dart:mirrors`.
 | 
| -library matcher.mirror_matchers;
 | 
| -
 | 
| -import 'dart:mirrors';
 | 
| -
 | 
| -import 'matcher.dart';
 | 
| -
 | 
| -/// Returns a matcher that checks if a class instance has a property
 | 
| -/// with name [name], and optionally, if that property in turn satisfies
 | 
| -/// a [matcher].
 | 
| -Matcher hasProperty(String name, [matcher]) =>
 | 
| -  new _HasProperty(name, matcher == null ? null : wrapMatcher(matcher));
 | 
| -
 | 
| -class _HasProperty extends Matcher {
 | 
| -  final String _name;
 | 
| -  final Matcher _matcher;
 | 
| -
 | 
| -  const _HasProperty(this._name, [this._matcher]);
 | 
| -
 | 
| -  bool matches(item, Map matchState) {
 | 
| -    var mirror = reflect(item);
 | 
| -    var classMirror = mirror.type;
 | 
| -    var symbol = new Symbol(_name);
 | 
| -    var candidate = classMirror.declarations[symbol];
 | 
| -    if (candidate == null) {
 | 
| -      addStateInfo(matchState, {'reason': 'has no property named "$_name"'});
 | 
| -      return false;
 | 
| -    }
 | 
| -    bool isInstanceField = candidate is VariableMirror && !candidate.isStatic;
 | 
| -    bool isInstanceGetter =
 | 
| -        candidate is MethodMirror && candidate.isGetter && !candidate.isStatic;
 | 
| -    if (!(isInstanceField || isInstanceGetter)) {
 | 
| -      addStateInfo(matchState, {'reason':
 | 
| -          'has a member named "$_name", but it is not an instance property'});
 | 
| -      return false;
 | 
| -    }
 | 
| -    if (_matcher == null) return true;
 | 
| -    var result = mirror.getField(symbol);
 | 
| -    var resultMatches = _matcher.matches(result.reflectee, matchState);
 | 
| -    if (!resultMatches) {
 | 
| -      addStateInfo(matchState, {'value': result.reflectee});
 | 
| -    }
 | 
| -    return resultMatches;
 | 
| -  }
 | 
| -
 | 
| -  Description describe(Description description) {
 | 
| -    description.add('has property "$_name"');
 | 
| -    if (_matcher != null) {
 | 
| -      description.add(' which matches ').addDescriptionOf(_matcher);
 | 
| -    }
 | 
| -    return description;
 | 
| -  }
 | 
| -
 | 
| -  Description describeMismatch(item, Description mismatchDescription,
 | 
| -                               Map matchState, bool verbose) {
 | 
| -    var reason = matchState == null ? null : matchState['reason'];
 | 
| -    if (reason != null) {
 | 
| -      mismatchDescription.add(reason);
 | 
| -    } else {
 | 
| -      mismatchDescription.add('has property "$_name" with value ').
 | 
| -        addDescriptionOf(matchState['value']);
 | 
| -      var innerDescription = new StringDescription();
 | 
| -      _matcher.describeMismatch(matchState['value'], innerDescription,
 | 
| -          matchState['state'], verbose);
 | 
| -      if (innerDescription.length > 0) {
 | 
| -        mismatchDescription.add(' which ').add(innerDescription.toString());
 | 
| -      }
 | 
| -    }
 | 
| -    return mismatchDescription;
 | 
| -  }
 | 
| -}
 | 
| 
 |