public override bool IsMatch(MatchState state, Node node) { if (node.GetType() != typeof(Lookup)) { return NoMatch; } Lookup member = (Lookup)node; object lookupName; if (!state.TryGetState(_lookup, out lookupName) || member.Name != (string)lookupName) { return NoMatch; } return true; }
public override bool IsMatch(MatchState state, Node node) { if (node.GetType() != typeof(Lookup)) { return NoMatch; } object field; if (state.TryGetState(_decl, out field)) { var curField = ((Lookup)node).VariableField; while (curField != null) { if (curField == field) { return true; } curField = curField.OuterField; } } return NoMatch; }