Struct rustc_plugin::registry::Registry [] [src]

pub struct Registry<'a> {
    pub sess: &'a Session,
    // some fields omitted
}
🔬 This is a nightly-only experimental API. (rustc_private)

Structure used to register plugins.

A plugin registrar function takes an &mut Registry and should call methods to register its plugins.

This struct has public fields and other methods for use by rustc itself. They are not documented here, and plugin authors should not use them.

Fields

🔬 This is a nightly-only experimental API. (rustc_private)

Compiler session. Useful if you want to emit diagnostic messages from the plugin registrar.

Methods

impl<'a> Registry<'a>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

Get the plugin's arguments, if any.

These are specified inside the plugin crate attribute as

#![plugin(my_plugin_name(... args ...))]

Returns empty slice in case the plugin was loaded with --extra-plugins

🔬 This is a nightly-only experimental API. (rustc_private)

Register a syntax extension of any kind.

This is the most general hook into libsyntax's expansion behavior.

Deprecated since 1.15.0

: replaced by macros 1.1 (RFC 1861)

🔬 This is a nightly-only experimental API. (rustc_private)

This can be used in place of register_syntax_extension to register legacy custom derives (i.e. attribute syntax extensions whose name begins with derive_). Legacy custom derives defined by this function do not trigger deprecation warnings when used.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Register a macro of the usual kind.

This is a convenience wrapper for register_syntax_extension. It builds for you a NormalTT that calls expander, and also takes care of interning the macro's name.

🔬 This is a nightly-only experimental API. (rustc_private)

Register a compiler lint pass.

🔬 This is a nightly-only experimental API. (rustc_private)

Register a compiler lint pass.

🔬 This is a nightly-only experimental API. (rustc_private)

Register a lint group.

🔬 This is a nightly-only experimental API. (rustc_private)

Register an LLVM pass.

Registration with LLVM itself is handled through static C++ objects with constructors. This method simply adds a name to the list of passes to execute.

🔬 This is a nightly-only experimental API. (rustc_private)

Register an attribute with an attribute type.

Registered attributes will bypass the custom_attribute feature gate. Whitelisted attributes will additionally not trigger the unused_attribute lint. CrateLevel attributes will not be allowed on anything other than a crate.