Commit Graph

62944 Commits

Author SHA1 Message Date
Corey Farwell
3f4ef9a535 Rollup merge of #40523 - durka:patch-38, r=petrochenkov
add test for nested macro def (#31946)

Adds a test for issue #31946 which was fixed in 1.12.0.

Closes #31946.
2017-03-22 19:30:24 -04:00
Corey Farwell
880f03b28c Rollup merge of #40509 - jseyfried:duplicate_check_macro_exports, r=nrc
Forbid conflicts between macros 1.0 exports and macros 2.0 exports

This PR forbids for conflicts between `#[macro_export]`/`#[macro_reexport]` macro exports and `pub use` macro exports. For example,
```rust
// crate A:
pub use macros::foo;
//^ This is allowed today, will be forbidden by this PR.

// crate B:
extern crate A; // This triggers a confusing error today.
use A::foo; // This could refer to refer to either macro export in crate A.
```

r? @nrc
2017-03-22 19:30:23 -04:00
Jake Goulding
c5a9f1f3f6 Basic documentation for inclusive range syntax 2017-03-22 17:46:27 -04:00
Simonas Kazlauskas
53a36923f1 Fix the tests 2017-03-22 22:02:42 +02:00
Stjepan Glavina
b7a3d46efa Add 'the' before 'start'/'end' 2017-03-22 18:42:42 +01:00
Josh Stone
a033f1a8ee Simplify hash table drops
This replaces the `std::collections:#️⃣:table::RevMoveBuckets`
iterator with a simpler `while` loop.  This iterator was only used for
dropping the remaining elements of a `RawTable`, so instead we can just
loop through directly and drop them in place.

This should be functionally equivalent to the former code, but a little
easier to read.  I was hoping it might have some performance benefit
too, but it seems the optimizer was already good enough to see through
the iterator -- the generated code is nearly the same.  Maybe it will
still help if an element type has more complicated drop code.
2017-03-22 10:32:38 -07:00
Simonas Kazlauskas
99e4c0ad8b Tracking issue numbers 2017-03-22 18:43:01 +02:00
Simonas Kazlauskas
2f0dd63bbe Checked (and unchecked) slicing for strings?
What is this magic‽
2017-03-22 18:43:01 +02:00
Stjepan Glavina
d6da1d9b46 Various fixes to wording consistency in the docs 2017-03-22 17:19:52 +01:00
Michael Woerister
090767b5ef Allocate numerical values of DefIndexes from two seperate ranges.
This way we can have all item-likes occupy a dense range of
DefIndexes, which is good for making fast, array-based
dictionaries.
2017-03-22 17:07:19 +01:00
Michael Woerister
bc259ee844 Introduce HirId, a replacement for NodeId after lowering to HIR.
HirId has a more stable representation than NodeId, meaning that
modifications to one item don't influence (part of) the IDs within
other items. The other part is a DefIndex for which there already
is a way of stable hashing and persistence.

This commit introduces the HirId type and generates a HirId for
every NodeId during HIR lowering, but the resulting values are
not yet used anywhere, except in consistency checks.
2017-03-22 17:02:07 +01:00
Niko Matsakis
0f1eb8a70f add regression test for #39984
Fixes #39984
2017-03-22 11:13:09 -04:00
Niko Matsakis
89ddd717ca Revert "Auto merge of #39485 - canndrew:inference-fix-39297, r=nikomatsakis"
This reverts commit dc0bb3f283, reversing
changes made to e879aa43ef.

This is a temporary step intended to fix regressions. A more
comprehensive fix for type inference and dead-code is in the works.
2017-03-22 11:13:09 -04:00
Michael Woerister
559127b451 Implement indexed_vec::Idx for ast::NodeId 2017-03-22 16:11:18 +01:00
Michael Woerister
9e0589a52b Add resize() method to IndexVec. 2017-03-22 16:11:18 +01:00
Armin Ronacher
d005d91778 Improved bounds for cmp::Reverse 2017-03-22 14:16:41 +01:00
Adam Ransom
1ae1a19ba6 Refactor checking if a Lifetime is static
Simply move the test for `keywords::StaticLifetime` into the
`Lifetime` impl, to match how elision is checked.
2017-03-22 19:27:35 +09:00
Steven Fackler
dae66e000a Specialize Vec::from_iter for vec::IntoIter
It's fairly common to expose an API which takes an `IntoIterator` and
immediately collects that into a vector. It's also common to buffer
a bunch of items into a vector and then pass that into one of these
APIs. If the iterator hasn't been advanced, we can make this `from_iter`
simply reassemble the original `Vec` with no actual iteration or
reallocation.
2017-03-22 08:55:17 +00:00
Vadim Petrochenkov
9e772b0092 Update the book submodule and fix tidy 2017-03-22 11:51:03 +03:00
Michael Woerister
45deab4a2c Address review comments. 2017-03-22 09:14:24 +01:00
Michael Woerister
03b8091d10 Move some constants to rustc::ich. 2017-03-22 09:14:24 +01:00
Michael Woerister
9af97e7ff2 Move CachingCodemapView to rustc::ich. 2017-03-22 09:14:24 +01:00
Michael Woerister
1445ed272e Move DefPathHashes to rustc::ich 2017-03-22 09:14:24 +01:00
Michael Woerister
8c00e63f3f Move Fingerprint to rustc::ich::Fingerprint. 2017-03-22 09:14:24 +01:00
Michael Woerister
bb24305742 Add some missing method impls to MIR region eraser. 2017-03-22 09:14:24 +01:00
Michael Woerister
439bf132d9 Support more kinds of Regions in TypeIdHasher. 2017-03-22 09:14:24 +01:00
Armin Ronacher
dabff15142 Fix the test for cmp::Reverse 2017-03-22 09:04:42 +01:00
Sam Whited
8ea0f18d9a E0090: Expand error message explanation 2017-03-22 00:07:12 -05:00
Cldfire
e2b5a8cf57 Remove duplicate style classes 2017-03-21 23:40:41 -04:00
Alex Crichton
6ae22346b8 appveyor: Use Ninja to build LLVM on MinGW
I have a suspicion that MinGW's make is the cause of #40546 rather than anything
else, but that's purely a suspicion without any facts to back it up. In any case
we'll eventually be moving the MSVC build over to Ninja in order to leverage
sccache regardless, so this commit simply jumpstarts that process by downloading
Ninja for use by MinGW anyway.

I'm not sure if this closes #40546 for real, but this is my current best shot at
closing it out, so...

Closes #40546
2017-03-21 19:18:56 -07:00
bors
8c4f2c64c6 Auto merge of #40043 - petrochenkov:objpars, r=nikomatsakis
Refactor parsing of trait object types

Bugs are fixed and code is cleaned up.

User visible changes:
- `ty` matcher in macros accepts trait object types like `Write + Send` (https://github.com/rust-lang/rust/issues/39080)
- Buggy priority of `+` in trait object types starting with `for` is fixed (https://github.com/rust-lang/rust/issues/39317). `&for<'a> Trait<'a> + Send` is now parsed as `(&for<'a> Trait<'a>) + Send` and requires parens `&(for<'a> Trait<'a> + Send)`. For comparison, `&Send + for<'a> Trait<'a>` was parsed like this since [Nov 27, 2014](https://github.com/rust-lang/rust/pull/19298).
- Trailing `+`s are supported in trait objects, like in other bounds.
- Better error reporting for trait objects starting with `?Sized`.

Fixes https://github.com/rust-lang/rust/issues/39080
Fixes https://github.com/rust-lang/rust/issues/39317 [breaking-change]
Closes https://github.com/rust-lang/rust/issues/39298
cc https://github.com/rust-lang/rust/issues/39085 (fixed, then reverted https://github.com/rust-lang/rust/pull/40043#issuecomment-286570653)
cc https://github.com/rust-lang/rust/issues/39318 (fixed, then reverted https://github.com/rust-lang/rust/pull/40043#issuecomment-284493890)

r? @nikomatsakis
2017-03-22 02:00:16 +00:00
Sam Whited
8e352f7d86 E0090: Add explanation for error message
See #32777
2017-03-21 20:15:55 -05:00
Jake Goulding
4ddedf7246 Add warning about volatility of MIR output 2017-03-21 20:19:03 -04:00
Jake Goulding
9218f9772a Teach rustc --emit=mir 2017-03-21 20:19:02 -04:00
bors
50c4e3e8d0 Auto merge of #40664 - jseyfried:fix_derive_bug, r=nrc
macros: fix bug in legacy custom derive processing

Fixes #40663.
r? @nrc
2017-03-21 23:11:56 +00:00
Armin Ronacher
d7d4e670ed Added core::cmp::Reverse for sort_by_key reverse sorting 2017-03-22 00:01:37 +01:00
Stjepan Glavina
6acbbc66f7 Add docs for sort_unstable to unstable book 2017-03-21 23:45:27 +01:00
Manuel
a8800bb675 Fix doc error for ExactSizeIterator
The code example in the trait documentation of ExactSizeIterator
has an incorrect implementation of the len method that does not return
the number of times the example iterator 'Counter' will iterate. This
may confuse readers of the docs as the example code will compile but 
doesn't uphold the trait's contract.

This is easily fixed by modifying the implementation of len and changing
the assert statement to actually assert the correct behaviour. I also
slightly modified a code comment to better reflect what the method 
returns.
2017-03-21 22:18:52 +01:00
Jeffrey Seyfried
bd862d29d3
Fix bug in legacy #[derive] processing logic. 2017-03-21 16:53:34 -04:00
Alex Crichton
2727866831
travis: Don't enable quiet tests
This makes travis problems more difficult to debug, so let's just enable more
verbose logging.
2017-03-21 16:51:57 -04:00
Alex Crichton
b5c35c5f7a
travis: Add timestamps to all build messages
When debugging why builds are taking so long it's often useful to get the
timestamp of all log messages as we're not always timing every tiny step of the
build. I wrote a [utility] for prepending a relative timestamp from the start of
a process which is now downloaded to the builders and is what we wrap the entire
build invocation in.

[utility]: https://github.com/alexcrichton/stamp-rs

Closes #40577
2017-03-21 16:51:57 -04:00
Michael Woerister
cbb3af1e9c
Make the filenames of .stamp files generated by compiletest shorter.
Otherwise we run into filename length limitations on some file
systems (especially ecryptfs).
2017-03-21 16:50:36 -04:00
Alex Crichton
ef90d32f07
rustc: Always emit the uwtable attribute on Windows
This commit alters the translation layer to unconditionally emit the `uwtable`
LLVM attribute on Windows regardless of the `no_landing_pads` setting.
Previously I believe we omitted this attribute as an optimization when the
`-Cpanic=abort` flag was passed, but this unfortunately caused problems for
Gecko.

It [was discovered] that there was trouble unwinding through Rust functions due
to foreign exceptions such as illegal instructions or otherwise in-practice
methods used to abort a process. In testing it looked like the major difference
between a working binary and a non-working binary is indeed this `uwtable`
attribute, but this PR has unfortunately not been thoroughly tested in terms of
compiling Gecko with `-C panic=abort` *and* this PR to see whether it works, so
this is still somewhat working on just suspicion.

[was discovered]: https://bugzilla.mozilla.org/show_bug.cgi?id=1302078
2017-03-21 16:47:10 -04:00
Austin Bonander
8a6ef50575
Regression test for rust-lang/rust#40535 2017-03-21 16:34:56 -04:00
Austin Bonander
a906d9912b
Correctly get source for metadata crate type;
replace `unwrap()` with `expect()`
2017-03-21 16:34:56 -04:00
Taylor Cramer
873248d87d Remove unused adt_def access by constructor in typeck/collect 2017-03-21 16:29:38 -04:00
Taylor Cramer
a212002db1 Remove unused adt-def insertion by constructor DefIndex 2017-03-21 16:29:38 -04:00
Alex Burka
7551e715dc
add test for nested macro def (#31946)
Adds a test for issue #31946 which was fixed a while ago.
2017-03-21 16:27:35 -04:00
omtcyfz
71020e3836 Nit: LLVM & Clang latest version is 4.0 2017-03-21 16:26:35 -04:00
Alex Crichton
fe2b7a4952
rustbuild: Don't hardcode 'nightly' for Cargo
It now follows rustc release trains
2017-03-21 16:26:13 -04:00