Skip to content

Commit

Permalink
feat: Improve Matching Algorithm with Matching Representation (#61)
Browse files Browse the repository at this point in the history
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
jpedroh authored Jul 19, 2024
1 parent 9a51e76 commit f6d66a5
Show file tree
Hide file tree
Showing 6 changed files with 1,402 additions and 29 deletions.
Loading

0 comments on commit f6d66a5

Please sign in to comment.