Rust: Use type inference to insert implicit borrows and derefs#19419
Merged
paldepind merged 2 commits intogithub:mainfrom May 1, 2025
Merged
Rust: Use type inference to insert implicit borrows and derefs#19419paldepind merged 2 commits intogithub:mainfrom
paldepind merged 2 commits intogithub:mainfrom
Conversation
4158477 to
f584d22
Compare
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR refactors the logic for implicit borrows and dereferences by basing them on type inference instead of heuristics.
- Removed outdated expected summaries in tests and updated expected outputs accordingly.
- Modified the TypeInference module to use inferType(n) for determining receiver types and added new predicates for detecting implicit deref and borrow.
- Adjusted dataflow predicates to call the new TypeInference predicates.
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| rust/ql/test/utils-tests/modelgenerator/CaptureSummaryModels.expected | Removed outdated expected summary lines to match the new model generation output. |
| rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected | Updated expected SQL injection summaries by removing duplicate/obsolete entries. |
| rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected | Removed redundant "receiver" lines reflecting changes in implicit borrow/deref handling. |
| rust/ql/lib/codeql/rust/internal/TypeInference.qll | Revised receiver type detection to use inferType(n) and added predicates for implicit borrow/dereference. |
| rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll | Updated dataflow predicates to use the new TypeInference predicates for implicit dereference and borrow. |
hvitved
reviewed
Apr 30, 2025
hvitved
approved these changes
Apr 30, 2025
Contributor
hvitved
left a comment
There was a problem hiding this comment.
Great to have a principled solution for this.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removes the current heuristic for implicit borrows and derefs and determines these based on type inference instead.