about summary refs log tree commit diff
diff options
context:
space:
mode:
authorklutzy <klutzytheklutzy@gmail.com>2013-11-06 12:16:19 +0900
committerklutzy <klutzytheklutzy@gmail.com>2013-11-26 13:13:17 +0900
commit1f7bfac9d28340b3eda0291dd01b7914c77a88ae (patch)
tree3172ab5e859df955ed453f8a6b7603dec054eeab
parent6ff697d3933754bf9ec5ee5875f487f02a7d087d (diff)
downloadrust-1f7bfac9d28340b3eda0291dd01b7914c77a88ae.tar.gz
rust-1f7bfac9d28340b3eda0291dd01b7914c77a88ae.zip
rustc: Add lint for obsolete attributes
This also moves `#[auto_{en,de}code]` checker from syntax to lint.
-rw-r--r--src/librustc/middle/lint.rs12
-rw-r--r--src/libstd/io/native/process.rs1
-rw-r--r--src/libsyntax/ext/auto_encode.rs35
-rw-r--r--src/libsyntax/ext/base.rs8
-rw-r--r--src/libsyntax/lib.rs1
-rw-r--r--src/test/compile-fail/deprecated-auto-code.rs15
6 files changed, 13 insertions, 59 deletions
diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs
index 7ce560055a3..bbb835c2032 100644
--- a/src/librustc/middle/lint.rs
+++ b/src/librustc/middle/lint.rs
@@ -803,6 +803,11 @@ fn check_heap_item(cx: &Context, it: &ast::item) {
 // also make error on obsolete attributes for less confusion.
 fn check_item_attribute_usage(cx: &Context, it: &ast::item) {
     let crate_attrs = ["crate_type", "link", "feature", "no_uv", "no_main", "no_std"];
+    let obsolete_attrs = [
+        ("abi", "extern \"abi\" fn"),
+        ("auto_encode", "#[deriving(Encodable)]"),
+        ("auto_decode", "#[deriving(Decodable)]"),
+    ];
 
     for attr in it.attrs.iter() {
         let name = attr.node.value.name();
@@ -816,6 +821,13 @@ fn check_item_attribute_usage(cx: &Context, it: &ast::item) {
                 cx.span_lint(attribute_usage, attr.span, msg);
             }
         }
+
+        for &(obs_attr, obs_alter) in obsolete_attrs.iter() {
+            if name.equiv(&obs_attr) {
+                cx.span_lint(attribute_usage, attr.span,
+                             format!("obsolete attribute: use `{:s}` instead", obs_alter));
+            }
+        }
     }
 }
 
diff --git a/src/libstd/io/native/process.rs b/src/libstd/io/native/process.rs
index 6aa3ae65fc9..292b0a2e78f 100644
--- a/src/libstd/io/native/process.rs
+++ b/src/libstd/io/native/process.rs
@@ -365,7 +365,6 @@ fn spawn_process_os(prog: &str, args: &[~str],
     use libc::funcs::bsd44::getdtablesize;
 
     mod rustrt {
-        #[abi = "cdecl"]
         extern {
             pub fn rust_unset_sigprocmask();
         }
diff --git a/src/libsyntax/ext/auto_encode.rs b/src/libsyntax/ext/auto_encode.rs
deleted file mode 100644
index c1e7ba60fad..00000000000
--- a/src/libsyntax/ext/auto_encode.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2012 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.
-
-/// Deprecated #[auto_encode] and #[auto_decode] syntax extensions
-
-use ast;
-use codemap::Span;
-use ext::base::*;
-
-pub fn expand_auto_encode(
-    cx: @ExtCtxt,
-    span: Span,
-    _mitem: @ast::MetaItem,
-    in_items: ~[@ast::item]
-) -> ~[@ast::item] {
-    cx.span_err(span, "`#[auto_encode]` is deprecated, use `#[deriving(Encodable)]` instead");
-    in_items
-}
-
-pub fn expand_auto_decode(
-    cx: @ExtCtxt,
-    span: Span,
-    _mitem: @ast::MetaItem,
-    in_items: ~[@ast::item]
-) -> ~[@ast::item] {
-    cx.span_err(span, "`#[auto_decode]` is deprecated, use `#[deriving(Decodable)]` instead");
-    in_items
-}
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs
index 448f8ee88f9..ccb88e0c9c0 100644
--- a/src/libsyntax/ext/base.rs
+++ b/src/libsyntax/ext/base.rs
@@ -143,7 +143,7 @@ pub enum MacResult {
 }
 
 pub enum SyntaxExtension {
-    // #[auto_encode] and such
+    // #[deriving] and such
     ItemDecorator(ItemDecorator),
 
     // Token-tree expanders
@@ -229,12 +229,6 @@ pub fn syntax_expander_table() -> SyntaxEnv {
     syntax_expanders.insert(intern(&"format_args"),
                             builtin_normal_tt_no_ctxt(
                                 ext::format::expand_args));
-    syntax_expanders.insert(
-        intern(&"auto_encode"),
-        @SE(ItemDecorator(ext::auto_encode::expand_auto_encode)));
-    syntax_expanders.insert(
-        intern(&"auto_decode"),
-        @SE(ItemDecorator(ext::auto_encode::expand_auto_decode)));
     syntax_expanders.insert(intern(&"env"),
                             builtin_normal_tt_no_ctxt(
                                     ext::env::expand_env));
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs
index 247be194b90..29ed87f2202 100644
--- a/src/libsyntax/lib.rs
+++ b/src/libsyntax/lib.rs
@@ -83,7 +83,6 @@ pub mod ext {
     pub mod concat;
     pub mod concat_idents;
     pub mod log_syntax;
-    pub mod auto_encode;
     pub mod source_util;
 
     pub mod trace_macros;
diff --git a/src/test/compile-fail/deprecated-auto-code.rs b/src/test/compile-fail/deprecated-auto-code.rs
deleted file mode 100644
index e4576e0f57c..00000000000
--- a/src/test/compile-fail/deprecated-auto-code.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2013 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.
-
-#[auto_encode] //~ ERROR: `#[auto_encode]` is deprecated
-#[auto_decode] //~ ERROR: `#[auto_decode]` is deprecated
-struct A;
-
-fn main() {}