59 Commits

Author SHA1 Message Date
Nikhil Shagrithaya
b7b58ffdf4 Added test for inclusive_range_syntax in compile-fail test suite 2017-02-23 00:50:29 +05:30
Corey Farwell
4a07be3bea Rollup merge of #39834 - cseale:feature-gate-static-recursion, r=est31
static recursion test added to compile-fail test suite

Issue #39059
r? @est31
2017-02-15 23:48:15 -05:00
Colm Seale
cf20d8e23c static recursion test added to compile-fail test suite
Issue #39059
    r? @est31
2017-02-15 20:13:24 +00:00
bors
025c328bf5 Auto merge of #39633 - steveklabnik:vendor-mdbook, r=alexcrichton
Port books to mdbook

Part of https://github.com/rust-lang/rust/issues/39588

blocked on https://github.com/rust-lang/rust/pull/39431

As a first step towards the bookshelf, we ~vendor mdbook in-tree and~ port our books to it. Eventually, both of these books will be moved out-of-tree, but the nightly book will rely on doing the same thing. As such, this intermediate step is useful.

r? @alexcrichton @brson

/cc @azerupi
2017-02-15 01:22:16 +00:00
Corey Farwell
4246f37588 Rollup merge of #39790 - zackw:tidy-linelen-exempt-urls, r=alexcrichton
tidy: exempt URLs from the line length restriction

The length of a URL is usually not under our control, and Markdown
provides no way to split a URL in the middle.  Therefore, comment
lines consisting _solely_ of a URL (possibly with a Markdown link
label in front) should be exempt from the line-length restriction.

Inline hyperlink destinations ( `[foo](http://...)` notation ) are
_not_ exempt, because it is my arrogant opinion that long lines of
that type make the source text illegible.

The patch adds dependencies on the `regex` and `lazy_static` crates
to the tidy utility.  This _appears_ to Just Work, but if you would
rather not have that dependency I am willing to provide a hand-written
parser instead.
2017-02-14 10:07:36 -05:00
Corey Farwell
32b8f4ec98 Rollup merge of #39772 - cseale:staged_api_whitelist_removal, r=est31
Adding compile fail test for staged_api feature

Issue #39059
r? @est31

@est31 running the tests for this feature fails. Is that expected since this is the `compile-fail`suite?

I copied this test from the run-pass suite: `rust/src/test/run-pass/reachable-unnameable-type-alias.rs`. What are the differences between these suites in operation and why they are used?
2017-02-14 10:07:33 -05:00
Colm Seale
07b3a8bd60 Adding compile fail test for staged_api feature
Issue #39059
r? @est31
2017-02-14 00:03:17 +00:00
Eduard-Mihai Burtescu
d29f0bc8fa Automatically vendor Cargo deps when building the source tarballs. 2017-02-14 01:52:03 +02:00
Zack Weinberg
ff4758c2a0 Replace regex-based parser for URL lines with open-coded one. 2017-02-13 15:44:51 -05:00
Steve Klabnik
775726092e Add exceptions to tidy
We've decided that these deps are okay.
2017-02-13 13:41:20 -05:00
Zack Weinberg
5817351048 tidy: exempt URLs from the line length restriction
The length of a URL is usually not under our control, and Markdown
provides no way to split a URL in the middle.  Therefore, comment
lines consisting _solely_ of a URL (possibly with a Markdown link
label in front) should be exempt from the line-length restriction.

Inline hyperlink destinations ( `[foo](http://...)` notation ) are
_not_ exempt, because it is my arrogant opinion that long lines of
that type make the source text illegible.

The patch adds dependencies on the `regex` and `lazy_static` crates
to the tidy utility.  This _appears_ to Just Work, but if you would
rather not have that dependency I am willing to provide a hand-written
parser instead.
2017-02-13 12:33:35 -05:00
Mario
ec4a3cc371 Adding compile fail test for const_indexing feature 2017-02-09 19:39:46 +01:00
Colm Seale
94e9086685 [Gate Tests] - marking feature tests
Removal of the lang feature gate tests whitelist #39059

r? @est31
2017-01-31 00:24:06 +00:00
est31
af46d69b8a Remove Reflect
* Remove the Reflect trait
* Remove the "reflect" lang feature
2017-01-24 23:22:44 +01:00
est31
e3daab037d Remove proc_macro from the tidy whitelist again
PR #38842 has exposed that we were missing the src/test/compile-fail-fulldeps
directory in the search for feature gate tests. Because the detection didn't
work despite the effort to name the test appropriately and add a correct
"// gate-test-proc_macro" comment, proc_macro was added to the whitelist.

We fix this little weakness in the feature gate tidy check and add
the src/test/compile-fail-fulldeps directory to the checked directories.
2017-01-22 23:53:13 +01:00
Colm Seale
ddb6027213 [Gate Tests] - marking feature tests
Removal of the lang feature gate tests whitelist #39059

r? @est31
2017-01-22 16:58:23 +00:00
Alex Crichton
d4d276faaf Rollup merge of #38842 - abonander:proc_macro_attribute, r=jseyfried
Implement `#[proc_macro_attribute]`

This implements `#[proc_macro_attribute]` as described in https://github.com/rust-lang/rfcs/pull/1566

The following major (hopefully non-breaking) changes are included:

* Refactor `proc_macro::TokenStream` to use `syntax::tokenstream::TokenStream`.
    * `proc_macro::tokenstream::TokenStream` no longer emits newlines between items, this can be trivially restored if desired
    * `proc_macro::TokenStream::from_str` does not try to parse an item anymore, moved to `impl MultiItemModifier for CustomDerive` with more informative error message

* Implement `#[proc_macro_attribute]`, which expects functions of the kind `fn(TokenStream, TokenStream) -> TokenStream`
    * Reactivated `#![feature(proc_macro)]` and gated `#[proc_macro_attribute]` under it
    * `#![feature(proc_macro)]` and `#![feature(custom_attribute)]` are mutually exclusive
    * adding `#![feature(proc_macro)]` makes the expansion pass assume that any attributes that are not built-in, or introduced by existing syntax extensions, are proc-macro attributes

* Fix `feature_gate::find_lang_feature_issue()` to not use `unwrap()`

    * This change wasn't necessary for this PR, but it helped debugging a problem where I was using the wrong feature string.

* Move "completed feature gate checking" pass to after "name resolution" pass

    * This was necessary for proper feature-gating of `#[proc_macro_attribute]` invocations when the `proc_macro` feature flag isn't set.

Prototype/Litmus Test: [Implementation](https://github.com/abonander/anterofit/blob/proc_macro/service-attr/src/lib.rs#L13) -- [Usage](https://github.com/abonander/anterofit/blob/proc_macro/service-attr/examples/post_service.rs#L35)
2017-01-20 08:34:30 -08:00
Austin Bonander
375cbd20cf Implement #[proc_macro_attribute]
* Add support for `#[proc_macro]`

* Reactivate `proc_macro` feature and gate `#[proc_macro_attribute]` under it

* Have `#![feature(proc_macro)]` imply `#![feature(use_extern_macros)]`,
error on legacy import of proc macros via `#[macro_use]`
2017-01-16 22:41:22 -08:00
est31
7821ea8391 Mark the pushpop_unsafe feature as "removed"
This marks the pushpop_unsafe feature as removed inside the feature_gate.
It was added in commit 1829fa5199bae5a192c771807c532badce14be37 and then
removed again in commit d399098fd82e0bf3ed61bbbbcdbb0b6adfa4c808 .
Seems that the second commit forgot to mark it as removed in feature_gate.rs.

This enables us to remove another element from the whitelist of non gate
tested unstable lang features (issue #39059).
2017-01-15 02:17:26 +01:00
est31
530b5c860b Remove the safe_suggestion feature
This removes the safe_suggestion feature from feature_gate.rs.
It was added in commit 164f0105bb65f31b89e5fb7f368c9e6f5833a3f8
and then removed again in commit c11fe553df269d6f47b4c48f5c47c08efdd373dc .

As the removal was in the same PR #38099 as the addition, we don't move it to
the "removed" section.

Removes an element from the whitelist of non gate tested unstable lang features (issue #39059).
2017-01-15 02:15:38 +01:00
est31
404572921d Use a whitelist and print nice hints 2017-01-12 23:53:02 +01:00
est31
3f6964e22d Automatically treat test files "feature-gate-$f.rs" as gate tests for feature $f 2017-01-12 23:53:02 +01:00
est31
6795ddf342 Don't require gate tests for removed features 2017-01-12 23:53:02 +01:00
est31
0bcd3b2e79 Add gate-test- to some already existing tests 2017-01-12 23:53:02 +01:00
est31
a13cecacb4 Require compile-fail tests for new lang features
Its non trivial to test lang feature gates, and people
forget to add such tests. So we extend the features lint
of the tidy tool to ensure that all new lang features
contain a new compile-fail test.

Of course, one could drop this requirement and just
grep all tests in run-pass for #![feature(abc)] and
then run this test again, removing the mention,
requiring that it fails.

But this only tests for the existence of a compilation
failure. Manual tests ensure that also the correct lines
spawn the error, and also test the actual error message.

For library features, it makes no sense to require such
a test, as here code is used that is generic for all
library features.
2017-01-12 23:53:02 +01:00
est31
e8b6d3cc9e Use only one feature struct, and use hash maps in both occasions 2017-01-12 23:53:02 +01:00
est31
317810d4c4 Always use Rust based intrinsics on Windows
The check inside compiler-rt file int_types.h to #define CRT_HAS_128BIT
looks like:

 #if (defined(__LP64__) || defined(__wasm__)) && \
     !(defined(__mips__) && defined(__clang__))
 #define CRT_HAS_128BIT
 #endif

Windows uses LLP64 instead of LP64, so it doesn't ship with the C based
intrinsics.

Also, add libcompiler_builtins to the list of crates that may have platform
specific checks (like the ones we just added).
2016-12-30 15:17:28 +01:00
Zack M. Davis
ca376049ca tidy features: use 2-parameter form of internal try macro for open err
This tiny patch merely applies @bluss's suggestion for how to get a more
informative error message when the feature check can't open a file, a
matter that had briefly annoyed the present author, leading to the
filing of #38417.
2016-12-16 17:45:59 -08:00
Brian Anderson
5e3be09b58 Check the license of vendored deps 2016-12-10 23:27:42 +00:00
Alex Crichton
31a8638e5e rustbuild: Tweak for vendored dependencies
A few changes are included here:

* The `winapi` and `url` dependencies were dropped. The source code for these
  projects is pretty weighty, and we're about to vendor them, so let's not
  commit to that intake just yet. If necessary we can vendor them later but for
  now it shouldn't be necessary.

* The `--frozen` flag is now always passed to Cargo, obviating the need for
  tidy's `cargo_lock` check.

* Tidy was updated to not check the vendor directory

Closes #34687
2016-11-08 07:32:05 -08:00
Brian Anderson
6135cbc9e2 std: Flatten the num directory to reflect the module layout
This makes it dissimilar to how core is structured on disk, but
more predictable on its own.
2016-11-01 17:08:24 +00:00
Brian Anderson
ca30691813 std: Move sys_common to libstd/sys_common
Make the directory structure reflect the module structure. I've always
found the existing structure confusing.
2016-11-01 17:08:24 +00:00
Brian Anderson
f3a709dc52 std: Move platform-specific out of sys_common::util 2016-11-01 17:08:24 +00:00
Brian Anderson
219c018894 std: Move platform-specific code out of libstd/lib.rs 2016-11-01 17:08:24 +00:00
Brian Anderson
6d54cd4b2c std: Move a plattform-specific constant to sys::stdio 2016-11-01 17:08:24 +00:00
Brian Anderson
568840707c std: Move elf TLS to sys::fast_thread_local 2016-11-01 17:08:24 +00:00
Tamir Duberstein
bef1911b15
tidy/features: fix checking of lang features
Removes the `STATUSES` static which duplicates truth from the pattern
match in `collect_lang_features`.

Fixes existing duplicates by renaming:
- never_type{,_impls} on `impl`s on `!`
- concat_idents{,_macro} on `macro_rules! concat_idents`

Fixes #37013.
2016-10-27 21:35:57 -04:00
Tamir Duberstein
7367db6fcc
tidy/bins: fix false positive on non checked-in binary
`git ls-files` now exits zero when called with a missing file; check
that the file is included in the output before reporting a checked-in
binary. Observed with git 2.10.1 and tripped by a symlink created by
tests:

src/test/run-make/issue-26006/out/time/deps/liblibc.rlib -> out/libc/liblibc.rlib
2016-10-27 21:35:57 -04:00
Ahmed Charles
9ca382f95f Use workspaces and switch to a single Cargo.lock.
This involves hacking the code used to run cargo test on various
packages, because it reads Cargo.lock to determine which packages should
be tested. This change implements a blacklist, since that will catch new
crates when they are added in the future.
2016-10-07 12:04:32 -07:00
Alex Crichton
2148bdfcc7 rustc: Rename rustc_macro to proc_macro
This commit blanket renames the `rustc_macro` infrastructure to `proc_macro`,
which reflects the general consensus of #35900. A follow up PR to Cargo will be
required to purge the `rustc-macro` name as well.
2016-10-06 11:07:23 -07:00
Brian Anderson
4d76ac8492 Move platform-specific arg handling to sys::args 2016-10-02 14:52:30 -07:00
Brian Anderson
29e0235415 Add a platform-abstraction tidy script
This is intended to maintain existing standards of code organization
in hopes that the standard library will continue to be refactored to
isolate platform-specific bits, making porting easier; where "standard
library" roughly means "all the dependencies of the std and test
crates".

This generally means placing restrictions on where `cfg(unix)`,
`cfg(windows)`, `cfg(target_os)` and `cfg(target_env)` may appear,
the basic objective being to isolate platform-specific code to the
platform-specific `std::sys` modules, and to the allocation,
unwinding, and libc crates.

Following are the basic rules, though there are currently
exceptions:

- core may not have platform-specific code
- liballoc_system may have platform-specific code
- liballoc_jemalloc may have platform-specific code
- libpanic_abort may have platform-specific code
- libpanic_unwind may have platform-specific code
- other crates in the std facade may not
- std may have platform-specific code in the following places
  - sys/unix/
  - sys/windows/
  - os/

There are plenty of exceptions today though, noted in the whitelist.
2016-10-02 14:52:15 -07:00
Mark-Simulacrum
50dad3f1fd Skip binary tidy check when on Windows Linux Subsystem
While it's possible that other linux systems will include "Microsoft" in
their /proc/version, this is deemed unlikely, and since this is a tidy
check, will likely be caught by buildbot/travis either way.
2016-09-24 21:08:29 -06:00
Mark-Simulacrum
be8df50c9f Check that executable file is in-tree before failing tidy check. 2016-08-19 22:32:40 -06:00
bors
1bf5fa3269 Auto merge of #35538 - cgswords:libproc_macro, r=nrc
Kicking off libproc_macro

This PR introduces `libproc_macro`, which is currently quite bare-bones (just a few macro construction tools and an initial `quote!` macro).

This PR also introduces a few test cases for it, and an additional `shim` file (at `src/libsyntax/ext/proc_macro_shim.rs` to allow a facsimile usage of Macros 2.0 *today*!
2016-08-16 16:35:10 -07:00
cgswords
98c8e0a05d Proc_macro is alive 2016-08-16 13:17:36 -07:00
Diggory Blake
b3908d08ee Fix make-tidy lock file checks 2016-08-13 22:36:04 +01:00
Guillaume Gomez
8dc79ecd13 Update make tidy 2016-07-11 23:24:49 +02:00
Alex Crichton
fa45670ce4 mk: Prepare for a new stage0 compiler
This commit prepares the source for a new stage0 compiler, the 1.10.0 beta
compiler. These artifacts are hot off the bots and should be ready to go.
2016-05-31 16:11:49 -07:00
Eduard Burtescu
5541fdfcd1 Use symlink_metadata in tidy to avoid panicking on broken symlinks. 2016-05-11 20:09:50 +03:00