Commit Graph

187 Commits

Author SHA1 Message Date
bors
5ddc7b4a25 auto merge of #15737 : huonw/rust/lint-level-here, r=pnkfelix
This allows lint traversals to emit more information (when a lint is
non-allow), or avoid doing expensive computations (when a lint is
allow).
2014-07-18 13:31:22 +00:00
Huon Wilson
46a3314943 lint: add method to get level of a specific lint.
This allows lint traversals to emit more information (when a lint is
non-allow), or avoid doing expensive computations (when a lint is
allow).
2014-07-17 20:07:43 +10:00
Aaron Turon
81b69d1538 stability lint: ignore code from macro expansion
This small patch causes the stability lint to bail out when traversing
any AST produced via a macro expansion. Ultimately, we would like to
lint the contents of the macro at the place where the macro is defined,
but regardless we should not be linting it at the use site.

Closes #15703
2014-07-16 13:53:06 -07:00
bors
13dc0d7938 auto merge of #15584 : alexcrichton/rust/warn-annoyances, r=cmr
* Don't warn about `#[crate_name]` if `--crate-name` is specified
* Don't warn about non camel case identifiers on `#[repr(C)]` structs
* Switch `mode` to `mode_t` in libc.
2014-07-13 04:46:31 +00:00
Alex Crichton
c26cd9f05d rustc: Exclude #[repr(C)] from non camel case
C structs predominately do not use camel case identifiers, and we have a clear
indicator for what's a C struct now, so excuse all of them from this stylistic
lint.
2014-07-10 10:19:38 -07:00
Falco Hirschenberger
f8bc571df7 Add range lint for float literals, fixing #10934 2014-07-10 09:38:15 +02:00
Huon Wilson
b9e35a1644 lint: extend #[must_use] to handle a message.
Similar to the stability attributes, a type annotated with `#[must_use =
"informative snippet"]` will print the normal warning message along with
"informative snippet". This allows the type author to provide some
guidance about why the type should be used.
2014-07-10 08:05:58 +10:00
Corey Richardson
092c5078be ast: make Name its own type 2014-07-09 00:49:54 -07:00
Richo Healey
12c334a77b std: Rename the ToStr trait to ToString, and to_str to to_string.
[breaking-change]
2014-07-08 13:01:43 -07:00
Alex Crichton
2c26a00f91 rustc: Fix naming output files with --crate-name
The output file was only being renamed based off #[crate_name], not #[crate_id]
or --crate-name. Both of these behaviors have been restored now.
2014-07-08 06:27:37 -07:00
Patrick Walton
29ec2506ab librustc: Remove the &LIFETIME EXPR production from the language.
This was parsed by the parser but completely ignored; not even stored in
the AST!

This breaks code that looks like:

    static X: &'static [u8] = &'static [1, 2, 3];

Change this code to the shorter:

    static X: &'static [u8] = &[1, 2, 3];

Closes #15312.

[breaking-change]
2014-07-04 00:56:57 -07:00
Joseph Crail
e3fa23bcb6 Fix spelling errors. 2014-07-03 12:54:51 -07:00
John Clements
e38cb972dc Simplify PatIdent to contain an Ident rather than a Path
Rationale: for what appear to be historical reasons only, the PatIdent contains
a Path rather than an Ident.  This means that there are many places in the code
where an ident is artificially promoted to a path, and---much more problematically---
a bunch of elements from a path are simply thrown away, which seems like an invitation
to some really nasty bugs.

This commit replaces the Path in a PatIdent with a SpannedIdent, which just contains an ident
and a span.
2014-07-03 12:54:51 -07:00
Aaron Turon
256df5e3df rustdoc: incorporate stability index throughout
This commit hooks rustdoc into the stability index infrastructure in two
ways:

1. It looks up stability levels via the index, rather than by manual
attributes.

2. It adds stability level information throughout rustdoc output, rather
than just at the top header. In particular, a stability color (with
mouseover text) appears next to essentially every item that appears
in rustdoc's HTML output.

Along the way, the stability index code has been lightly refactored.
2014-06-30 22:36:24 -07:00
Patrick Walton
a5bb0a3a45 librustc: Remove the fallback to int for integers and f64 for
floating point numbers for real.

This will break code that looks like:

    let mut x = 0;
    while ... {
        x += 1;
    }
    println!("{}", x);

Change that code to:

    let mut x = 0i;
    while ... {
        x += 1;
    }
    println!("{}", x);

Closes #15201.

[breaking-change]
2014-06-29 11:47:58 -07:00
bors
fe8bc17801 auto merge of #15208 : alexcrichton/rust/snapshots, r=pcwalton
This change registers new snapshots, allowing `*T` to be removed from the language. This is a large breaking change, and it is recommended that if compiler errors are seen that any FFI calls are audited to determine whether they should be actually taking `*mut T`.
2014-06-28 20:11:34 +00:00
Alex Crichton
0dfc90ab15 Rename all raw pointers as necessary 2014-06-28 11:53:58 -07:00
Huon Wilson
64019e764f rustc: update the unnecessary parens lint for struct literals.
Things like `match X { x: 1 } { ... }` now need to be written with
parentheses, so the lint should avoid warning in cases like that.
2014-06-27 16:43:05 +10:00
Keegan McAllister
7e694e7115 More upstream lint changes 2014-06-24 11:36:28 -07:00
Keegan McAllister
2f274d11ba Implement lint plugins 2014-06-24 11:36:28 -07:00
Keegan McAllister
51d438e568 Incorporate upstream changes to old lint code 2014-06-24 11:36:28 -07:00
Keegan McAllister
e67e6e678d List builtin lints one per line for better diffs 2014-06-24 11:36:28 -07:00
Keegan McAllister
c747626ced Reindent function call continuations, and other style fixes 2014-06-24 11:36:27 -07:00
Keegan McAllister
ba1c0c4232 Drop the ExportedItems argument from LintPass::check_crate
None of the builtin lints use this, and it's now available through the Context.
2014-06-24 11:36:27 -07:00
Keegan McAllister
6fede93475 Make the crate and its exported items available in the lint context 2014-06-24 11:36:27 -07:00
Keegan McAllister
a813a3779b Rework lint attr parsing and use it in middle::dead 2014-06-24 11:36:27 -07:00
Keegan McAllister
b5542f7f5b Convert builtin lints to uppercase names for style consistency 2014-06-24 11:36:27 -07:00
Keegan McAllister
21e7b936d3 Use names in Lint structs in an ASCII-case-insensitive way
In preparation for the next commit.
2014-06-24 11:36:27 -07:00
Keegan McAllister
609552e195 Run lint passes using the Option dance instead of RefCells 2014-06-24 11:36:27 -07:00
Keegan McAllister
c1898b9acb Stop using Default for initializing builtin lints
It wasn't a very appropriate use of the trait. Instead, just enumerate
unit structs and those with a `fn new()` separately.
2014-06-24 11:36:27 -07:00
Keegan McAllister
c7af6060dd Clean up and document the public lint API
Also change some code formatting.

lint::builtin becomes a sibling of lint::context in order to ensure that lints
implemented there use the same public API as lint plugins.
2014-06-24 11:36:27 -07:00
Keegan McAllister
819f76ca82 Store the registered lints in the Session 2014-06-24 11:36:27 -07:00
Keegan McAllister
442fbc473e Replace enum LintId with an extensible alternative 2014-06-24 10:25:15 -07:00
Keegan McAllister
69b6bc5eee Convert lints to a trait-based infrastructure
The immediate benefits are

* moving the state specific to a single lint out of Context, and
* replacing the soup of function calls in the Visitor impl with
  more structured control flow

But this is also a step towards loadable lints.
2014-06-24 10:24:03 -07:00
Keegan McAllister
5d4c96a8f2 Rename lint::Lint to lint::LintId 2014-06-24 10:24:03 -07:00
Keegan McAllister
3144614f0b Move lint infrastructure and individual lints into separate files 2014-06-24 10:24:03 -07:00
Keegan McAllister
75bfedaef5 Move lint.rs out of middle
We're going to have more modules under lint, and the paths get unwieldy. We
also plan to have lints run at multiple points in the compilation pipeline.
2014-06-24 10:22:49 -07:00