Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Improve Matching Algorithm with Matching Representation (#61)
This PR addresses a known issue in our matching algorithm, which previously employed naive early return logic based solely on node kinds. This approach led to incorrect matchings of nodes that should not trigger the matching algorithm, such as different method declarations. The proposed solution introduces the concept of a "matching representation" for each node to improve the matching algorithm's accuracy. For example, in the case of method declarations, this representation uses the method signature to ensure that left and right both correspond to the same method declaration, early returning with empty matchings if not. However, since not all nodes might have a decent matching representation, for non-terminal nodes, the representation defaults to the node's kind, and for terminal nodes, it uses both the kind and value. The pull request also adds a test scenario extracted from the GitHub-API project that failed before this change and will be used for checking future regressions. Another test was removed because the change made the scenario tested unreachable. It's worth mentioning that the matching representation acts as an identifier for the node, which we already handle in the unique label matching. However, we still need to improve the node identifier extraction, which will be addressed in a future PR.
- Loading branch information