in lib/mirror_matchers.dart [27:54]
bool matches(Object? item, Map matchState) {
var mirror = reflect(item);
var classMirror = mirror.type;
var symbol = Symbol(_name);
var candidate = classMirror.declarations[symbol];
if (candidate == null) {
addStateInfo(matchState, {'reason': 'has no property named "$_name"'});
return false;
}
var isInstanceField = candidate is VariableMirror && !candidate.isStatic;
var 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;
}
var matcher = _matcher;
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;
}