diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-08-31 17:13:57 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-09-04 00:12:27 +1000 |
| commit | 506f69aed7e2f5dfdd2134ae0c74e47559e1c649 (patch) | |
| tree | 4358920c7b2fe144f6a00a92875d629e09580eff /src/rustllvm/PassWrapper.cpp | |
| parent | 7048e05d5fb6aae8647494148a89bd902e5a913f (diff) | |
| download | rust-506f69aed7e2f5dfdd2134ae0c74e47559e1c649.tar.gz rust-506f69aed7e2f5dfdd2134ae0c74e47559e1c649.zip | |
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.
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
