rust/src/test
bors 3fc30d884a Auto merge of #66070 - petrochenkov:regattr, r=matthewjasper
Support registering inert attributes and attribute tools using crate-level attributes

And remove `#[feature(custom_attribute)]`.
(`rustc_plugin::Registry::register_attribute` is not removed yet, I'll do it in a follow up PR.)

```rust
#![register_attr(my_attr)]
#![register_tool(my_tool)]

#[my_attr] // OK
#[my_tool::anything] // OK
fn main() {}
```

---
Some tools (`rustfmt` and `clippy`) used in tool attributes are hardcoded in the compiler.
We need some way to introduce them without hardcoding as well.

This PR introduces a way to do it with a crate level attribute.
The previous attempt to introduce them through command line (https://github.com/rust-lang/rust/pull/57921) met some resistance.

This probably needs to go through an RFC before stabilization.
However, I'd prefer to land *this* PR without an RFC to able to remove `#[feature(custom_attribute)]` and `Registry::register_attribute` while also providing a replacement.

---
`register_attr` is a direct replacement for `#![feature(custom_attribute)]` (https://github.com/rust-lang/rust/issues/29642), except it doesn't rely on implicit fallback from unresolved attributes to custom attributes (which was always hacky and is the primary reason for the removal of `custom_attribute`) and requires registering the attribute explicitly.
It's not clear whether it should go through stabilization or not.
It's quite possible that all the uses should migrate to `#![register_tool]` (https://github.com/rust-lang/rust/issues/66079) instead.

---

Details:
- The naming is `register_attr`/`register_tool` rather than some `register_attributes` (plural, no abbreviation) for consistency with already existing attributes like `cfg_attr`, or `feature`, etc.
---
Previous attempt: https://github.com/rust-lang/rust/pull/57921
cc https://github.com/rust-lang/rust/issues/44690
Tracking issues: #66079 (`register_tool`), #66080 (`register_attr`)
Closes https://github.com/rust-lang/rust/issues/29642
2019-11-10 15:53:35 +00:00
..
assembly
auxiliary
codegen
codegen-units
compile-fail
debuginfo
incremental Rollup merge of #66216 - wesleywiser:const_prop_codegen_improvements, r=oli-obk 2019-11-10 09:27:17 +09:00
mir-opt Auto merge of #66259 - JohnTitor:rollup-x9nk1e2, r=JohnTitor 2019-11-10 02:15:28 +00:00
pretty
run-fail
run-make
run-make-fulldeps rustc_metadata: don't let LLVM confuse rmeta blobs for COFF object files. 2019-11-09 02:06:22 +02:00
run-pass-valgrind
rustdoc Add more --extern tests. 2019-11-07 05:51:17 -08:00
rustdoc-js
rustdoc-js-std
rustdoc-ui
rustfix
ui Auto merge of #66070 - petrochenkov:regattr, r=matthewjasper 2019-11-10 15:53:35 +00:00
ui-fulldeps Auto merge of #66070 - petrochenkov:regattr, r=matthewjasper 2019-11-10 15:53:35 +00:00
COMPILER_TESTS.md