-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: use resolved type instead of needing Constructor.struct_type #7500
Conversation
There was a problem hiding this 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 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20
.
Benchmark suite | Current: df1dddb | Previous: 4aba428 | Ratio |
---|---|---|---|
rollup-base-public |
6.188 s |
5.012 s |
1.23 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, this annoyed me on my last PR you mentioned.
For context, we only needed struct_type: Option<TypeId>
previously because we used to have a Path
for the constructor type before your PR to change it to an UnresolvedType.
Oooh... I forgot about that. That explains the comment about "path" that I didn't understand. |
* master: feat(experimental): Support struct constructors in match patterns (#7489) feat: use resolved type instead of needing Constructor.struct_type (#7500) feat: better error message when keyword is found instead of type in p… (#7501) chore: bump external pinned commits (#7497) feat(experimental): Add invalid pattern syntax error (#7487) fix(performance): Accurately mark safe constant indices for arrays of complex types (#7491)
* master: (74 commits) feat: optimize out range checks on limiting cases (#7510) chore: clippy fixes (#7505) chore(docs): Supplement docs on `modexp` as a required precompile for Barretenberg's Solidity verifier (#7508) feat(debugger): REPL add breakpoint by sourcecode line (#5204) fix: issue duplicate error on impl function without self (#7490) feat(experimental): Support struct constructors in match patterns (#7489) feat: use resolved type instead of needing Constructor.struct_type (#7500) feat: better error message when keyword is found instead of type in p… (#7501) chore: bump external pinned commits (#7497) feat(experimental): Add invalid pattern syntax error (#7487) fix(performance): Accurately mark safe constant indices for arrays of complex types (#7491) fix(experimental): Allow shadowing in match patterns (#7484) chore: regression test #7195 (#7233) chore(docs): Section on `noir-profiler execution-opcodes` (#7480) chore: improve proptesting of 128bit values in `noirc_abi` (#7485) chore(profiler): Use brillig names for outputted flamegraphs (#7470) chore(docs): Profiler images reference (#7481) fix: don't use dummy location when inserting debug code (#7482) feat(cli)!: Add `--unstable-features` to gate unstable features (#7449) feat: Sync from aztec-packages (#7474) ...
feat: let all compiler errors carry a Location instead of a Span (noir-lang/noir#7486) chore: Increaes base64's allotted time (noir-lang/noir#7521) fix: don't crash on broken impl syntax (noir-lang/noir#7512) feat: optimize out range checks on limiting cases (noir-lang/noir#7510) chore: clippy fixes (noir-lang/noir#7505) chore(docs): Supplement docs on `modexp` as a required precompile for Barretenberg's Solidity verifier (noir-lang/noir#7508) feat(debugger): REPL add breakpoint by sourcecode line (noir-lang/noir#5204) fix: issue duplicate error on impl function without self (noir-lang/noir#7490) feat(experimental): Support struct constructors in match patterns (noir-lang/noir#7489) feat: use resolved type instead of needing Constructor.struct_type (noir-lang/noir#7500) feat: better error message when keyword is found instead of type in p… (noir-lang/noir#7501) chore: bump external pinned commits (noir-lang/noir#7497) feat(experimental): Add invalid pattern syntax error (noir-lang/noir#7487) fix(performance): Accurately mark safe constant indices for arrays of complex types (noir-lang/noir#7491) fix(experimental): Allow shadowing in match patterns (noir-lang/noir#7484) chore: regression test #7195 (noir-lang/noir#7233) chore(docs): Section on `noir-profiler execution-opcodes` (noir-lang/noir#7480) chore: improve proptesting of 128bit values in `noirc_abi` (noir-lang/noir#7485) chore(profiler): Use brillig names for outputted flamegraphs (noir-lang/noir#7470) chore(docs): Profiler images reference (noir-lang/noir#7481) fix: don't use dummy location when inserting debug code (noir-lang/noir#7482) feat(cli)!: Add `--unstable-features` to gate unstable features (noir-lang/noir#7449)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: bump external pinned commits (noir-lang/noir#7515) feat: let all compiler errors carry a Location instead of a Span (noir-lang/noir#7486) chore: Increaes base64's allotted time (noir-lang/noir#7521) fix: don't crash on broken impl syntax (noir-lang/noir#7512) feat: optimize out range checks on limiting cases (noir-lang/noir#7510) chore: clippy fixes (noir-lang/noir#7505) chore(docs): Supplement docs on `modexp` as a required precompile for Barretenberg's Solidity verifier (noir-lang/noir#7508) feat(debugger): REPL add breakpoint by sourcecode line (noir-lang/noir#5204) fix: issue duplicate error on impl function without self (noir-lang/noir#7490) feat(experimental): Support struct constructors in match patterns (noir-lang/noir#7489) feat: use resolved type instead of needing Constructor.struct_type (noir-lang/noir#7500) feat: better error message when keyword is found instead of type in p… (noir-lang/noir#7501) chore: bump external pinned commits (noir-lang/noir#7497) feat(experimental): Add invalid pattern syntax error (noir-lang/noir#7487) fix(performance): Accurately mark safe constant indices for arrays of complex types (noir-lang/noir#7491) fix(experimental): Allow shadowing in match patterns (noir-lang/noir#7484) chore: regression test #7195 (noir-lang/noir#7233) chore(docs): Section on `noir-profiler execution-opcodes` (noir-lang/noir#7480) chore: improve proptesting of 128bit values in `noirc_abi` (noir-lang/noir#7485) chore(profiler): Use brillig names for outputted flamegraphs (noir-lang/noir#7470) chore(docs): Profiler images reference (noir-lang/noir#7481) fix: don't use dummy location when inserting debug code (noir-lang/noir#7482) feat(cli)!: Add `--unstable-features` to gate unstable features (noir-lang/noir#7449) END_COMMIT_OVERRIDE --------- Co-authored-by: guipublic <[email protected]> Co-authored-by: guipublic <[email protected]>
Description
Problem
Something I noticed while reviewing #7489
Summary
ConstructorExpression
has a field,struct_type
, that stores a resolved type from macro expansion. Instead of it we can useType::Resolved
for the actual type inside an unresolved type. This works the same way but there's one less field needed.Additionally, this actually allows more valid programs to compile. For example this one:
Previously when unquoting
Foo::<i32>
as$x
the generics were lost, so the above program errored with "Type annotation needed". Now the above program compiles fine.Additional Context
Documentation
Check one:
PR Checklist
cargo fmt
on default settings.