rust/src/test/pretty
Brian Anderson c27133e2ce Preliminary feature staging
This partially implements the feature staging described in the
[release channel RFC][rc]. It does not yet fully conform to the RFC as
written, but does accomplish its goals sufficiently for the 1.0 alpha
release.

It has three primary user-visible effects:

* On the nightly channel, use of unstable APIs generates a warning.
* On the beta channel, use of unstable APIs generates a warning.
* On the beta channel, use of feature gates generates a warning.

Code that does not trigger these warnings is considered 'stable',
modulo pre-1.0 bugs.

Disabling the warnings for unstable APIs continues to be done in the
existing (i.e. old) style, via `#[allow(...)]`, not that specified in
the RFC. I deem this marginally acceptable since any code that must do
this is not using the stable dialect of Rust.

Use of feature gates is itself gated with the new 'unstable_features'
lint, on nightly set to 'allow', and on beta 'warn'.

The attribute scheme used here corresponds to an older version of the
RFC, with the `#[staged_api]` crate attribute toggling the staging
behavior of the stability attributes, but the user impact is only
in-tree so I'm not concerned about having to make design changes later
(and I may ultimately prefer the scheme here after all, with the
`#[staged_api]` crate attribute).

Since the Rust codebase itself makes use of unstable features the
compiler and build system to a midly elaborate dance to allow it to
bootstrap while disobeying these lints (which would otherwise be
errors because Rust builds with `-D warnings`).

This patch includes one significant hack that causes a
regression. Because the `format_args!` macro emits calls to unstable
APIs it would trigger the lint.  I added a hack to the lint to make it
not trigger, but this in turn causes arguments to `println!` not to be
checked for feature gates. I don't presently understand macro
expansion well enough to fix. This is bug #20661.

Closes #16678

[rc]: https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md
2015-01-07 15:34:56 -08:00
..
asm-clobbers.rs syntax: Make asm! clobbers a proper vector. 2014-11-30 11:58:23 +09:00
asm-options.rs pprust: Fix asm options 2014-12-22 13:37:10 +09:00
attr-fn-inner.rs
blank-lines.rs Allow use of [_ ; n] syntax for fixed length and repeating arrays. 2014-12-20 15:23:29 +13:00
block-comment-multiple-asterisks.rs
block-comment-trailing-whitespace2.rs
block-comment-trailing-whitespace.rs
block-comment-wchar.pp libsyntax: Forbid escapes in the inclusive range \x80-\xff in 2014-11-04 14:58:11 -08:00
block-comment-wchar.rs libsyntax: Forbid escapes in the inclusive range \x80-\xff in 2014-11-04 14:58:11 -08:00
block-disambig.rs librustc: Make Copy opt-in. 2014-12-08 13:47:44 -05:00
closure-reform-pretty.rs fix pretty tests 2015-01-05 17:22:17 -05:00
disamb-stmt-expr.rs fix pretty tests 2015-01-05 17:22:17 -05:00
do1.rs fix pretty tests 2015-01-05 17:22:17 -05:00
doc-comments.rs
empty-impl.pp
empty-impl.rs
empty-lines.rs
example1.rs
example2.pp
example2.rs
fn-types.rs fix pretty tests 2015-01-05 17:22:17 -05:00
for-comment.rs
issue-929.rs Rename fail! to panic! 2014-10-29 11:43:07 -04:00
issue-4264.pp Preliminary feature staging 2015-01-07 15:34:56 -08:00
issue-4264.rs test fallout from isize/usize 2015-01-06 16:48:33 -05:00
issue-19077.rs Fixes to the roll-up 2014-11-23 15:23:39 -05:00
let.rs Add a pretty-print test 2015-01-02 22:28:53 +09:00
match-block-expr.rs
match-naked-expr-medium.rs
match-naked-expr.rs
path-type-bounds.rs
raw-str-nonexpr.rs
record-trailing-comma.rs
struct-pattern.rs
struct-tuple.rs
tag-blank-lines.rs
trait-polarity.rs Put negative trait implemtations behind a feature gate 2015-01-04 23:16:14 +01:00
trait-safety.rs Parse unsafe impl but don't do anything particularly interesting with the results. 2014-12-14 11:11:55 -05:00
unary-op-disambig.rs
vec-comments.pp
vec-comments.rs
where-clauses.rs patch up pretty-printing test 2014-12-20 08:41:33 -05:00