Rename test locals to work around LLDB bug
LLDB's expression parser can't unambiguously resolve local variables in
some cases, as described in #47938. Work around this by using names that
don't shadow direct submodules of `core`.
Closes#64050.
Rollup of 7 pull requests
Successful merges:
- #64023 (libstd fuchsia fixes)
- #64098 (Ensure edition lints and internal lints are enabled with deny-warnings=false)
- #64139 (Migrate internal diagnostic registration to macro_rules)
- #64226 (Aggregation of cosmetic changes made during work on REPL PRs: libsyntax)
- #64227 (Aggregation of cosmetic changes made during work on REPL PRs: librustc)
- #64235 (Upgrade env_logger to 0.6)
- #64258 (compiletest: Match suffixed environments)
Failed merges:
r? @ghost
compiletest: Match suffixed environments
This fixes a case where an `ignore-musl` test was not ignored on
`armv7-unknown-linux-musleabihf` because the environment did not exactly
match. Only enforce that the environment starts with the argument to
`ignore-`.
Ensure edition lints and internal lints are enabled with deny-warnings=false
Previously we only passed the deny command line flags if deny-warnings was enabled, but now we either pass -W... or -D... for each of the flags as appropriate.
This is also a breaking change to x.py as it changes `--warnings=allow` to `--warnings=warn` which is what that flag actually did; we don't have an allow warnings mode.
libstd fuchsia fixes
This fixes two bugs in libstd on Fuchsia:
- `zx_time_t` was changed to an `i64`, but this never made it into libstd
- When spawning processes where any of the stdio were null, libstd attempts to open `/dev/null`, which doesn't exist on Fuchsia
r? @cramertj
This fixes a case where an `ignore-musl` test was not ignored on
`armv7-unknown-linux-musleabihf` because the environment did not exactly
match. Only enforce that the environment starts with the argument to
`ignore-`.
Rollup of 10 pull requests
Successful merges:
- #63919 (Use hygiene for AST passes)
- #63927 (Filter linkcheck spurious failure)
- #64149 (rustc_codegen_llvm: give names to non-alloca variable values.)
- #64192 (Bail out when encountering likely missing turbofish in parser)
- #64231 (Move the HIR CFG to `rustc_ast_borrowck`)
- #64233 (Correct pluralisation of various diagnostic messages)
- #64236 (reduce visibility)
- #64240 (Include compiler-rt in the source tarball)
- #64241 ([doc] Added more prereqs and note about default directory)
- #64243 (Move injection of attributes from command line to `libsyntax_ext`)
Failed merges:
r? @ghost
Move injection of attributes from command line to `libsyntax_ext`
Just a tiny bit of code generation that wasn't moved into `libsyntax_ext` in https://github.com/rust-lang/rust/pull/62771.
Include compiler-rt in the source tarball
In #60981 we switched to using src/llvm-project/compiler-rt inside
compiler-builtins rather than a separate copy of it.
In order to have the "c" feature turn on in builds from the source
tarball, we need to include that path in its creation.
fixes#64239
Bail out when encountering likely missing turbofish in parser
When encountering a likely intended turbofish without `::`, bubble
up the diagnostic instead of emitting it to allow the parser to recover
more gracefully and avoid uneccessary type errors that are likely to be
wrong.
Fix#61329.
rustc_codegen_llvm: give names to non-alloca variable values.
These names only matter when looking at LLVM IR, but they can help.
When one value is used for multiple variables, I decided to combine the names.
I chose `,` as a separator but maybe `=` or ` ` (space) are more appropriate.
(LLVM names can contain any characters - if necessary they end up having quotes)
As an example, this function:
```rust
#[no_mangle]
pub fn test(a: u32, b: u32) -> u32 {
let c = a + b;
let d = c;
let e = d * a;
e
}
```
Used to produce this LLVM IR:
```llvm
define i32 @test(i32 %a, i32 %b) unnamed_addr #0 {
start:
%0 = add i32 %a, %b
%1 = mul i32 %0, %a
ret i32 %1
}
```
But after this PR you get this:
```llvm
define i32 @test(i32 %a, i32 %b) unnamed_addr #0 {
start:
%"c,d" = add i32 %a, %b
%e = mul i32 %"c,d", %a
ret i32 %e
}
```
cc @nagisa @rkruppe
Filter linkcheck spurious failure
r? @ehuss
cc @spastorino
Basically, we filter errors with messages containing "timed out"... a bit of a hack, but hopefully this will be functionality built into linkcheck soon.
Use hygiene for AST passes
AST passes are now able to have resolve consider their expansions as if they were opaque macros defined either in some module in the current crate, or a fake empty module with `#[no_implicit_prelude]`.
* Add an ExpnKind for AST passes.
* Remove gensyms in AST passes.
* Remove gensyms in`#[test]`, `#[bench]` and `#[test_case]`.
* Allow opaque macros to define tests.
* Move tests for unit tests to their own directory.
* Remove `Ident::{gensym, is_gensymed}` - `Ident::gensym_if_underscore` still exists.
cc #60869, #61019
r? @petrochenkov
Support both static and dynamic linking mode in testing for vxWorks
1. Support both static and dynamic linking mode in testing for vxWorks
2. Ignore unsupported test cases: net:tcp:tests:timeouts and net:ucp:tests:timeouts
r? @alexcrichton
In #60981 we switched to using src/llvm-project/compiler-rt inside
compiler-builtins rather than a separate copy of it.
In order to have the "c" feature turn on in builds from the source
tarball, we need to include that path in its creation.
fixes#64239
Rollup of 8 pull requests
Successful merges:
- #63565 (Rust 2018: NLL migrate mode => hard error)
- #63969 (Add missing examples for Option type)
- #64067 (Remove no-prefer-dynamic from valgrind tests)
- #64166 (Better way of conditioning the sanitizer builds)
- #64189 (annotate-snippet emitter: Deal with multispans from macros, too)
- #64202 (Fixed grammar/style in some error messages)
- #64206 (annotate-snippet emitter: Update an issue number)
- #64208 (it's more pythonic to use 'is not None' in python files)
Failed merges:
r? @ghost
annotate-snippet emitter: Deal with multispans from macros, too
This moves the two methods from the `EmitterWriter` impl to trait
default methods in the `Emitter` trait so that they can be re-used by
the `AnnotateSnippetEmitterWriter`.
r? @estebank
Closes#61810
Better way of conditioning the sanitizer builds
Previously the build would take the presence of the LLVM_CONFIG envvar to
mean that the sanitizers should be built, but this is a common envvar that
could be set for reasons unrelated to the rustc sanitizers.
This commit adds a new envvar RUSTC_BUILD_SANITIZERS and uses it instead.
This PR or similar will be necessary in order to work correctly with https://github.com/rust-lang-nursery/compiler-builtins/pull/296
Rust 2018: NLL migrate mode => hard error
As per decision on a language team meeting as described in https://github.com/rust-lang/rust/pull/63565#issuecomment-528563744, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.
cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll