Skip to content
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

Add support for stability attributes: #[deprecated], #[experimental], etc. #8921

Closed
wants to merge 1 commit into from

Commits on Sep 3, 2013

  1. Implement support for indicating the stability of items.

    There are 6 new compiler recognised attributes: deprecated, experimental,
    unstable, stable, frozen, locked (these levels are taken directly from
    Node's "stability index"[1]). These indicate the stability of the
    item to which they are attached; e.g. `#[deprecated] fn foo() { .. }`
    says that `foo` is deprecated.
    
    This comes with 3 lints for the first 3 levels (with matching names) that
    will detect the use of items marked with them (the `unstable` lint
    includes items with no stability attribute). The attributes can be given
    a short text note that will be displayed by the lint. An example:
    
        #[warn(unstable)]; // `allow` by default
    
        #[deprecated="use `bar`"]
        fn foo() { }
    
        #[stable]
        fn bar() { }
    
        fn baz() { }
    
        fn main() {
            foo(); // "warning: use of deprecated item: use `bar`"
    
            bar(); // all fine
    
            baz(); // "warning: use of unmarked item"
        }
    
    The lints currently only check the "edges" of the AST: i.e. functions,
    methods[2], structs and enum variants. Any stability attributes on modules,
    enums, traits and impls are not checked.
    
    [1]: http://nodejs.org/api/documentation.html
    [2]: the method check is currently incorrect and doesn't work.
    huonw committed Sep 3, 2013
    5 Configuration menu
    Copy the full SHA
    506f69a View commit details
    Browse the repository at this point in the history