]> git.lizzy.rs Git - rust.git/commitdiff
syntax: make old `#[deriving_foo]` attribute obsolete
authorAndrew Paseltiner <apaseltiner@gmail.com>
Wed, 20 Mar 2013 15:50:28 +0000 (11:50 -0400)
committerAndrew Paseltiner <apaseltiner@gmail.com>
Fri, 22 Mar 2013 11:15:13 +0000 (07:15 -0400)
src/libsyntax/ext/base.rs
src/libsyntax/ext/deriving/clone.rs
src/libsyntax/ext/deriving/eq.rs
src/libsyntax/ext/deriving/iter_bytes.rs
src/test/compile-fail/deriving-obsolete.rs [new file with mode: 0644]

index 34e4d8c73e72c51a9f9d57563a0d60cdb8d0e779..50f89d37fae8e0576822e2d373a749e4e5ba4bae 100644 (file)
@@ -153,13 +153,13 @@ fn builtin_item_tt(f: SyntaxExpanderTTItemFun) -> @Transformer {
                                 ext::deriving::expand_meta_deriving)));
     syntax_expanders.insert(@~"deriving_eq",
                             @SE(ItemDecorator(
-                                ext::deriving::eq::expand_deriving_eq)));
+                                ext::deriving::eq::expand_deriving_obsolete)));
     syntax_expanders.insert(@~"deriving_iter_bytes",
                             @SE(ItemDecorator(
-                                ext::deriving::iter_bytes::expand_deriving_iter_bytes)));
+                                ext::deriving::iter_bytes::expand_deriving_obsolete)));
     syntax_expanders.insert(@~"deriving_clone",
                             @SE(ItemDecorator(
-                                ext::deriving::clone::expand_deriving_clone)));
+                                ext::deriving::clone::expand_deriving_obsolete)));
 
     // Quasi-quoting expanders
     syntax_expanders.insert(@~"quote_tokens",
index 072cd0f6c39b2f249732a50a01a4bea98f5b595d..4ab83cb5f1e42e49f842bcb030a7d3bd6c15911f 100644 (file)
@@ -39,6 +39,15 @@ pub fn expand_deriving_clone(cx: @ext_ctxt,
                     expand_deriving_clone_enum_def)
 }
 
+pub fn expand_deriving_obsolete(cx: @ext_ctxt,
+                                span: span,
+                                _mitem: @meta_item,
+                                in_items: ~[@item])
+                             -> ~[@item] {
+    cx.span_err(span, ~"`#[deriving_clone]` is obsolete; use `#[deriving(Clone)]` instead");
+    in_items
+}
+
 fn create_derived_clone_impl(cx: @ext_ctxt,
                              span: span,
                              type_ident: ident,
index 6213eeca13461e37f66c39557c0d9324d080c259..5e94134f70afe020ffc5a6dfcbf70f3516872643 100644 (file)
@@ -53,6 +53,15 @@ pub fn expand_deriving_eq(cx: @ext_ctxt,
                     expand_deriving_eq_enum_def)
 }
 
+pub fn expand_deriving_obsolete(cx: @ext_ctxt,
+                                span: span,
+                                _mitem: @meta_item,
+                                in_items: ~[@item])
+                             -> ~[@item] {
+    cx.span_err(span, ~"`#[deriving_eq]` is obsolete; use `#[deriving(Eq)]` instead");
+    in_items
+}
+
 /// Creates a method from the given expression, the signature of which
 /// conforms to the `eq` or `ne` method.
 fn create_eq_method(cx: @ext_ctxt,
index 613e9c295eb74db978dbafe8986bea73b4dae6cb..75d7b396c7e15a7de811b6e00df770099cc059b3 100644 (file)
@@ -39,6 +39,16 @@ pub fn expand_deriving_iter_bytes(cx: @ext_ctxt,
                     expand_deriving_iter_bytes_enum_def)
 }
 
+pub fn expand_deriving_obsolete(cx: @ext_ctxt,
+                                span: span,
+                                _mitem: @meta_item,
+                                in_items: ~[@item])
+                             -> ~[@item] {
+    cx.span_err(span, ~"`#[deriving_iter_bytes]` is obsolete; use `#[deriving(IterBytes)]` \
+                        instead");
+    in_items
+}
+
 fn create_derived_iter_bytes_impl(cx: @ext_ctxt,
                                   span: span,
                                   type_ident: ident,
diff --git a/src/test/compile-fail/deriving-obsolete.rs b/src/test/compile-fail/deriving-obsolete.rs
new file mode 100644 (file)
index 0000000..298dced
--- /dev/null
@@ -0,0 +1,17 @@
+// 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.
+
+#[deriving_clone] //~ ERROR `#[deriving_clone]` is obsolete; use `#[deriving(Clone)]` instead
+#[deriving_eq] //~ ERROR `#[deriving_eq]` is obsolete; use `#[deriving(Eq)]` instead
+#[deriving_iter_bytes]
+//~^ ERROR `#[deriving_iter_bytes]` is obsolete; use `#[deriving(IterBytes)]` instead
+struct Foo;
+
+pub fn main() { }