mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 15:01:51 +00:00
lint: add lint for use of a ~[T]
.
This is useless at the moment (since pretty much every crate uses `~[]`), but should help avoid regressions once completely removed from a crate.
This commit is contained in:
parent
6ff3c9995e
commit
62792f09f2
@ -12,6 +12,7 @@
|
||||
|
||||
#[allow(non_camel_case_types)];
|
||||
#[deny(warnings)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate test;
|
||||
extern crate getopts;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#[license = "MIT/ASL2"];
|
||||
#[allow(missing_doc)];
|
||||
#[feature(managed_boxes)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate collections;
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
// NOTE remove the following two attributes after the next snapshot.
|
||||
#[allow(unrecognized_lint)];
|
||||
#[allow(default_type_param_usage)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate rand;
|
||||
|
||||
|
@ -31,6 +31,7 @@ Rust extras are part of the standard Rust distribution.
|
||||
|
||||
#[feature(macro_rules, globs, managed_boxes, asm, default_type_params)];
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
#[deny(non_camel_case_types)];
|
||||
#[deny(missing_doc)];
|
||||
|
||||
|
@ -90,6 +90,7 @@ pub fn inflate_bytes_zlib(bytes: &[u8]) -> CVec<u8> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[allow(deprecated_owned_vector)];
|
||||
extern crate rand;
|
||||
|
||||
use super::{inflate_bytes, deflate_bytes};
|
||||
|
@ -81,6 +81,7 @@
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
#[allow(missing_doc)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
#[feature(globs)];
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#[crate_type = "rlib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
use std::cell::Cell;
|
||||
use std::{cmp, os, path};
|
||||
|
@ -174,6 +174,7 @@
|
||||
// NB this does *not* include globs, please keep it that way.
|
||||
#[feature(macro_rules)];
|
||||
#[allow(visible_private_types)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate rand;
|
||||
|
||||
|
@ -50,6 +50,7 @@
|
||||
html_root_url = "http://static.rust-lang.org/doc/master")];
|
||||
#[deny(unused_result, unused_must_use)];
|
||||
#[allow(non_camel_case_types)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
// NB this crate explicitly does *not* allow glob imports, please seriously
|
||||
// consider whether they're needed before adding that feature here (the
|
||||
|
@ -14,6 +14,7 @@
|
||||
#[crate_type = "rlib"];
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate rand;
|
||||
|
||||
|
@ -71,6 +71,7 @@ println!("{:?}", tuple_ptr)
|
||||
html_root_url = "http://static.rust-lang.org/doc/master")];
|
||||
|
||||
#[feature(macro_rules, managed_boxes)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
use std::cast;
|
||||
use std::kinds::marker;
|
||||
|
@ -28,6 +28,7 @@ This API is completely unstable and subject to change.
|
||||
html_root_url = "http://static.rust-lang.org/doc/master")];
|
||||
|
||||
#[allow(deprecated)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
#[feature(macro_rules, globs, struct_variant, managed_boxes)];
|
||||
#[feature(quote, default_type_params)];
|
||||
|
||||
|
@ -113,6 +113,8 @@ pub enum Lint {
|
||||
UnusedMustUse,
|
||||
UnusedResult,
|
||||
|
||||
DeprecatedOwnedVector,
|
||||
|
||||
Warnings,
|
||||
}
|
||||
|
||||
@ -397,7 +399,14 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
|
||||
lint: UnusedResult,
|
||||
desc: "unused result of an expression in a statement",
|
||||
default: allow,
|
||||
})
|
||||
}),
|
||||
|
||||
("deprecated_owned_vector",
|
||||
LintSpec {
|
||||
lint: DeprecatedOwnedVector,
|
||||
desc: "use of a `~[T]` vector",
|
||||
default: warn
|
||||
}),
|
||||
];
|
||||
|
||||
/*
|
||||
@ -1107,6 +1116,17 @@ fn check_unused_result(cx: &Context, s: &ast::Stmt) {
|
||||
}
|
||||
}
|
||||
|
||||
fn check_deprecated_owned_vector(cx: &Context, e: &ast::Expr) {
|
||||
let t = ty::expr_ty(cx.tcx, e);
|
||||
match ty::get(t).sty {
|
||||
ty::ty_vec(_, ty::vstore_uniq) => {
|
||||
cx.span_lint(DeprecatedOwnedVector, e.span,
|
||||
"use of deprecated `~[]` vector; replaced by `std::vec_ng::Vec`")
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn check_item_non_camel_case_types(cx: &Context, it: &ast::Item) {
|
||||
fn is_camel_case(ident: ast::Ident) -> bool {
|
||||
let ident = token::get_ident(ident);
|
||||
@ -1634,6 +1654,7 @@ impl<'a> Visitor<()> for Context<'a> {
|
||||
|
||||
check_type_limits(self, e);
|
||||
check_unused_casts(self, e);
|
||||
check_deprecated_owned_vector(self, e);
|
||||
|
||||
visit::walk_expr(self, e, ());
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
#[crate_type = "dylib"];
|
||||
#[crate_type = "rlib"];
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
#[feature(globs, struct_variant, managed_boxes, macro_rules)];
|
||||
|
||||
extern crate syntax;
|
||||
|
@ -166,6 +166,9 @@ fn maketest(s: &str, cratename: &str, loose_feature_gating: bool) -> ~str {
|
||||
let mut prog = ~r"
|
||||
#[deny(warnings)];
|
||||
#[allow(unused_variable, dead_assignment, unused_mut, attribute_usage, dead_code)];
|
||||
|
||||
// FIXME: remove when ~[] disappears from tests.
|
||||
#[allow(deprecated_owned_vector)];
|
||||
";
|
||||
|
||||
if loose_feature_gating {
|
||||
|
@ -42,6 +42,7 @@ via `close` and `delete` methods.
|
||||
#[feature(macro_rules)];
|
||||
#[deny(unused_result, unused_must_use)];
|
||||
#[allow(visible_private_types)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
#[cfg(test)] extern crate green;
|
||||
|
||||
|
@ -33,6 +33,8 @@
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
use std::char;
|
||||
use std::cmp;
|
||||
use std::fmt;
|
||||
|
@ -25,6 +25,7 @@ Core encoding and decoding interfaces.
|
||||
// NOTE remove the following two attributes after the next snapshot.
|
||||
#[allow(unrecognized_lint)];
|
||||
#[allow(default_type_param_usage)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
// test harness access
|
||||
#[cfg(test)]
|
||||
|
@ -65,6 +65,7 @@
|
||||
#[deny(non_camel_case_types)];
|
||||
#[deny(missing_doc)];
|
||||
#[allow(unknown_features)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
// When testing libstd, bring in libuv as the I/O backend so tests can print
|
||||
// things and all of the std::io tests have an I/O interface to run on top
|
||||
|
@ -17,6 +17,8 @@
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
pub use arc::{Arc, MutexArc, RWArc, RWWriteMode, RWReadMode, ArcCondvar, CowArc};
|
||||
pub use sync::{Mutex, RWLock, Condvar, Semaphore, RWLockWriteMode,
|
||||
RWLockReadMode, Barrier, one, mutex};
|
||||
|
@ -32,6 +32,7 @@ This API is completely unstable and subject to change.
|
||||
|
||||
#[allow(deprecated)];
|
||||
#[deny(non_camel_case_types)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate serialize;
|
||||
extern crate term;
|
||||
|
@ -22,6 +22,7 @@
|
||||
#[feature(macro_rules)];
|
||||
#[deny(non_camel_case_types)];
|
||||
#[allow(missing_doc)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate collections;
|
||||
|
||||
|
@ -30,6 +30,7 @@
|
||||
#[crate_type = "dylib"];
|
||||
|
||||
#[feature(asm)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate collections;
|
||||
extern crate extra;
|
||||
|
@ -14,6 +14,7 @@
|
||||
#[license = "MIT/ASL2"];
|
||||
|
||||
#[allow(missing_doc)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
extern crate serialize;
|
||||
|
||||
|
@ -59,6 +59,8 @@ Examples of string representations:
|
||||
#[crate_type = "dylib"];
|
||||
#[license = "MIT/ASL2"];
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
#[feature(default_type_params)];
|
||||
|
||||
// NOTE remove the following two attributes after the next snapshot.
|
||||
|
@ -11,6 +11,7 @@
|
||||
#[deny(unreachable_code)];
|
||||
#[allow(unused_variable)];
|
||||
#[allow(dead_code)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
fn fail_len(v: ~[int]) -> uint {
|
||||
let mut i = 3;
|
||||
|
@ -8,6 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
// Verify the compiler fails with an error on infinite function
|
||||
// recursions.
|
||||
|
17
src/test/compile-fail/lint-deprecated-owned-vector.rs
Normal file
17
src/test/compile-fail/lint-deprecated-owned-vector.rs
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#[deny(deprecated_owned_vector)];
|
||||
|
||||
fn main() {
|
||||
~[1]; //~ ERROR use of deprecated `~[]`
|
||||
//~^ ERROR use of deprecated `~[]`
|
||||
std::vec::with_capacity::<int>(10); //~ ERROR use of deprecated `~[]`
|
||||
}
|
@ -11,6 +11,7 @@
|
||||
#[feature(managed_boxes)];
|
||||
#[forbid(heap_memory)];
|
||||
#[allow(dead_code)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
struct Foo {
|
||||
x: @int //~ ERROR type uses managed
|
||||
|
@ -11,6 +11,7 @@
|
||||
#[feature(globs)];
|
||||
#[deny(unused_imports)];
|
||||
#[allow(dead_code)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
use cal = bar::c::cc;
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
#[allow(dead_assignment)];
|
||||
#[allow(unused_variable)];
|
||||
#[allow(dead_code)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
#[deny(unused_mut)];
|
||||
|
||||
fn main() {
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
#[allow(dead_code)];
|
||||
#[deny(unused_unsafe)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
mod foo {
|
||||
extern {
|
||||
|
@ -13,6 +13,7 @@
|
||||
#[feature(macro_rules)];
|
||||
#[deny(warnings)];
|
||||
#[allow(unused_must_use)];
|
||||
#[allow(deprecated_owned_vector)];
|
||||
|
||||
use std::fmt;
|
||||
use std::io::MemWriter;
|
||||
|
Loading…
Reference in New Issue
Block a user