linux/rust/macros
Alice Ryhl 85525eda4f rust: macros: support additional tokens in quote!
This gives the quote! macro support for the following additional tokens:

* The = token.
* The _ token.
* The # token. (when not followed by an identifier)
* Using #my_var with variables of type Ident.

Additionally, some type annotations are added to allow cases where
groups are empty. For example, quote! does support () in the input, but
only when it is *not* empty. When it is empty, there are zero `.push`
calls, so the compiler can't infer the item type and also emits a
warning about it not needing to be mutable.

These additional quote! features are used by a new proc macro that
generates code looking like this:

	const _: () = {
	    if true {
	        ::kernel::bindings::#name
	    } else {
	        #name
	    };
	};

where #name has type Ident.

Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>
Reviewed-by: Tamir Duberstein <tamird@gmail.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20250303-export-macro-v3-2-41fbad85a27f@google.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-03-09 20:52:46 +01:00
..
concat_idents.rs
helpers.rs rust: macros: allow generic parameter default values in #[pin_data] 2024-04-07 22:03:42 +02:00
lib.rs rust: add build_error! to the prelude 2025-01-10 00:19:09 +01:00
module.rs rust: module: add trait ModuleMetadata 2024-12-20 17:19:25 +01:00
paste.rs rust: macros: enable paste! use from macro_rules! 2024-11-01 22:02:53 +01:00
pin_data.rs rust: macros: allow generic parameter default values in #[pin_data] 2024-04-07 22:03:42 +02:00
pinned_drop.rs rust: init: add PinnedDrop trait and macros 2023-04-12 18:41:05 +02:00
quote.rs rust: macros: support additional tokens in quote! 2025-03-09 20:52:46 +01:00
vtable.rs rust: macros: vtable: fix HAS_* redefinition (gen_const_name) 2023-08-09 21:15:07 +02:00
zeroable.rs rust: macros: add decl_generics to parse_generics() 2024-04-07 22:03:42 +02:00