Commit Graph

121607 Commits

Author SHA1 Message Date
Dylan DPC 84b9145076
Rollup merge of #73182 - Aaron1011:feature/call-fn-span, r=matthewjasper
Track span of function in method calls, and use this in #[track_caller]

Fixes #69977

When we parse a chain of method calls like `foo.a().b().c()`, each
`MethodCallExpr` gets assigned a span that starts at the beginning of
the call chain (`foo`). While this is useful for diagnostics, it means
that `Location::caller` will return the same location for every call
in a call chain.

This PR makes us separately record the span of the function name and
arguments for a method call (e.g. `b()` in `foo.a().b().c()`). This
`Span` is passed through HIR lowering and MIR building to
`TerminatorKind::Call`, where it is used in preference to
`Terminator.source_info.span` when determining `Location::caller`.

This new span is also useful for diagnostics where we want to emphasize
a particular method call - for an example, see
https://github.com/rust-lang/rust/pull/72389#discussion_r436035990
2020-06-11 19:04:16 +02:00
Dylan DPC b34111591c
Rollup merge of #73169 - Amanieu:asm-warnings, r=petrochenkov
Handle assembler warnings properly

Previously all inline asm diagnostics were treated as errors, but LLVM sometimes emits warnings and notes as well.

Fixes #73160

r? @petrochenkov
2020-06-11 19:04:14 +02:00
Dylan DPC 8d620999de
Rollup merge of #73097 - Mark-Simulacrum:clippy-fail, r=oli-obk
Try_run must only be used if toolstate is populated

Clippy's tests were failing the build, but that failure was ignored in favor of checking toolstate. This is the correct behavior for toolstate-checked tools, but Clippy no longer updates its toolstate status as it should always build.

The previous PR of this kind didn't catch this as I expected x.py failures to always lead to a non-successful build in CI, but that's not the case specifically for tool testing.
2020-06-11 19:04:12 +02:00
Dylan DPC 80fce3693d
Rollup merge of #73012 - Aaron1011:feature/span-debug-ctxt, r=matthewjasper
Show `SyntaxContext` in formatted `Span` debug output

This is only really useful in debug messages, so I've switched to
calling `span_to_string` in any place that causes a `Span` to end up in
user-visible output.
2020-06-11 19:04:09 +02:00
Dylan DPC f23f6acb56
Rollup merge of #72180 - euclio:rustdoc-test-extra-space, r=Dylan-DPC
remove extra space from crate-level doctest names

Before:

```
running 2 tests
test src/test/rustdoc-ui/doctest-output.rs - foo::bar (line 11) ... ok
test src/test/rustdoc-ui/doctest-output.rs -  (line 5) ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
```

After:

```
running 2 tests
test src/test/rustdoc-ui/doctest-output.rs - foo::bar (line 11) ... ok
test src/test/rustdoc-ui/doctest-output.rs - (line 5) ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
```
2020-06-11 19:04:08 +02:00
bors 50c0192c64 Auto merge of #73235 - Dylan-DPC:rollup-zp8oxhg, r=Dylan-DPC
Rollup of 11 pull requests

Successful merges:

 - #72380 (Fix `is_const_context`, update `check_for_cast`)
 - #72941 (Ensure stack when building MIR for matches)
 - #72976 (Clean up E0642 explanation)
 - #73080 (doc/rustdoc: Fix incorrect external_doc feature flag)
 - #73155 (save_analysis: better handle paths and functions signature)
 - #73164 (Add new E0762 error code)
 - #73172 (Fix more clippy warnings)
 - #73181 (Automatically prioritize unsoundness issues)
 - #73183 (Support proc macros in intra doc link resolution)
 - #73208 (Fix doctest template)
 - #73219 (x.py: with --json-output, forward cargo's JSON)

Failed merges:

r? @ghost
2020-06-11 11:17:37 +00:00
Dylan DPC ba0a8d2ee7
Rollup merge of #73219 - RalfJung:cargo-json, r=Mark-Simulacrum
x.py: with --json-output, forward cargo's JSON

Fixes https://github.com/rust-lang/rust/issues/73209

r? @Mark-Simulacrum
2020-06-11 13:16:12 +02:00
Dylan DPC 822bb9a1cb
Rollup merge of #73208 - qm3ster:patch-1, r=Amanieu
Fix doctest template

`saturating_add` example was not parameterized, but passed because the `u8` would saturate successfully
2020-06-11 13:16:10 +02:00
Dylan DPC d9cf7a1784
Rollup merge of #73183 - Manishearth:intra-doc-macro, r=GuillaumeGomez
Support proc macros in intra doc link resolution

The feature was written pre-proc macro resolution, so it only supported the wacky MBE resolution rules. This adds support for proc macros as well.

cc @GuillaumeGomez

Fixes #73173
2020-06-11 13:16:08 +02:00
Dylan DPC 6cc757e698
Rollup merge of #73181 - LeSeulArtichaut:patch-1, r=spastorino
Automatically prioritize unsoundness issues

r? @spastorino cc @Mark-Simulacrum @rust-lang/wg-prioritization
2020-06-11 13:16:06 +02:00
Dylan DPC 2ac1598d83
Rollup merge of #73172 - matthiaskrgr:cl9ppy, r=Dylan-DPC
Fix more clippy warnings

Fixes more of:

clippy::unused_unit
clippy::op_ref
clippy::useless_format
clippy::needless_return
clippy::useless_conversion
clippy::bind_instead_of_map
clippy::into_iter_on_ref
clippy::redundant_clone
clippy::nonminimal_bool
clippy::redundant_closure
clippy::option_as_ref_deref
clippy::len_zero
clippy::iter_cloned_collect
clippy::filter_next

r? @Dylan-DPC
2020-06-11 13:16:04 +02:00
Dylan DPC 70c14c2d43
Rollup merge of #73164 - GuillaumeGomez:add-e0761, r=petrochenkov
Add new E0762 error code
2020-06-11 13:16:02 +02:00
Dylan DPC b4af87406b
Rollup merge of #73155 - marmeladema:save-analysis-various-fixes, r=Xanewok
save_analysis: better handle paths and functions signature

This should improve slightly some possible regressions due to hir rework.

r? @Xanewok
2020-06-11 13:16:00 +02:00
Dylan DPC 12e5a69fee
Rollup merge of #73080 - ertos-rs:sean.wilson/devel/external_doc-ref-fix, r=ollie27
doc/rustdoc: Fix incorrect external_doc feature flag
2020-06-11 13:15:58 +02:00
Dylan DPC f4661e2707
Rollup merge of #72976 - GuillaumeGomez:cleanup-e0642, r=Dylan-DPC
Clean up E0642 explanation

r? @Dylan-DPC
2020-06-11 13:15:57 +02:00
Dylan DPC adc92becf0
Rollup merge of #72941 - nagisa:ensure-stack-for-match, r=oli-obk
Ensure stack when building MIR for matches

In particular matching on complex types such as strings will cause
deep recursion to happen.

Fixes #72933

r? @matthewjasper @oli-obk
2020-06-11 13:15:54 +02:00
Dylan DPC 298467ee9a
Rollup merge of #72380 - lcnr:const_context, r=estebank
Fix `is_const_context`, update `check_for_cast`

A better version of #71477

Adds `fn enclosing_body_owner` and uses it in `is_const_context`.
`is_const_context` now uses the same mechanism as `mir_const_qualif` as it was previously incorrect.
Renames `is_const_context` to `is_inside_const_context`.

I also updated `check_for_cast` in the second commit, so r? @estebank

(I removed one lvl of indentation, so it might be easier to review by hiding whitespace changes)
2020-06-11 13:15:53 +02:00
bors 3ddf48053e Auto merge of #71896 - spastorino:existential-assoc-types-variance, r=nikomatsakis
Relate existential associated types with variance Invariant

Fixes #71550 #72315

r? @nikomatsakis

The test case reported in that issue now errors with the following message ...

```
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter 'a in function call due to conflicting requirements
  --> /tmp/test.rs:25:5
   |
25 |     bad(&Bar(PhantomData), x)
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: first, the lifetime cannot outlive the lifetime `'a` as defined on the function body at 24:11...
  --> /tmp/test.rs:24:11
   |
24 | fn extend<'a, T>(x: &'a T) -> &'static T {
   |           ^^
note: ...so that reference does not outlive borrowed content
  --> /tmp/test.rs:25:28
   |
25 |     bad(&Bar(PhantomData), x)
   |                            ^
   = note: but, the lifetime must be valid for the static lifetime...
note: ...so that the types are compatible
  --> /tmp/test.rs:25:9
   |
25 |     bad(&Bar(PhantomData), x)
   |         ^^^^^^^^^^^^^^^^^
   = note: expected  `&'static T`
              found  `&T`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0495`.
```

I could also add that test case if we want to have a weaponized one too.
2020-06-11 04:58:48 +00:00
Amanieu d'Antras 7dc19b0bd5
Update src/libcore/num/mod.rs
Co-authored-by: lzutao <taolzu@gmail.com>
2020-06-11 05:21:15 +01:00
bors e93cb961ba Auto merge of #73198 - ehuss:update-cargo, r=ehuss
Update cargo

15 commits in 40ebd52206e25c7a576ee42c137cc06a745a167a..1ec223effbbbf9fddd3453cdcae3a96a967608eb
2020-06-01 22:35:00 +0000 to 2020-06-09 20:03:14 +0000
- Default values for `readme` if not specified (rust-lang/cargo#8277)
- Fix tree completions. (rust-lang/cargo#8342)
- Support `{prefix}` and `{lowerprefix}` markers in `config.json` `dl` key (rust-lang/cargo#8267)
- Add environment variables to identify the binary and crate name (rust-lang/cargo#8270)
- Bump to 0.47.0, update changelog (rust-lang/cargo#8336)
- Nits: Remove unneeded mut and loop (rust-lang/cargo#8334)
- 1.45 beta backports (rust-lang/cargo#8331)
- Better error message when passing in relative path to Workspace::new (rust-lang/cargo#8321)
- Don't hash executable filenames on apple platforms. (rust-lang/cargo#8329)
- fix clippy warnings (rust-lang/cargo#8324)
- Require latest libgit2 to pull in bugfixes (rust-lang/cargo#8320)
- Fix an accidental raw access of field (rust-lang/cargo#8319)
- Use mem::take to replace with Default values (rust-lang/cargo#8314)
- Allow Windows dylibs without dll suffix. (rust-lang/cargo#8310)
- Show alias in help message (rust-lang/cargo#8307)
2020-06-11 01:27:03 +00:00
Aaron Hill 9d36fa3d47
Fix test 2020-06-10 18:39:05 -04:00
bors ec42485ee9 Auto merge of #73206 - Dylan-DPC:rollup-rha9g8q, r=Dylan-DPC
Rollup of 9 pull requests

Successful merges:

 - #72706 (Add windows group to triagebot)
 - #72789 (resolve: Do not suggest imports from the same module in which we are resolving)
 - #72890 (improper ctypes: normalize return types and transparent structs)
 - #72897 (normalize adt fields during structural match checking)
 - #73005 (Don't create impl candidates when obligation contains errors)
 - #73023 (Remove noisy suggestion of hash_map )
 - #73070 (Add regression test for const generic ICE in #72819)
 - #73157 (Don't lose empty `where` clause when pretty-printing)
 - #73184 (Reoder order in which MinGW libs are linked to fix recent breakage)

Failed merges:

r? @ghost
2020-06-10 22:01:37 +00:00
Aaron Hill e5f3b94d56
Clippy fixes 2020-06-10 17:30:12 -04:00
Aaron Hill bbf497b0eb
Add doc comments 2020-06-10 17:30:12 -04:00
Aaron Hill f69a2a6cbd
Fix pprust-expr-roundtrip 2020-06-10 17:30:11 -04:00
Aaron Hill 6e4d0b4205
Update Clippy for MethodCall changes 2020-06-10 17:30:11 -04:00
Aaron Hill 28946b3486
Track span of function in method calls, and use this in #[track_caller]
Fixes #69977

When we parse a chain of method calls like `foo.a().b().c()`, each
`MethodCallExpr` gets assigned a span that starts at the beginning of
the call chain (`foo`). While this is useful for diagnostics, it means
that `Location::caller` will return the same location for every call
in a call chain.

This PR makes us separately record the span of the function name and
arguments for a method call (e.g. `b()` in `foo.a().b().c()`). This
`Span` is passed through HIR lowering and MIR building to
`TerminatorKind::Call`, where it is used in preference to
`Terminator.source_info.span` when determining `Location::caller`.

This new span is also useful for diagnostics where we want to emphasize
a particular method call - for an example, see
https://github.com/rust-lang/rust/pull/72389#discussion_r436035990
2020-06-10 17:30:11 -04:00
bors 449e8eaa28 Auto merge of #73213 - ehuss:fix-emsdk, r=Mark-Simulacrum
Fix emcc failure for wasm32.

The wasm32 job is currently failing on CI with the error `ERROR: llc executable not found at /usr/bin/llc`.  The issue is that https://github.com/emscripten-core/emsdk/pull/472 has changed how emsdk discovers its configuration.  We were relying on the global behavior that would use a configuration from the home directory.  However, it looks like emsdk is moving away from that approach.  This change adds the necessary env var for emcc to find the correct configuration.

There are a few alternate approaches this could take.  The `--no-embedded` option could be passed to `emsdk activate` to use the old behavior, but it seems like they want to move away from that.  Another option is to source `emsdk_env.sh`, which is how these env vars normally get set.  I'm not entirely sure how to do that easily in a Dockerfile, though.
2020-06-10 18:02:34 +00:00
Ralf Jung f507748ce4 x.py: with --json-output, forward cargo's JSON 2020-06-10 18:59:48 +02:00
Manish Goregaokar 34c6b38e68 Add tests for macro@ and derive@ 2020-06-10 09:11:17 -07:00
Eric Huss cd02052ad0 Fix emcc failure for wasm32. 2020-06-10 06:23:06 -07:00
Mihail Malo 5859f6e4f7
Fix doctest template
`saturating_add` example was not parameterized, but passed because the `u8` would saturate successfully
2020-06-10 13:55:40 +03:00
Guillaume Gomez 7bd87cfac2 Add tests for E0762 2020-06-10 11:55:50 +02:00
Guillaume Gomez 50a42fe513 Create new error code E0762 for unterminated char literals 2020-06-10 11:54:09 +02:00
Dylan DPC 2b8f1eccaa
Rollup merge of #73184 - mati865:fix-mingw-libs-order, r=petrochenkov
Reoder order in which MinGW libs are linked to fix recent breakage

Recent upstream mingw-w64 changes made libmsvcrt depend on libmingwex breaking compilation in some cases when using **external** MinGW.

Applying this change to the master fixes nightly and stage{1,2} build. For stage0 one has to export `RUSTFLAGS_BOOTSTRAP='-C link-arg=-lmsvcrt'` until this PR lands in bootstrap compiler.
Therefore I'm humbly asking to also backport it to the beta and update bootstrap compiler.
2020-06-10 11:03:51 +02:00
Dylan DPC e04e3c89cc
Rollup merge of #73157 - Aaron1011:where-oh-where-has-my-little-span-gone, r=ecstatic-morse
Don't lose empty `where` clause when pretty-printing

Previously, we would parse `struct Foo where;` and `struct Foo;`
identically, leading to an 'empty' `where` clause being omitted during
pretty printing. This will cause us to lose spans when proc-macros
involved, since we will have a collected `where` token that does not
appear in the pretty-printed item.

We now explicitly track the presence of a `where` token during parsing,
so that we can distinguish between `struct Foo where;` and `struct Foo;`
during pretty-printing
2020-06-10 11:03:49 +02:00
Dylan DPC 0a77c8c295
Rollup merge of #73070 - ayazhafiz:i/72819, r=nikomatsakis
Add regression test for const generic ICE in #72819

Closes #72819
2020-06-10 11:03:47 +02:00
Dylan DPC e1cd8c41a5
Rollup merge of #73023 - ayushmishra2005:remove_noisy_suggestion, r=davidtwco
Remove noisy suggestion of hash_map

Remove noisy suggestion of hash_map #72642

fixes #72642
2020-06-10 11:03:45 +02:00
Dylan DPC 024f025934
Rollup merge of #73005 - Aaron1011:fix/error-overflow, r=estebank
Don't create impl candidates when obligation contains errors

Fixes #72839

In PR #72621, trait selection was modified to no longer bail out early
when an error type was encountered. This allowed us treat `ty::Error` as
`Sized`, causing us to avoid emitting a spurious "not sized" error after
a type error had already occured.

However, this means that we may now try to match an impl candidate
against the error type. Since the error type will unify with almost
anything, this can cause us to infinitely recurse (eventually triggering
an overflow) when trying to verify certain `where` clauses.

This commit causes us to skip generating any impl candidates when an
error type is involved.
2020-06-10 11:03:43 +02:00
Dylan DPC 8addb2e684
Rollup merge of #72897 - lcnr:structurally-match-normalize, r=pnkfelix
normalize adt fields during structural match checking

fixes #72896

currently only fixes the issue itself and compiles stage 1 libs.
I believe we have to use something else to normalize the adt fields here,
as I expect some partially resolved adts to cause problems 🤔

stage 1 libs and the test itself pass, not sure about the rest...
Will spend some more time looking into it tomorrow.

r? @pnkfelix cc @eddyb
2020-06-10 11:03:42 +02:00
Dylan DPC fda594e6ae
Rollup merge of #72890 - davidtwco:issue-66202-normalize-and-transparent-improper-ctypes, r=varkor
improper ctypes: normalize return types and transparent structs

Fixes #66202.

See each commit individually (except the first which adds a test) for more detailed explanations on the changes made.

In summary, this PR ensures that return types are normalized before being checked for FFI-safety, and that transparent newtype wrappers are FFI-safe if the type being wrapped is FFI-safe (often true previously, but not if, after substitution, all types in a transparent newtype were zero sized).
2020-06-10 11:03:40 +02:00
Dylan DPC 78d08a2269
Rollup merge of #72789 - petrochenkov:impcand, r=davidtwco
resolve: Do not suggest imports from the same module in which we are resolving

Based on the idea from https://github.com/rust-lang/rust/pull/72623.
2020-06-10 11:03:38 +02:00
Dylan DPC a70fb70c1f
Rollup merge of #72706 - spastorino:add-windows-group, r=nikomatsakis
Add windows group to triagebot

r? @nikomatsakis
2020-06-10 11:03:36 +02:00
Manish Goregaokar 178465516e Don't print bang diagnostics for derives 2020-06-10 01:04:38 -07:00
Manish Goregaokar 27dcb4aab5 Avoid collisions between traits and their derive macros 2020-06-10 01:04:38 -07:00
Eric Huss fdeed85355 Update cargo 2020-06-09 19:55:04 -07:00
bors bb8674837a Auto merge of #73190 - Dylan-DPC:rollup-9wbyh4y, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #72417 (Remove `RawVec::reserve_in_place`.)
 - #73098 (Add Item::is_fake for rustdoc)
 - #73122 (Resolve E0584 conflict)
 - #73123 (Clean up E0647 explanation)
 - #73133 (Enforce unwind invariants)
 - #73148 (Fix a typo (size of the size))
 - #73149 (typo: awailable -> available)
 - #73161 (Add mailmap entry)

Failed merges:

r? @ghost
2020-06-10 00:48:35 +00:00
Santiago Pastorino a01485c0da
Fix rustc-dev-guide url 2020-06-09 21:19:26 -03:00
Manish Goregaokar e003c3ea05 Add test for proc macro resolution in intra doc links 2020-06-09 16:35:59 -07:00
Manish Goregaokar 4eda3f77bd intra-doc macro resolution should also handle proc macros 2020-06-09 16:35:59 -07:00