Skip to content

Commit

Permalink
track_caller error numbers and text.
Browse files Browse the repository at this point in the history
  • Loading branch information
anp committed Oct 3, 2019
1 parent da86007 commit 8ac9104
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 28 deletions.
20 changes: 10 additions & 10 deletions src/librustc/error_codes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1727,16 +1727,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
Expand Down Expand Up @@ -2244,6 +2234,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
Expand Down Expand Up @@ -2306,4 +2305,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
}
4 changes: 2 additions & 2 deletions src/librustc/hir/check_attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -153,7 +153,7 @@ impl CheckAttrVisitor<'tcx> {
struct_span_err!(
self.tcx.sess,
attr.span,
E0901,
E0736,
"cannot use `#[track_caller]` with `#[naked]`",
)
.emit();
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_typeck/check/wfcheck.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_typeck/collect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2601,7 +2601,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();
}
Expand Down
16 changes: 10 additions & 6 deletions src/librustc_typeck/error_codes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
"##,

;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
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]
| ^^^^^^^^^^^^^^^

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`.
4 changes: 2 additions & 2 deletions src/test/ui/rfc-2091-track-caller/error-with-naked.stderr
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
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]
| ^^^^^^^^^^^^^^^

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`.
4 changes: 2 additions & 2 deletions src/test/ui/rfc-2091-track-caller/error-with-trait-fns.stderr
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
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]
| ^^^^^^^^^^^^^^^

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`.
4 changes: 2 additions & 2 deletions src/test/ui/rfc-2091-track-caller/only-for-fns.stderr
Original file line number Diff line number Diff line change
@@ -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]
Expand All @@ -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`.

0 comments on commit 8ac9104

Please sign in to comment.