Skip to content

Commit

Permalink
Add some documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark-Simulacrum committed Oct 22, 2019
1 parent 6be0a70 commit 4e8d1b2
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 8 deletions.
24 changes: 16 additions & 8 deletions src/librustc/lint/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -155,23 +155,31 @@ impl LintStore {
.collect()
}

pub fn register_early_pass(&mut self,
pass: impl Fn() -> EarlyLintPassObject + 'static + sync::Send + sync::Sync) {
pub fn register_early_pass(
&mut self,
pass: impl Fn() -> EarlyLintPassObject + 'static + sync::Send + sync::Sync
) {
self.early_passes.push(Box::new(pass));
}

pub fn register_pre_expansion_pass(&mut self,
pass: impl Fn() -> EarlyLintPassObject + 'static + sync::Send + sync::Sync) {
pub fn register_pre_expansion_pass(
&mut self,
pass: impl Fn() -> EarlyLintPassObject + 'static + sync::Send + sync::Sync,
) {
self.pre_expansion_passes.push(Box::new(pass));
}

pub fn register_late_pass(&mut self,
pass: impl Fn() -> LateLintPassObject + 'static + sync::Send + sync::Sync) {
pub fn register_late_pass(
&mut self,
pass: impl Fn() -> LateLintPassObject + 'static + sync::Send + sync::Sync,
) {
self.late_passes.push(Box::new(pass));
}

pub fn register_late_mod_pass(&mut self,
pass: impl Fn() -> LateLintPassObject + 'static + sync::Send + sync::Sync) {
pub fn register_late_mod_pass(
&mut self,
pass: impl Fn() -> LateLintPassObject + 'static + sync::Send + sync::Sync,
) {
self.late_module_passes.push(Box::new(pass));
}

Expand Down
1 change: 1 addition & 0 deletions src/librustc_driver/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ pub fn abort_on_err<T>(result: Result<T, ErrorReported>, sess: &Session) -> T {
pub trait Callbacks {
/// Called before creating the compiler instance
fn config(&mut self, _config: &mut interface::Config) {}
/// Called early during compilation to allow other drivers to easily register lints.
fn extra_lints(&mut self, _ls: &mut lint::LintStore) {}
/// Called after parsing. Return value instructs the compiler whether to
/// continue the compilation afterwards (defaults to `Compilation::Continue`)
Expand Down
5 changes: 5 additions & 0 deletions src/librustc_interface/interface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ pub struct Config {
pub crate_name: Option<String>,
pub lint_caps: FxHashMap<lint::LintId, lint::Level>,

/// This is a callback from the driver that is called when we're registering lints;
/// it is called during plugin registration when we have the LintStore in a non-shared state.
///
/// Note that if you find a Some here you probably want to call that function in the new
/// function being registered.
pub register_lints: Option<Box<dyn Fn(&Session, &mut lint::LintStore) + Send + Sync>>,
}

Expand Down
1 change: 1 addition & 0 deletions src/librustc_plugin/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ pub struct Registry<'a> {
/// from the plugin registrar.
pub sess: &'a Session,

/// The `LintStore` allows plugins to register new lints.
pub lint_store: &'a mut LintStore,

#[doc(hidden)]
Expand Down

0 comments on commit 4e8d1b2

Please sign in to comment.