| Index: pkg/unittest/lib/mirror_matchers.dart
|
| diff --git a/pkg/unittest/lib/mirror_matchers.dart b/pkg/unittest/lib/mirror_matchers.dart
|
| index 7d1597f2ac27f59c752109141a93a6a58ce6c51c..25f2b6d69206d80b4b77bedadd1901eafd634b09 100644
|
| --- a/pkg/unittest/lib/mirror_matchers.dart
|
| +++ b/pkg/unittest/lib/mirror_matchers.dart
|
| @@ -49,10 +49,19 @@ class _HasProperty extends Matcher {
|
| var mirror = reflect(item);
|
| var classMirror = mirror.type;
|
| var symbol = new Symbol(_name);
|
| - if (!classMirror.getters.containsKey(symbol)) {
|
| + 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);
|
|
|