Skip to content

fix: Match against all Value recursive types when checking for a function/closure in a global#8967

Merged
vezenovm merged 2 commits intomasterfrom
mv/fix-function-ptr-in-globals
Jun 18, 2025
Merged

fix: Match against all Value recursive types when checking for a function/closure in a global#8967
vezenovm merged 2 commits intomasterfrom
mv/fix-function-ptr-in-globals

Conversation

@vezenovm
Copy link
Contributor

Description

Problem*

Follow-up to #8905 and #8898

Summary*

Rather than using a catch-all for contains_function_or_closure we now recursively check all recursive Value types. Moving away from catch-all is safer and makes sure we must update this match statement if a new recursive Value is added in the future (otherwise we risk silently failing until a panic is triggered with a specific case). Moving away from catch-all more generally is also the recommendation of Veridise for these reasons.

Additional Context

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@vezenovm vezenovm requested a review from a team June 18, 2025 15:51
@vezenovm vezenovm changed the title move away from catch-all in contains_function_or_closure fix: Match against all Value recursive types when checking for a function/closure in a global Jun 18, 2025
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: be99ffa Previous: 3838c69 Ratio
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib 250 s 204 s 1.23

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@vezenovm vezenovm added this pull request to the merge queue Jun 18, 2025
Merged via the queue into master with commit e43a7f4 Jun 18, 2025
118 checks passed
@vezenovm vezenovm deleted the mv/fix-function-ptr-in-globals branch June 18, 2025 18:01
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jun 19, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(defunctionalize): Create a placeholder function for first-class
function calls with no variants
(noir-lang/noir#8697)
fix(mem2reg): Keep store when any aliased reference is kept
(noir-lang/noir#8960)
fix(parser): let `as` have a lower precedence
(noir-lang/noir#8956)
fix: Match against all Value recursive types when checking for a
function/closure in a global
(noir-lang/noir#8967)
fix(formatter): reset indetnation after group changed it
(noir-lang/noir#8966)
chore(validation): Ban function pointers in SSA globals
(noir-lang/noir#8947)
chore: address various clippy issues
(noir-lang/noir#8942)
chore(fuzz): Consider `RangeCheckFailed` equivalent to
`ConstantDoesNotFitType` if the value matches
(noir-lang/noir#8958)
chore(fuzz): Use `nextest` to run nightly fuzz test
(noir-lang/noir#8962)
chore: minor code quality issues
(noir-lang/noir#8961)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
danielntmd pushed a commit to danielntmd/aztec-packages that referenced this pull request Jul 16, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(defunctionalize): Create a placeholder function for first-class
function calls with no variants
(noir-lang/noir#8697)
fix(mem2reg): Keep store when any aliased reference is kept
(noir-lang/noir#8960)
fix(parser): let `as` have a lower precedence
(noir-lang/noir#8956)
fix: Match against all Value recursive types when checking for a
function/closure in a global
(noir-lang/noir#8967)
fix(formatter): reset indetnation after group changed it
(noir-lang/noir#8966)
chore(validation): Ban function pointers in SSA globals
(noir-lang/noir#8947)
chore: address various clippy issues
(noir-lang/noir#8942)
chore(fuzz): Consider `RangeCheckFailed` equivalent to
`ConstantDoesNotFitType` if the value matches
(noir-lang/noir#8958)
chore(fuzz): Use `nextest` to run nightly fuzz test
(noir-lang/noir#8962)
chore: minor code quality issues
(noir-lang/noir#8961)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants