-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Tracking issue for proc_macro conversion #693
Labels
nightly breakage
Breakage on the nightly channel only
Milestone
Comments
Note: rust-lang/rust#43081 (comment) is still an issue, and will surely lead to confusion. Also, Rocket is still using private APIs to work around not having an implementation for rust-lang/rust#54373 (comment). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Motivation
rocket_codegen
currently uses Rust'splugin
system, which is slated for future removal and is a leading cause of breakage on nightly Rust. Rocket should move to implementing its code generation throughproc_macro
and related features for better stability guarantees.Related issues
quote_
macros #678: Stop using the quote_ macros. This conversion process supersedes that issue.proc_macro
tracking issueproc_macro_
expansion feature gates asproc_macro_hygiene
rust-lang/rust#52121: merge severalproc_macro
features asproc_macro_hygiene
Questions/Concerns
Progress
Attribute macros:
route
and its variants (get
,put
,post
,delete
,head
,patch
,options
)catch
Custom derives:
derive(FromForm)
derive(FromFormValue)
derive(Responder)
derive(UriDisplay)
Bang macros:
routes!
: Reimplement routes! and catchers! as proc_macros #680catchers!
: PR: Reimplement routes! and catchers! as proc_macros #680uri!
rocket_internal_uri!
(some remaining work on the diagnostics)Upstream:
Required rustc Features
These unstable features will need to be used by Rocket's proc_macro crate.
proc_macro_diagnostic
,proc_macro_span
. Allows Rocket to provide useful error messages from macros.These unstable features will need to be used by application crates that use Rocket's macros.
proc_macro_hygiene
. For macros that expand to non-items or macro definitions, includingroutes!
,catchers!
, anduri!
, and#[route]
.decl_macro
, for#[route]
.Testing
#[macro_use] extern crate rocket;
), use_extern_macros (use rocket::macro
), and proc_macro_path_invoc (#[derive(rocket::macro)],
#[rocket::macro]
, orrocket::macro!()
), and any others missing from this list. Ensure these cases are enough to cover compatibility with consumer crates that target the 2018 edition as well.The text was updated successfully, but these errors were encountered: