Skip to content

fix: parse AsTraitPath in type expressions#9258

Merged
TomAFrench merged 4 commits intomasterfrom
ab/type-expression-as-trait-path
Jul 21, 2025
Merged

fix: parse AsTraitPath in type expressions#9258
TomAFrench merged 4 commits intomasterfrom
ab/type-expression-as-trait-path

Conversation

@asterite
Copy link
Collaborator

@asterite asterite commented Jul 21, 2025

Description

Problem

Resolves #5794

Summary

I don't know if I missed this while porting the old parser.

That said, this currently doesn't work if AsTraitPath is used in a function signature. That is, this doesn't compile:

use std::mem::zeroed;

trait Trait {
    let N: u32;
}

impl Trait for Field {
    let N: u32 = 10;
}

fn main() {}

fn foo(x: [Field; <Field as Trait>::N]) {} // No matching impl found for `Field: Trait<N = _>`

I think the reason is that function signatures are checked before impls are processed, not sure. In any case this PR at least makes the use case in the linked issue work.

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.

Copy link
Member

@TomAFrench TomAFrench left a comment

Choose a reason for hiding this comment

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

LGTM

@TomAFrench TomAFrench enabled auto-merge July 21, 2025 12:40
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: a67cef6 Previous: 566de3f Ratio
test_report_zkpassport_noir_rsa_ 2 s 1 s 2

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

CC: @TomAFrench

@TomAFrench TomAFrench added this pull request to the merge queue Jul 21, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jul 21, 2025
@TomAFrench TomAFrench added this pull request to the merge queue Jul 21, 2025
Merged via the queue into master with commit 127c4d1 Jul 21, 2025
126 checks passed
@TomAFrench TomAFrench deleted the ab/type-expression-as-trait-path branch July 21, 2025 13:16
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jul 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(SSA): validate MakeArray instruction
(noir-lang/noir#9183)
chore(docs): Add links to ACIR and source reference docs
(noir-lang/noir#9260)
fix: comptime code not mutating shared ref to struct field
(noir-lang/noir#9250)
fix(acir_gen): Bail out of `handle_constant_index` when it encounters
`DynamicArray` (noir-lang/noir#9259)
feat: allow paths in l-values
(noir-lang/noir#9254)
fix: parse AsTraitPath in type expressions
(noir-lang/noir#9258)
chore: add acir-gen unit tests per ssa instruction (2)
(noir-lang/noir#9185)
fix(licm): Ensure that all nested loops the current block is part of are
guaranteed to execute (noir-lang/noir#9249)
chore: bump external pinned commits
(noir-lang/noir#9256)
chore: enforce clippy in `ssa_fuzzer`
(noir-lang/noir#9247)
chore: clippy (noir-lang/noir#9246)
chore: skip `ram_blowup_regression` on PRs
(noir-lang/noir#9231)
chore: mark bignum as expected to pass
(noir-lang/noir#9244)
fix: suggest traits via visible reexports if they are not directly
visible (noir-lang/noir#9242)
fix: bind self when type-checking AsTraitPath
(noir-lang/noir#9236)
chore(docs): Include list to hashing libraries at the top of the
relevant docs page (noir-lang/noir#9239)
fix(fuzz): Use scoping for variable dynamism
(noir-lang/noir#9233)
fix(ssa): Change constraint message to "multiply"
(noir-lang/noir#9230)
feat: Add `compiler_unstable_features` to `Nargo.toml`
(noir-lang/noir#9219)
chore(fuzz): Increase loop frequency in Brillig
(noir-lang/noir#9228)
chore: bump noir-edwards dep
(noir-lang/noir#9229)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jul 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(SSA): validate MakeArray instruction
(noir-lang/noir#9183)
chore(docs): Add links to ACIR and source reference docs
(noir-lang/noir#9260)
fix: comptime code not mutating shared ref to struct field
(noir-lang/noir#9250)
fix(acir_gen): Bail out of `handle_constant_index` when it encounters
`DynamicArray` (noir-lang/noir#9259)
feat: allow paths in l-values
(noir-lang/noir#9254)
fix: parse AsTraitPath in type expressions
(noir-lang/noir#9258)
chore: add acir-gen unit tests per ssa instruction (2)
(noir-lang/noir#9185)
fix(licm): Ensure that all nested loops the current block is part of are
guaranteed to execute (noir-lang/noir#9249)
chore: bump external pinned commits
(noir-lang/noir#9256)
chore: enforce clippy in `ssa_fuzzer`
(noir-lang/noir#9247)
chore: clippy (noir-lang/noir#9246)
chore: skip `ram_blowup_regression` on PRs
(noir-lang/noir#9231)
chore: mark bignum as expected to pass
(noir-lang/noir#9244)
fix: suggest traits via visible reexports if they are not directly
visible (noir-lang/noir#9242)
fix: bind self when type-checking AsTraitPath
(noir-lang/noir#9236)
chore(docs): Include list to hashing libraries at the top of the
relevant docs page (noir-lang/noir#9239)
fix(fuzz): Use scoping for variable dynamism
(noir-lang/noir#9233)
fix(ssa): Change constraint message to "multiply"
(noir-lang/noir#9230)
feat: Add `compiler_unstable_features` to `Nargo.toml`
(noir-lang/noir#9219)
chore(fuzz): Increase loop frequency in Brillig
(noir-lang/noir#9228)
chore: bump noir-edwards dep
(noir-lang/noir#9229)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: Jan Beneš <janbenes1234@gmail.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.

Allow AsTraitPaths in arithmetic generics

2 participants