about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdam Perry <adam.n.perry@gmail.com>2019-10-02 22:35:58 -0700
committerAdam Perry <adam.n.perry@gmail.com>2019-10-07 08:05:33 -0700
commit9900211ea07a419289037b77eda218030dc32db3 (patch)
tree31a7c71b0f6b338610a5ad8ad1b74a087492bd57
parentd931afe47061cb27dfdb44727b0a6707868ea326 (diff)
downloadrust-9900211ea07a419289037b77eda218030dc32db3.tar.gz
rust-9900211ea07a419289037b77eda218030dc32db3.zip
track_caller error numbers and text.
-rw-r--r--src/librustc/error_codes.rs20
-rw-r--r--src/librustc/hir/check_attr.rs4
-rw-r--r--src/librustc_typeck/check/wfcheck.rs2
-rw-r--r--src/librustc_typeck/collect.rs2
-rw-r--r--src/librustc_typeck/error_codes.rs16
-rw-r--r--src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr4
-rw-r--r--src/test/ui/rfc-2091-track-caller/error-with-naked.stderr4
-rw-r--r--src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr4
-rw-r--r--src/test/ui/rfc-2091-track-caller/only-for-fns.stderr4
9 files changed, 32 insertions, 28 deletions
diff --git a/src/librustc/error_codes.rs b/src/librustc/error_codes.rs
index b2671e48be6..6be1b6a54fb 100644
--- a/src/librustc/error_codes.rs
+++ b/src/librustc/error_codes.rs
@@ -1640,16 +1640,6 @@ each method; it is not possible to annotate the entire impl with an `#[inline]`
 attribute.
 "##,
 
-E0900: r##"
-FIXME(anp): change error number
-FIXME(anp): track_caller: invalid syntax
-"##,
-
-E0901: r##"
-FIXME(anp): change error number
-FIXME(anp): track_caller: no naked functions
-"##,
-
 E0522: r##"
 The lang attribute is intended for marking special items that are built-in to
 Rust itself. This includes special traits (like `Copy` and `Sized`) that affect
@@ -2085,6 +2075,15 @@ These attributes are meant to only be used by the standard library and are
 rejected in your own crates.
 "##,
 
+E0736: r##"
+#[track_caller] and #[naked] cannot be applied to the same function.
+
+This is primarily due to ABI incompatibilities between the two attributes.
+See [RFC 2091] for details on this and other limitations.
+
+[RFC 2091]: https://github.com/rust-lang/rfcs/blob/master/text/2091-inline-semantic.md
+"##,
+
 ;
 //  E0006, // merged with E0005
 //  E0101, // replaced with E0282
@@ -2146,4 +2145,5 @@ rejected in your own crates.
     E0726, // non-explicit (not `'_`) elided lifetime in unsupported position
     E0727, // `async` generators are not yet supported
     E0728, // `await` must be in an `async` function or block
+    E0735, // invalid track_caller application/syntax
 }
diff --git a/src/librustc/hir/check_attr.rs b/src/librustc/hir/check_attr.rs
index 66415e26281..35c7ffbf14e 100644
--- a/src/librustc/hir/check_attr.rs
+++ b/src/librustc/hir/check_attr.rs
@@ -143,7 +143,7 @@ impl CheckAttrVisitor<'tcx> {
             struct_span_err!(
                 self.tcx.sess,
                 attr.span,
-                E0900,
+                E0735,
                 "attribute should be applied to function"
             )
             .span_label(item.span, "not a function")
@@ -153,7 +153,7 @@ impl CheckAttrVisitor<'tcx> {
             struct_span_err!(
                 self.tcx.sess,
                 attr.span,
-                E0901,
+                E0736,
                 "cannot use `#[track_caller]` with `#[naked]`",
             )
             .emit();
diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs
index 3c9010de5cb..b8d1da2bbed 100644
--- a/src/librustc_typeck/check/wfcheck.rs
+++ b/src/librustc_typeck/check/wfcheck.rs
@@ -179,7 +179,7 @@ pub fn check_trait_item(tcx: TyCtxt<'_>, def_id: DefId) {
             struct_span_err!(
                 tcx.sess,
                 attr.span,
-                E0903,
+                E0738,
                 "`#[track_caller]` is not supported for trait items yet."
             ).emit();
         }
diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index 0b98e4b781d..7f34aa354c9 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -2599,7 +2599,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, id: DefId) -> CodegenFnAttrs {
                 struct_span_err!(
                     tcx.sess,
                     attr.span,
-                    E0902,
+                    E0737,
                     "rust ABI is required to use `#[track_caller]`"
                 ).emit();
             }
diff --git a/src/librustc_typeck/error_codes.rs b/src/librustc_typeck/error_codes.rs
index 1ebae19c7d9..be1e34661fd 100644
--- a/src/librustc_typeck/error_codes.rs
+++ b/src/librustc_typeck/error_codes.rs
@@ -4908,14 +4908,18 @@ The `Box<...>` ensures that the result is of known size,
 and the pin is required to keep it in the same place in memory.
 "##,
 
-E0902: r##"
-FIXME(anp): change error number
-FIXME(anp): track_caller: require Rust ABI to use track_caller
+E0737: r##"
+#[track_caller] requires functions to have the "Rust" ABI for passing caller
+location. See [RFC 2091] for details on this and other restrictions.
+
+[RFC 2091]: https://github.com/rust-lang/rfcs/blob/master/text/2091-inline-semantic.md
 "##,
 
-E0903: r##"
-FIXME(anp): change error number
-FIXME(anp): track_caller: can't apply in traits
+E0738: r##"
+#[track_caller] cannot be applied to trait methods. See [RFC 2091]
+for details on this and other restrictions.
+
+[RFC 2091]: https://github.com/rust-lang/rfcs/blob/master/text/2091-inline-semantic.md
 "##,
 
 ;
diff --git a/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr b/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr
index fc6f4d17dcc..e39e4bee5cf 100644
--- a/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr
+++ b/src/test/ui/rfc-2091-track-caller/error-with-invalid-abi.stderr
@@ -1,4 +1,4 @@
-error[E0902]: rust ABI is required to use `#[track_caller]`
+error[E0737]: rust ABI is required to use `#[track_caller]`
   --> $DIR/error-with-invalid-abi.rs:3:1
    |
 LL | #[track_caller]
@@ -6,4 +6,4 @@ LL | #[track_caller]
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0902`.
+For more information about this error, try `rustc --explain E0737`.
diff --git a/src/test/ui/rfc-2091-track-caller/error-with-naked.stderr b/src/test/ui/rfc-2091-track-caller/error-with-naked.stderr
index 3566d288ed1..2f5003cfdb7 100644
--- a/src/test/ui/rfc-2091-track-caller/error-with-naked.stderr
+++ b/src/test/ui/rfc-2091-track-caller/error-with-naked.stderr
@@ -1,4 +1,4 @@
-error[E0901]: cannot use `#[track_caller]` with `#[naked]`
+error[E0736]: cannot use `#[track_caller]` with `#[naked]`
   --> $DIR/error-with-naked.rs:3:1
    |
 LL | #[track_caller]
@@ -6,4 +6,4 @@ LL | #[track_caller]
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0901`.
+For more information about this error, try `rustc --explain E0736`.
diff --git a/src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr b/src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr
index bd3d4043a64..e3f3135cd73 100644
--- a/src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr
+++ b/src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr
@@ -1,4 +1,4 @@
-error[E0903]: `#[track_caller]` is not supported for trait items yet.
+error[E0738]: `#[track_caller]` is not supported for trait items yet.
   --> $DIR/error-with-trait-fns.rs:4:5
    |
 LL |     #[track_caller]
@@ -6,4 +6,4 @@ LL |     #[track_caller]
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0903`.
+For more information about this error, try `rustc --explain E0738`.
diff --git a/src/test/ui/rfc-2091-track-caller/only-for-fns.stderr b/src/test/ui/rfc-2091-track-caller/only-for-fns.stderr
index 9ddc99c02bf..ac5ba0bfbaa 100644
--- a/src/test/ui/rfc-2091-track-caller/only-for-fns.stderr
+++ b/src/test/ui/rfc-2091-track-caller/only-for-fns.stderr
@@ -1,4 +1,4 @@
-error[E0900]: attribute should be applied to function
+error[E0735]: attribute should be applied to function
   --> $DIR/only-for-fns.rs:3:1
    |
 LL | #[track_caller]
@@ -8,4 +8,4 @@ LL | struct S;
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0900`.
+For more information about this error, try `rustc --explain E0735`.