Commit Graph

97886 Commits

Author SHA1 Message Date
Ralf Jung
72d9fe8b0e less & 2019-08-17 16:48:08 +02:00
Simon Sapin
ba0328327c Doc nits
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-17 15:42:05 +02:00
bors
d65e272a9f Auto merge of #63462 - matthewjasper:hygienic-builtin-derives, r=petrochenkov
Opaque builtin derive macros

* Buiilt-in derives are now opaque macros
    * This required limiting the visibility of some previously unexposed functions in `core`.
    * This also required the change to `Ident` serialization.
* All gensyms are replaced with hygienic identifiers
* Use hygiene to avoid most other name-resolution issues with buiilt-in derives.
    *  As far as I know the only remaining case that breaks is an ADT that has the same name as one of its parameters. Fixing this completely seemed to be more effort than it's worth.
* Remove gensym in `Ident::decode`, which lead to linker errors due to `inline` being gensymmed.
    * `Ident`now panics if incremental compilation tries to serialize it (it currently doesn't).
    * `Ident` no longer uses `gensym` to emulate cross-crate hygiene. It only applied to reexports.
    * `SyntaxContext` is no longer serializable.
    * The long-term fix for this is to properly implement cross-crate hygiene, but this seemed to be acceptable for now.
* Move type/const parameter shadowing checks to `resolve`
    * This was previously split between resolve and type checking. The type checking pass compared `InternedString`s, not Identifiers.
* Removed the `SyntaxContext` from `{ast, hir}::{InlineAsm, GlobalAsm}`

cc #60869
r? @petrochenkov
2019-08-17 12:53:53 +00:00
Ralf Jung
f19087dd7c drift leftward 2019-08-17 13:50:04 +02:00
Ralf Jung
689c210b47 fix tests 2019-08-17 13:50:04 +02:00
Ralf Jung
4821663a2b
Full stop
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-17 13:42:03 +02:00
Ralf Jung
5ac2045d1e use ImmTy::from_uint in a few more spots 2019-08-17 12:56:46 +02:00
Ralf Jung
3edf099266 make both unary_op and binary_op fully typed, including a return type 2019-08-17 12:56:44 +02:00
Ralf Jung
0a2a517fe6 Add ImmTy::from_uint 2019-08-17 12:37:02 +02:00
Ralf Jung
a9efa738ab invalid_value: also detect transmute-from-0 (seen in the wild) 2019-08-17 11:57:01 +02:00
Ralf Jung
9ab1d5c73a multi-variant enums are tricky 2019-08-17 11:57:01 +02:00
Ralf Jung
0d242b3f90 invalid_value: warn for types with custom valid range 2019-08-17 11:56:58 +02:00
Ralf Jung
25d8a0a351 warn about uninit bools and chars 2019-08-17 11:56:57 +02:00
Ralf Jung
5f7716d11b invalid_value: factor finding dangerous inits into separate function 2019-08-17 11:56:54 +02:00
Oliver Scherer
1ea88a8689 Add tests 2019-08-17 11:31:09 +02:00
Oliver Scherer
ab949fdd64 Cast only where necessary 2019-08-17 11:29:17 +02:00
bors
ac60ca0643 Auto merge of #63655 - Centril:rollup-ty1ot40, r=Centril
Rollup of 4 pull requests

Successful merges:

 - #62737 (Override Cycle::try_fold)
 - #63505 (Hash the remapped sysroot instead of the original.)
 - #63559 (rustc_codegen_utils: account for 1-indexed anonymous lifetimes in v0 mangling.)
 - #63621 (Modify librustc_llvm to pass -DNDEBUG while compiling.)

Failed merges:

r? @ghost
2019-08-17 09:14:37 +00:00
Mazdak Farrokhzad
6bce50f390
Rollup merge of #63621 - jgalenson:dndebug, r=alexcrichton
Modify librustc_llvm to pass -DNDEBUG while compiling.

Currently, librustc_llvm builds are not reproducible because the LLVM files it compiles use the debug version of llvm_unreachable, which uses __FILE__.  To fix this, we propagate NDEBUG from bootstrap if applicable and use it when compiling librustc_llvm.

r? @alexcrichton
2019-08-17 11:13:47 +02:00
Mazdak Farrokhzad
a053baefeb
Rollup merge of #63559 - eddyb:v0-mangling-off-by-1, r=estebank
rustc_codegen_utils: account for 1-indexed anonymous lifetimes in v0 mangling.

I don't really understand why `anonymize_late_bound_regions` starts with `BrAnon(1)` instead of `BrAnon(0)`, but it does (maybe @nikomatsakis knows?): c43d03a19f/src/librustc/ty/fold.rs (L696-L712)

Thankfully, the mangling format and demangler implementations are fine, and I just needed to offset the anonymized lifetime indices by `1` to get the correct mangling.

cc @alexcrichton @michaelwoerister
2019-08-17 11:13:45 +02:00
Mazdak Farrokhzad
5e597875b7
Rollup merge of #63505 - jgalenson:sysroot-hash, r=alexcrichton
Hash the remapped sysroot instead of the original.

One of the reasons that rustc builds are not reproducible is because the --sysroot path is dependent on the current directory.  We can fix this by hashing the remapped sysroot instead of the original when applicable.

Note that with this patch, the hash will stay the same if both the sysroot and the remapped path change.  However, given that if the contents of the sysroot change the hash will also stay the same, this might be acceptable.  I would appreciate feedback on the best way to do this.

This helps #34902, although it does not fix it by itself.
2019-08-17 11:13:44 +02:00
Mazdak Farrokhzad
477db05066
Rollup merge of #62737 - timvermeulen:cycle_try_fold, r=scottmcm
Override Cycle::try_fold

It's not very pretty, but I believe this is the simplest way to correctly implement `Cycle::try_fold`. The following may seem correct:
```rust
loop {
    acc = self.iter.try_fold(acc, &mut f)?;
    self.iter = self.orig.clone();
}
```
...but this loops infinitely in case `self.orig` is empty, as opposed to returning `acc`. So we first have to fully iterate `self.orig` to check whether it is empty or not, and before _that_, we have to iterate the remaining elements of `self.iter`.

This should always call `self.orig.clone()` the same amount of times as repeated `next()` calls would.

r? @scottmcm
2019-08-17 11:13:42 +02:00
Matthew Jasper
1c0a5469ed Remove unused SyntaxContext serialization impls
The implementations were wrong and unused.
2019-08-17 09:12:32 +01:00
Matthew Jasper
d04af194fc Remove SyntaxContext from {ast, hir}::{GlobalAsm, InlineAsm}
We now store it in the `Span` of the expression or item.
2019-08-17 09:12:32 +01:00
Matthew Jasper
f70c90c677 Move type parameter shadowing errors to resolve
For some reason type checking did this. Further it didn't consider
hygiene.
2019-08-17 09:12:32 +01:00
Matthew Jasper
3296d0ed6d Remove gensyms from built-in derives
Also make them generally more hygienic with name resolution.
2019-08-17 09:12:32 +01:00
Matthew Jasper
0280e8ffcc Make fmt-internal functions private 2019-08-17 08:59:36 +01:00
Matthew Jasper
6ee60af1ab Make built-in derives opaque macros 2019-08-17 08:59:36 +01:00
Matthew Jasper
497b502062 Stop emulating cross-crate hygiene with gensyms
Most `Ident`s are serialized as `InternedString`s the exceptions are:

* Reexports
* Attributes
* Idents in macro definitions

Using gensyms helped reexports emulate hygiene. However, the actual item
wouldn't have a gensymmed name so would be usable cross-crate. So
removing this case until we have proper cross-crate hygiene seems
sensible.

Codegen attributes (`inline`, `export_name`) are resolved by their
`Symbol`. This meant that opaque macro-expanded codegen attributes could
cause linker errors. This prevented making built-in derives hygienic.
2019-08-17 08:59:36 +01:00
bors
e910be8d7c Auto merge of #63491 - Xanewok:update-rls, r=Mark-Simulacrum
Update RLS

This fixes handling default configuration for the `crate_blacklist`
RLS configuration.

Technically this isn't needed, as the VS Code extension can be
configured to accept a predefined blacklist that's equal to the default
one but it's best that it also lands so that we don't need to work
around that.

Without this, manually passing a `null` value as the configuration
unfortunately crashes the RLS. This is the last fix related to configuration.

cc https://github.com/rust-lang/rust/pull/63472

r? @Mark-Simulacrum
2019-08-17 04:47:20 +00:00
bors
211d1e0735 Auto merge of #63648 - Centril:rollup-2kpdrj1, r=Centril
Rollup of 6 pull requests

Successful merges:

 - #63149 (resolve: Populate external modules in more automatic and lazy way)
 - #63545 (Feature gate 'yield $expr?' pre-expansion)
 - #63548 (Update rustc-demangle to 0.1.16.)
 - #63558 (Remap paths for proc-macro crates.)
 - #63641 (add git keyword to submodule comments in config.example.toml)
 - #63642 (Rename overflowing_{add,sub,mul} intrinsics to wrapping_{add,sub,mul}.)

Failed merges:

r? @ghost
2019-08-17 01:04:36 +00:00
Mazdak Farrokhzad
e8fb78bf6c
Rollup merge of #63642 - eddyb:wrap-it-up, r=rkruppe,Mark-Simulacrum
Rename overflowing_{add,sub,mul} intrinsics to wrapping_{add,sub,mul}.

These confused @Gankra, and then, also me, especially since `overflowing_*` *methods* also exist, but they map to `*_with_overflow` intrinsics!

r? @oli-obk / @nikomatsakis cc @Mark-Simulacrum (on the rustbuild workaround)
2019-08-17 03:03:02 +02:00
Mazdak Farrokhzad
816808295d
Rollup merge of #63641 - DieracDelta:master, r=eddyb
add git keyword to submodule comments in config.example.toml

I searched over config.example.toml file looking for a place to disable git submodules from being updated, and missed the two options related to this because they did not include the keyword git. This pr simply adds git to the relevant comments so hopefully others won't also miss that these options exist.
2019-08-17 03:03:01 +02:00
Mazdak Farrokhzad
786aaf0f64
Rollup merge of #63558 - jgalenson:move-remap, r=alexcrichton
Remap paths for proc-macro crates.

The remap-debuginfo config option remaps paths in most crates, but it does not apply to proc-macros, so they are still non-reproducible.  This patch fixes that.

I'm not completely sure if this is the best way to do this, but to get reproducible builds we need librustc_macros to be built with --remap-path-prefix.  I was previously modifying Cargo to pass that argument to all child crates, so this seems simpler and more correct.

I did not add a test since there do not seem to be any existing tests for RUSTC_DEBUGINFO_MAP.

r? @alexcrichton
2019-08-17 03:02:59 +02:00
Mazdak Farrokhzad
13b1031399
Rollup merge of #63548 - eddyb:unicode-demangling, r=alexcrichton
Update rustc-demangle to 0.1.16.

Includes https://github.com/alexcrichton/rustc-demangle/pull/29 and https://github.com/alexcrichton/rustc-demangle/pull/30.
You can see the effects of the former in the testcase changes.

r? @alexcrichton cc @davidtwco @michaelwoerister
2019-08-17 03:02:57 +02:00
Mazdak Farrokhzad
bf04edee2f
Rollup merge of #63545 - Centril:gate-yield-preexp, r=oli-obk
Feature gate 'yield $expr?' pre-expansion

Also improve the overall ergonomics of pre-expansion gating in general.

r? @Zoxc
2019-08-17 03:02:56 +02:00
Mazdak Farrokhzad
7f3c67d4e0
Rollup merge of #63149 - petrochenkov:lazypop2, r=eddyb
resolve: Populate external modules in more automatic and lazy way

So, resolve had this function `populate_module_if_necessary` for loading module children from other crates from metadata.
I never really understood when it should've been called and when not.
This PR removes the function and loads the module children automatically on the first access instead.

r? @eddyb
2019-08-17 03:02:54 +02:00
bors
bdfd698f37 Auto merge of #63640 - Centril:rollup-yeb8o66, r=Centril
Rollup of 10 pull requests

Successful merges:

 - #60492 (Add custom nth_back for Chain)
 - #61780 (Finalize the error type for `try_reserve`)
 - #63495 ( Remove redundant `ty` fields from `mir::Constant` and `hair::pattern::PatternRange`.)
 - #63525 (Make sure that all file loading happens via SourceMap)
 - #63595 (add sparc64-unknown-openbsd target)
 - #63604 (Some update for vxWorks)
 - #63613 (Hygienize use of built-in macros in the standard library)
 - #63632 (A couple of comment fixes.)
 - #63634 (ci: properly set the job name in CPU stats)
 - #63636 (ci: move linkcheck from mingw-2 to mingw-1)

Failed merges:

r? @ghost
2019-08-16 18:35:17 +00:00
Vadim Petrochenkov
5e47cd4a17 Fix rebase
Move some code into `build_reduced_graph.rs` to keep `BuildReducedGraphVisitor` it private
Also move the def collector call to `build_reduced_graph.rs`, it belongs there.
2019-08-16 21:28:22 +03:00
Vadim Petrochenkov
ab4cc2db56 resolve: Move some code around 2019-08-16 21:10:12 +03:00
Vadim Petrochenkov
fe2524cb9c resolve: Populate external traits lazily as well 2019-08-16 21:10:12 +03:00
Vadim Petrochenkov
ea81d8cedb resolve: Populate external modules in more automatic and lazy way
The modules are now populated implicitly on the first access
2019-08-16 21:10:12 +03:00
Mazdak Farrokhzad
20661f18df Simplify pre-expansion gating in general. 2019-08-16 19:24:15 +02:00
Mazdak Farrokhzad
4087fc583e Feature gate 'yield ?' pre-expansion. 2019-08-16 19:24:15 +02:00
Eduard-Mihai Burtescu
892ef6fa48 rustbuild: work around the stdarch cfg(bootstrap) bug. 2019-08-16 20:12:10 +03:00
Eduard-Mihai Burtescu
0f1da639d4 Rename overflowing_{add,sub,mul} intrinsics to wrapping_{add,sub,mul}. 2019-08-16 20:04:21 +03:00
Justin Restivo
178abd7d81 add git keyword to submodule option 2019-08-16 12:39:45 -04:00
Mazdak Farrokhzad
6b0a83862c
Rollup merge of #63636 - pietroalbini:ci-mingw, r=alexcrichton
ci: move linkcheck from mingw-2 to mingw-1

Running UI tests now takes a huge amount of time on mingw builders
(between 40 and 50 minutes), with mingw-1 builders taking even an hour
less to finish than mingw-2. This PR moves linkcheck from mingw-2 to
mingw-1, removing between 10 and 20 minutes of runtime on the -2
builders.

r? @alexcrichton
2019-08-16 18:22:34 +02:00
Mazdak Farrokhzad
4c3f21b47d
Rollup merge of #63634 - pietroalbini:cpu-stats-name, r=alexcrichton
ci: properly set the job name in CPU stats

r? @alexcrichton
2019-08-16 18:22:33 +02:00
Mazdak Farrokhzad
f40a2807a9
Rollup merge of #63632 - vext01:vext01-comment-fixes, r=eddyb
A couple of comment fixes.

This change fixes a couple of comments in the compiler code.

The first change was discussed with @eddyb. This one confused me because I thought only *public* defs were in the table (not so).

The second was a typo I noticed yesterday.

OK to go in?
2019-08-16 18:22:31 +02:00
Mazdak Farrokhzad
cd21715c34
Rollup merge of #63613 - petrochenkov:stdhyg, r=alexcrichton
Hygienize use of built-in macros in the standard library

Same as https://github.com/rust-lang/rust/pull/61629, but for built-in macros.

Closes https://github.com/rust-lang/rust/issues/48781
r? @alexcrichton
2019-08-16 18:22:30 +02:00