feat(macros): Add TopLevelItem
and Type
types for quoting top-level definitions and types
#5267
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.
Description
Problem*
Resolves
Summary*
Adds a
TopLevelItem
andType
keywords & types for quoting type definitions, functions, trait impls, etc. and types respectively. The former is needed to identify items which can be unquoted at the top-level of a file - e.g. to prevent random expressions from being unquoted at the top level and to prevent trait impls from being unquoted in the middle of a function.Additional Context
There is no way currently to create a TopLevelItem. The intended method is to be able to specify the type you want to quote in a quote expression:
quote TopLevelItem { ... }
but our current parser makes this very difficult since the top level statement parser would need to become recursive and be passed down through each function. For now I'm planning to have compiler API function's as a work around - e.g:Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.