Commit graph

19551 commits

Author SHA1 Message Date
Simonas Kazlauskas
d45378216b Change align_offset to support different strides
This is necessary if we want to implement `[T]::align_to` and is more
useful in general.

This implementation effort has begun during the All Hands and represents
a month of my futile efforts to do any sort of maths. Luckily, I
found the very very nice Chris McDonald (cjm) on IRC who figured out the
core formulas for me! All the thanks for existence of this PR go to
them!

Anyway… Those formulas were mangled by yours truly into the arcane forms
you see here to squeeze out the best assembly possible on most of the
modern architectures (x86 and ARM were evaluated in practice). I mean,
just look at it: *one actual* modulo operation and everything else is
just the cheap single cycle ops! Admitedly, the naive solution might be
faster in some common scenarios, but this code absolutely butchers the
naive solution on the worst case scenario.

Alas, the result of this arcane magic also means that the code pretty
heavily relies on the preconditions holding true and breaking those
preconditions will unleash the UB-est of all UBs! So don’t.
2018-05-17 22:46:02 +03:00
Irina Popa
b63d7e2b1c Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
bors
e3150564f8 Auto merge of #50400 - ehuss:compiletest-revisions, r=alexcrichton
compiletest: Run revisions as independent tests.

Fixes #47604.

- The output of each test is now in its own directory.
- "auxiliary" output is now under the respective test directory.
- `stage_id` removed from filenames, and instead placed in the stamp file as a hash.  This helps keep path lengths down for Windows.

In brief, the new layout looks like this:
```
<build_base>/<relative_dir>/<testname>.<revision>.<mode>/
    stamp
    <testname>.err
    <testname>.out
    a (binary)
    auxiliary/lib<auxname>.dylib
    auxiliary/<auxname>/<auxname>.err
    auxiliary/<auxname>/<auxname>.out
```
(revision and mode are optional)
2018-05-17 08:29:11 +00:00
Eric Huss
6f414b1408 Fix update-references for tests within subdirectories. 2018-05-16 22:25:20 -07:00
Eric Huss
e3d8fc5044 compiletest: Run revisions as independent tests.
- The output of each test is now in its own directory.
- "auxiliary" output is now under the respective test directory.
- `stage_id` removed from filenames, and instead placed in the stamp file as a hash.  This helps keep path lengths down for Windows.

In brief, the new layout looks like this:
```
<build_base>/<relative_dir>/<testname>.<revision>.<mode>/
    stamp
    <testname>.err
    <testname>.out
    a (binary)
    auxiliary/lib<auxname>.dylib
    auxiliary/<auxname>/<auxname>.err
    auxiliary/<auxname>/<auxname>.out
```
(revision and mode are optional)
2018-05-16 22:25:20 -07:00
bors
ed9a29a976 Auto merge of #50665 - alexcrichton:fix-single-item-path-warnings, r=oli-obk
rustc: Fix `crate` lint for single-item paths

This commit fixes recommending the `crate` prefix when migrating to 2018 for
paths that look like `use foo;` or `use {bar, baz}`

Closes #50660
2018-05-17 05:00:14 +00:00
bors
b559710e58 Auto merge of #50807 - kennytm:rollup, r=kennytm
Rollup of 17 pull requests

Successful merges:

 - #50170 (Implement From for more types on Cow)
 - #50638 (Don't unconditionally set CLOEXEC twice on every fd we open on Linux)
 - #50656 (Fix `fn main() -> impl Trait` for non-`Termination` trait)
 - #50669 (rustdoc: deprecate `#![doc(passes, plugins, no_default_passes)]`)
 - #50726 (read2: Use inner function instead of closure)
 - #50728 (Fix rustdoc panic with `impl Trait` in type parameters)
 - #50736 (env: remove unwrap in examples in favor of try op)
 - #50740 (Remove LazyBTreeMap.)
 - #50752 (Add missing error codes in libsyntax-ext asm)
 - #50779 (Make mutable_noalias and arg_align_attributes be tracked)
 - #50787 (Fix run-make wasm tests)
 - #50788 (Fix an ICE when casting a nonexistent const)
 - #50789 (Ensure libraries built in stage0 have unique metadata)
 - #50793 (tidy: Add a check for empty UI test files)
 - #50797 (fix a typo in signed-integer::from_str_radix())
 - #50808 (Stabilize num::NonZeroU*)
 - #50809 (GitHub: Stop treating Cargo.lock as a generated file.)

Failed merges:
2018-05-17 02:05:39 +00:00
kennytm
02aedec722
Rollup merge of #50808 - SimonSapin:nonzero, r=alexcrichton
Stabilize num::NonZeroU*

Tracking issue: https://github.com/rust-lang/rust/issues/49137
2018-05-17 05:18:21 +08:00
kennytm
63ea42fd3c
Rollup merge of #50793 - jrlusby:master, r=petrochenkov
tidy: Add a check for empty UI test files

Check for empty `.stderr` and `.stdout` files in UI test directories.
Empty files could  still pass testing for `compile-pass` tests with no output
so they can get into the repo accidentally, but they are not necessary and can
be removed.

This is very much an in progress pull request. I'm having an issue with rustfmt. It wanted to reformat the entire file for almost every file by default. And when I run tidy it just errors out because it catches the empty files that are already in the repo.

My next step is goin got be to remove those empty file and see if running tidy again will actually reformat things outside of the context of `cargo fmt`

Fixes https://github.com/rust-lang/rust/issues/50785
2018-05-17 05:18:19 +08:00
kennytm
d3bf72142c
Rollup merge of #50788 - varkor:missing-const-cast, r=cramertj
Fix an ICE when casting a nonexistent const

Fixes https://github.com/rust-lang/rust/issues/50599.
2018-05-17 05:18:16 +08:00
kennytm
9ced69dd57
Rollup merge of #50787 - ehuss:fix-run-make-wasm, r=alexcrichton
Fix run-make wasm tests

Fixes #50711
2018-05-17 05:18:14 +08:00
kennytm
39129a5492
Rollup merge of #50752 - GuillaumeGomez:more-error-code-in-libsyntax-ext, r=frewsxcv
Add missing error codes in libsyntax-ext asm
2018-05-17 05:18:12 +08:00
kennytm
539a376c7e
Rollup merge of #50728 - sinkuu:fix_50702, r=GuillaumeGomez
Fix rustdoc panic with `impl Trait` in type parameters

Fixes #50702.

I'm not sure `impl Trait`s neither in arguments nor in return types are supposed to work, though.
2018-05-17 05:18:08 +08:00
bors
2f2a11dfc4 Auto merge of #50710 - Zoxc:value_to_constvalue, r=oli-obk
Fix conversion from Miri Value to ConstValue

This fixes an error compiling the `immeta` 0.3.6 crate. https://github.com/rust-lang/rust/issues/50707 may be fixed too.

r? @oli-obk
2018-05-16 21:01:31 +00:00
Jane Lusby
6ed200aaea Remove empty file introduced by rebase 2018-05-16 10:21:15 -07:00
Jane Lusby
16adb0c725 Remove empty files 2018-05-16 10:19:45 -07:00
Simon Sapin
89d9ca9b50 Stabilize num::NonZeroU*
Tracking issue: https://github.com/rust-lang/rust/issues/49137
2018-05-16 19:11:31 +02:00
Simon Sapin
ee85bfdcc2 Make core::nonzero private
It is now an implementation detail of ptr::NonNull and num::NonZero*
2018-05-16 19:08:41 +02:00
kennytm
5074a7e130
Rollup merge of #50669 - QuietMisdreavus:deprecated-attrs, r=GuillaumeGomez
rustdoc: deprecate `#![doc(passes, plugins, no_default_passes)]`

Closes https://github.com/rust-lang/rust/issues/48164

Blocked on https://github.com/rust-lang/rust/pull/50541 - this includes those changes, which were necessary to create the UI test

cc https://github.com/rust-lang/rust/issues/44136

Turns out, there were special attributes to mess with rustdoc passes and plugins! Who knew! Since we deprecated the CLI flags for this functionality, it makes sense that we do the same for the attributes.

This PR also introduces a `#![doc(document_private_items)]` attribute, to match the `--document-private-items` flag introduced in https://github.com/rust-lang/rust/pull/44138 when the passes/plugins flags were deprecated.

I haven't done a search to see whether these attributes are being used at all, but if the flags were any indication, i don't expect to see any users of these.
2018-05-16 23:22:48 +08:00
kennytm
5cc6fd35c1
Rollup merge of #50656 - leodasvacas:fix-impl-trait-in-main-ret, r=nikomatsakis
Fix `fn main() -> impl Trait` for non-`Termination` trait

Fixes #50595.

This bug currently affects stable. Why I think we can go for hard error:
- It will in stable for at most one cycle and there is no legitimate reason to abuse it, nor any known uses in the wild.
- It only affects `bin` crates (which have a `main`), so there is little practical difference between a hard error or a deny lint, both are a one line fix.

The fix was to just unshadow a variable. Thanks @nikomatsakis for the mentoring!

r? @nikomatsakis
2018-05-16 23:22:47 +08:00
bors
0e325d0141 Auto merge of #50045 - est31:label_break_value, r=eddyb
Implement label break value (RFC 2046)

Implement label-break-value (#48594).
2018-05-16 14:22:17 +00:00
est31
dfa98318e1 Add feature gate label_break_value 2018-05-16 13:58:41 +02:00
est31
128f2b5870 Test that label break value only works on actual blocks 2018-05-16 13:56:25 +02:00
est31
f8c2598dfc Add E0696 for continue pointing to a labeled block 2018-05-16 13:56:25 +02:00
est31
63ef53f21d Add E0695 for unlabeled breaks 2018-05-16 13:56:24 +02:00
est31
5665980ad8 Make the compiler support the label-break-value feature
No error checking or feature gating yet
2018-05-16 13:56:24 +02:00
est31
ebca9c6ab9 Add a file with test cases 2018-05-16 13:56:24 +02:00
bors
2a3f5367a2 Auto merge of #50473 - petrochenkov:pmapi, r=alexcrichton
Review proc macro API 1.2

cc https://github.com/rust-lang/rust/issues/38356

Summary of applied changes:
- Documentation for proc macro API 1.2 is expanded.
- Renamed APIs: `Term` -> `Ident`, `TokenTree::Term` -> `TokenTree::Ident`, `Op` -> `Punct`, `TokenTree::Op` -> `TokenTree::Punct`, `Op::op` -> `Punct::as_char`.
- Removed APIs: `Ident::as_str`, use `Display` impl for `Ident` instead.
- New APIs (not stabilized in 1.2): `Ident::new_raw` for creating a raw identifier (I'm not sure `new_x` it's a very idiomatic name though).
- Runtime changes:
    - `Punct::new` now ensures that the input `char` is a valid punctuation character in Rust.
    - `Ident::new` ensures that the input `str` is a valid identifier in Rust.
    - Lifetimes in proc macros are now represented as two joint tokens - `Punct('\'', Spacing::Joint)` and `Ident("lifetime_name_without_quote")` similarly to multi-character operators.
- Stabilized APIs: None yet.

A bit of motivation for renaming (although it was already stated in the review comments):
- With my compiler frontend glasses on `Ident` is the single most appropriate name for this thing, *especially* if we are doing input validation on construction. `TokenTree::Ident` effectively wraps `token::Ident` or `ast::Ident + is_raw`, its meaning is "identifier" and it's already named `ident` in declarative macros.
- Regarding `Punct`, the motivation is that `Op` is actively misleading. The thing doesn't mean an operator, it's neither a subset of operators (there is non-operator punctuation in the language), nor superset (operators can be multicharacter while this thing is always a single character). So I named it `Punct` (first proposed in [the original RFC](https://github.com/rust-lang/rfcs/pull/1566), then [by @SimonSapin](https://github.com/rust-lang/rust/issues/38356#issuecomment-276676526)) , together with input validation it's now a subset of ASCII punctuation character category (`u8::is_ascii_punctuation`).
2018-05-16 11:18:05 +00:00
bors
448cc578a9 Auto merge of #48557 - matthewjasper:allow-trvial-bounds, r=nikomatsakis
Implement RFC 2056 trivial constraints in where clauses

This is an implementation of the new behaviour for #48214. Tests are mostly updated to show the effects of this. Feature gate hasn't been added yet.

Some things that are worth noting and are maybe not want we want

* `&mut T: Copy` doesn't allow as much as someone might expect because there is often an implicit reborrow.
* ~There isn't a check that a where clause is well-formed any more, so `where Vec<str>: Debug` is now allowed (without a `str: Sized` bound).~

r? @nikomatsakis
2018-05-16 09:03:38 +00:00
Shotaro Yamada
7eefe2b473 Fix rustdoc panic with impl Trait in type parameters 2018-05-16 11:03:02 +09:00
varkor
a4224ebe8a Fix an ICE when casting a nonexistent const 2018-05-16 00:43:43 +01:00
Eric Huss
a90a963265 Fix run-make wasm tests
Fixes #50711
2018-05-15 16:39:21 -07:00
bors
e44fc6c52d Auto merge of #48523 - varkor:generics-ty-generalisations, r=nikomatsakis
The Great Generics Generalisation: Ty Edition

Part of the generic parameter refactoring effort, split off from https://github.com/rust-lang/rust/pull/48149. Contains the `ty`-relative refactoring.

r? @eddyb
2018-05-15 23:03:04 +00:00
Vadim Petrochenkov
dab8c0ab28 Fix stability annotations for already stable bits of proc macro API 1.1
Remove unnecessary proc-macro-related `feature`s
2018-05-16 00:09:15 +03:00
Vadim Petrochenkov
c106125431 Represent lifetimes as two joint tokens in proc macros 2018-05-15 23:54:08 +03:00
Vadim Petrochenkov
780616ed74 proc_macro: Validate inputs to Punct::new and Ident::new 2018-05-15 23:24:16 +03:00
Vadim Petrochenkov
47d4089e10 TokenTree: Op -> Punct, Term -> Ident 2018-05-15 23:24:16 +03:00
Alex Crichton
dff9ee1d74 rustc: Fix crate lint for single-item paths
This commit fixes recommending the `crate` prefix when migrating to 2018 for
paths that look like `use foo;` or `use {bar, baz}`

Closes #50660
2018-05-15 08:05:34 -07:00
varkor
25bf73d31c Update bad-annotation error message 2018-05-15 14:21:32 +01:00
bors
27acb9b3c0 Auto merge of #50769 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 11 pull requests

Successful merges:

 - #49767 (Rewrite docs for `std::ptr`)
 - #50399 (save-analysis: handle aliasing imports a bit more nicely)
 - #50594 (Update the man page with additional --print options)
 - #50613 (Migrate the toolstate update bot to rust-highfive)
 - #50632 (Add minification process)
 - #50685 (ci: Add Dockerfile for dist-sparc64-linux)
 - #50691 (rustdoc: Add support for pub(restricted))
 - #50712 (Improve eager type resolution error message)
 - #50720 (Add “Examples” section header in f32/f64 doc comments.)
 - #50733 (Hyperlink DOI against preferred resolver)
 - #50745 (Uncapitalize "You")

Failed merges:
2018-05-15 13:14:08 +00:00
Guillaume Gomez
30d950231e Add missing error codes in libsyntax-ext asm 2018-05-15 14:29:57 +02:00
Guillaume Gomez
7c7941dc26
Rollup merge of #50712 - leodasvacas:improve-eager-resolution-error-message, r=estebank
Improve eager type resolution error message

This PR improves the span of eager resolution type errors referring to indexing and field access to use the base span rather than the whole expression.

Also a "note: type must be known at this point" is added where in the past we emitted the "type must be known at this context" error, so that early failures can be differentiated and will hopefully be less surprising.

Fixes #50692 (or at least does the best we can for the moment)

r? @estebank
2018-05-15 14:27:02 +02:00
Guillaume Gomez
6dc4971cf8
Rollup merge of #50691 - ollie27:rustdoc_pub_restricted, r=QuietMisdreavus
rustdoc: Add support for pub(restricted)

This is useful when using `--document-private-items`.

r? @QuietMisdreavus
2018-05-15 14:27:01 +02:00
Matthew Jasper
dc8ce4c139 Update existing tests for trivial bounds changes 2018-05-15 11:43:59 +01:00
Matthew Jasper
9b0dfe184e Add tests for trivial bounds 2018-05-15 11:43:59 +01:00
Matthew Jasper
dabb820b00 Add trivial bounds lint 2018-05-15 11:43:59 +01:00
Matthew Jasper
27183a9030 Feature gate trivial bounds 2018-05-15 11:43:57 +01:00
bors
eca0da5985 Auto merge of #50351 - varkor:vestigial-never-conversion, r=nikomatsakis
Remove vestigial diverging !-coercion

Such conversions are no longer permitted. Fixes #50350.

r? @nikomatsakis
2018-05-15 10:34:45 +00:00
bors
d5ecf70fd6 Auto merge of #50259 - GuillaumeGomez:improve-results, r=ollie27
Rustdoc improvements

Fixes #50658. (last commit)

A lot of small improvements.

r? @QuietMisdreavus
2018-05-15 05:39:35 +00:00
bors
d711dc9d57 Auto merge of #50011 - varkor:partialord-opt-ii, r=Manishearth
Ensure derive(PartialOrd) is no longer accidentally exponential

Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once, addressing https://github.com/rust-lang/rust/issues/49650#issuecomment-379467572.

Closes #49505.

r? @Manishearth (sorry for changing it again so soon!)

Close #50755
2018-05-15 03:14:46 +00:00