Skip to content
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

Add quote expressions for metaprogramming #4586

Closed
Tracked by #4594
jfecher opened this issue Mar 19, 2024 · 0 comments · Fixed by #4595
Closed
Tracked by #4594

Add quote expressions for metaprogramming #4586

jfecher opened this issue Mar 19, 2024 · 0 comments · Fixed by #4595
Labels
enhancement New feature or request

Comments

@jfecher
Copy link
Contributor

jfecher commented Mar 19, 2024

Problem

Noir needs a way to quote code to create macros

Happy Case

Add quote expressions to quote code detailed here: https://hackmd.io/Tkzo_ryvTsWMPESmWHPiZw?view

Project Impact

None

Impact Context

No response

Workaround

None

Workaround Description

No response

Additional Context

No response

Would you like to submit a PR for this Issue?

None

Support Needs

No response

@jfecher jfecher added the enhancement New feature or request label Mar 19, 2024
@github-project-automation github-project-automation bot moved this to 📋 Backlog in Noir Mar 19, 2024
github-merge-queue bot pushed a commit that referenced this issue Mar 20, 2024
# Description

## Problem\*

Resolves #4586

Part of #4594

## Summary\*

Adds a `quote { ... }` expression to the parser along with a new builtin
`Code` type which it is the only method of creating.

## Additional Context

The quote expression can only currently quote expressions and
statements. It cannot yet quote top-level statements - we'd need more
parser changes for this. In particular the top level statement parser
would now need to be recursive and passed down all the way to the
expression level...

Trying to use `quote` in a program gives you an `experimental feature`
warning. Indeed, the only thing you can do with it currently is panic
once it gets to monomorphization without being removed from the runtime
program yet.

## Documentation\*

Check one:
- [x] No documentation needed.
- I'm following the pattern with other experimental features and waiting
to document them until they're stable. For this, it means quote won't be
documented until the base for metaprogramming is completed.
- [ ] Documentation included in this PR.
- [ ] **[Exceptional Case]** Documentation to be submitted in a separate
PR.

# PR Checklist\*

- [x] I have tested the changes locally.
- [x] I have formatted the changes with [Prettier](https://prettier.io/)
and/or `cargo fmt` on default settings.
@github-project-automation github-project-automation bot moved this from 📋 Backlog to ✅ Done in Noir Mar 20, 2024
TomAFrench pushed a commit that referenced this issue Apr 3, 2024
# Description

## Problem\*

Resolves #4586

Part of #4594

## Summary\*

Adds a `quote { ... }` expression to the parser along with a new builtin
`Code` type which it is the only method of creating.

## Additional Context

The quote expression can only currently quote expressions and
statements. It cannot yet quote top-level statements - we'd need more
parser changes for this. In particular the top level statement parser
would now need to be recursive and passed down all the way to the
expression level...

Trying to use `quote` in a program gives you an `experimental feature`
warning. Indeed, the only thing you can do with it currently is panic
once it gets to monomorphization without being removed from the runtime
program yet.

## Documentation\*

Check one:
- [x] No documentation needed.
- I'm following the pattern with other experimental features and waiting
to document them until they're stable. For this, it means quote won't be
documented until the base for metaprogramming is completed.
- [ ] Documentation included in this PR.
- [ ] **[Exceptional Case]** Documentation to be submitted in a separate
PR.

# PR Checklist\*

- [x] I have tested the changes locally.
- [x] I have formatted the changes with [Prettier](https://prettier.io/)
and/or `cargo fmt` on default settings.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant