Add edge case regression tests for --generate-function-body const handling#8797
Open
tautschnig wants to merge 1 commit intodiffblue:developfrom
Open
Add edge case regression tests for --generate-function-body const handling#8797tautschnig wants to merge 1 commit intodiffblue:developfrom
tautschnig wants to merge 1 commit intodiffblue:developfrom
Conversation
fa1fbb5 to
227164e
Compare
There was a problem hiding this comment.
Pull request overview
Adds regression coverage for --generate-function-body around tricky const/volatile qualifier placement, especially across multi-level pointers, arrays, structs, and function-pointer indirections.
Changes:
- Introduces new regression test directories covering volatile+const, const at different pointer levels, and const in structs/arrays.
- Adds systematic “pointer variations” test that mixes const placement across
**/* const */** constforms. - Adds negative tests (expected assertion failures) where pointer relationships are allowed to change.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| regression/goto-instrument/generate-function-body-volatile-const-pointers/test.desc | New harness expectations for volatile+const pointer test |
| regression/goto-instrument/generate-function-body-volatile-const-pointers/main.c | Adds volatile+const pointer regression scenario |
| regression/goto-instrument/generate-function-body-triple-pointer-const-middle/test.desc | New harness expectations for middle-level const triple pointer test |
| regression/goto-instrument/generate-function-body-triple-pointer-const-middle/main.c | Adds triple-pointer “const in middle” regression scenario |
| regression/goto-instrument/generate-function-body-pointer-variations-const/test.desc | Adds multi-variant const pointer-level expectations |
| regression/goto-instrument/generate-function-body-pointer-variations-const/main.c | Implements const-placement matrix for pointer-to-pointer cases |
| regression/goto-instrument/generate-function-body-pointer-to-const-struct/test.desc | New harness expectations for pointer-to-const-struct test |
| regression/goto-instrument/generate-function-body-pointer-to-const-struct/main.c | Adds regression scenario for const-qualified struct pointer |
| regression/goto-instrument/generate-function-body-nested-struct-const-pointers/test.desc | New harness expectations for nested struct const-pointer test |
| regression/goto-instrument/generate-function-body-nested-struct-const-pointers/main.c | Adds nested struct scenario mixing const and non-const pointers |
| regression/goto-instrument/generate-function-body-function-pointer-const/test.desc | Adds expected-failure harness for const function-pointer indirection |
| regression/goto-instrument/generate-function-body-function-pointer-const/main.c | Adds function-pointer constness regression scenario |
| regression/goto-instrument/generate-function-body-const-pointer-to-const/test.desc | New harness expectations for const int * const |
| regression/goto-instrument/generate-function-body-const-pointer-to-const/main.c | Adds double-const pointer regression scenario |
| regression/goto-instrument/generate-function-body-const-array-parameter/test.desc | New harness expectations for const array parameter |
| regression/goto-instrument/generate-function-body-const-array-parameter/main.c | Adds const array parameter regression scenario |
| regression/goto-instrument/generate-function-body-array-of-pointers-to-const/test.desc | Adds expected-failure harness for array-of-pointers-to-const |
| regression/goto-instrument/generate-function-body-array-of-pointers-to-const/main.c | Adds array-of-pointers-to-const regression scenario |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
regression/goto-instrument/generate-function-body-pointer-variations-const/test.desc
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-array-of-pointers-to-const/test.desc
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-pointer-variations-const/main.c
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-pointer-variations-const/main.c
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-pointer-variations-const/main.c
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-triple-pointer-const-middle/main.c
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-pointer-to-const-struct/main.c
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-pointer-to-const-struct/main.c
Outdated
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-function-pointer-const/main.c
Show resolved
Hide resolved
regression/goto-instrument/generate-function-body-function-pointer-const/main.c
Outdated
Show resolved
Hide resolved
227164e to
0d03748
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #8797 +/- ##
========================================
Coverage 80.01% 80.01%
========================================
Files 1700 1700
Lines 188345 188345
Branches 73 73
========================================
Hits 150696 150696
Misses 37649 37649 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…dling The existing tests provided basic const handling coverage, but several complex scenarios were not comprehensively tested. This PR addresses the following edge cases: 1. **Triple pointer const handling** - `int * const **` (const at middle level) 2. **Double const qualification** - `const int * const` (both pointer and data const) 3. **Array of pointers to const** - `const int **` / `const int *arr[]` 4. **Const function pointers** - `func_ptr_t * const` 5. **Nested struct const pointers** - Mixed const/non-const in nested structures 6. **Combined qualifiers** - `volatile const int *` (volatile + const interaction) 7. **Const array parameters** - `const int[]` (array parameter const protection) 8. **Pointer to const struct** - `const struct test_struct *` (struct-level const) 9. **Systematic const variations** - Comprehensive test of const at each pointer level Fixes: diffblue#1948 Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
0d03748 to
699a625
Compare
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.
The existing tests provided basic const handling coverage, but several complex scenarios were not comprehensively tested. This PR addresses the following edge cases:
int * const **(const at middle level)const int * const(both pointer and data const)const int **/const int *arr[]func_ptr_t * constvolatile const int *(volatile + const interaction)const int[](array parameter const protection)const struct test_struct *(struct-level const)Co-authored-by: Kiro autonomous agent
Fixes: #1948