Commit graph

17758 commits

Author SHA1 Message Date
Esteban Küber
d9ab4ff9a3 Remove blanket silencing of "type annotation needed" errors
Remove blanket check for existence of other errors before emitting
"type annotation needed" errors, and add some eager checks to avoid
adding obligations when they refer to types that reference
`[type error]` in order to reduce unneded errors.
2019-09-24 11:31:14 -07:00
bors
66bf391c3a Auto merge of #64272 - Mark-Simulacrum:parallel-handler, r=estebank
Refactor librustc_errors::Handler API

This should be reviewed by-commit.

The last commit moves all fields into an inner struct behind a single lock; this is done to prevent possible deadlocks in a multi-threaded compiler, as well as inconsistent state observation.
2019-09-23 06:38:23 +00:00
bors
b6716a1cdd Auto merge of #64695 - Centril:rollup-t1xnl2c, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #64294 (Fix `Stdio::piped` example code and lint)
 - #64670 (Cleanup syntax::ext::build)
 - #64674 (Propagate `types.err` in locals further to avoid spurious knock-down errors)
 - #64676 (Parse assoc type bounds in generic params and provide custom diagnostic)
 - #64677 (remove outdated comment)
 - #64679 (Infer consts more consistently)
 - #64688 (Clarify the "since" tidy check)

Failed merges:

r? @ghost
2019-09-23 02:25:10 +00:00
Mazdak Farrokhzad
78d715fe14
Rollup merge of #64679 - skinny121:const-infer, r=varkor
Infer consts more consistently

Moved some duplicated logic in `TypeRelation` methods into `super_combined_consts`. Before some `TypeRelation`s like `Lub` wasn't using `replace_if_possible`, meaning some inference types were staying around longer than they should be.

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

r? @varkor
2019-09-23 00:36:40 +02:00
Esteban Küber
3ea0d10979 hack to avoid incorrect suggestion 2019-09-22 11:33:13 -07:00
Esteban Küber
b21408527a review comments 2019-09-22 11:33:12 -07:00
Esteban Küber
c9d05aa9ce Point at correct span for parenthesized types 2019-09-22 11:33:12 -07:00
Esteban Küber
b370c111fd On obligation errors point at the unfulfilled binding when possible 2019-09-22 11:33:12 -07:00
ben
3f2855e4a6 Infer consts consistently. Moved some logic into super_combined_consts,
also removed some duplicated logic from TypeRelation methods.
2019-09-22 17:24:09 +12:00
Mazdak Farrokhzad
13fee423c8
Rollup merge of #63907 - estebank:assoc-type-mismatch, r=oli-obk
Add explanation to type mismatch involving type params and assoc types

CC #63711
2019-09-21 21:24:11 +02:00
Mazdak Farrokhzad
a93c0da8d2
Rollup merge of #64347 - GuillaumeGomez:E0312, r=oli-obk
Add long error explanation for E0312

Part of #61137.
2019-09-21 16:01:28 +02:00
Mazdak Farrokhzad
d021dba048
Rollup merge of #64342 - glorv:master, r=varkor
factor out pluralisation remains after #64280

there are two case that doesn't not match the original macro pattern at [here](https://github.com/rust-lang/rust/blob/master/src/librustc_lint/unused.rs#L146) and [here](https://github.com/rust-lang/rust/blob/master/src/libsyntax/parse/diagnostics.rs#L539) as the provided param is already a bool or the check condition is not `x != 1`, so I change the macro accept a boolean expr instead of number to fit all the cases.

@Centril  please review

Fixes #64238.
2019-09-21 16:01:26 +02:00
bors
97e58c0d32 Auto merge of #64584 - nikomatsakis:issue-64477-generator-capture-types, r=eddyb
record fewer adjustment types in generator witnesses, avoid spurious drops in MIR construction

Don't record all intermediate adjustment types -- That's way more than is needed, and winds up recording types that will never appear in MIR.

Note: I'm like 90% sure that this logic is correct, but this stuff is subtle and can be hard to keep straight.  However, the risk of this PR is fairly low -- if we miss types here, I believe the most common outcome is an ICE.

This fixes the original issue cited by #64477, but I'm leaving the issue open for now since there may be other cases we can detect and improve in a targeted way.

r? @Zoxc
2019-09-20 15:35:51 +00:00
bors
72252646a8 Auto merge of #64498 - estebank:point-at-arg, r=Centril
When possible point at argument causing item obligation failure

Fix https://github.com/rust-lang/rust/issues/41781, fix https://github.com/rust-lang/rust/issues/42855, fix https://github.com/rust-lang/rust/issues/46658, fix https://github.com/rust-lang/rust/issues/48099, fix https://github.com/rust-lang/rust/issues/63143.
2019-09-20 07:53:23 +00:00
Esteban Küber
c1ed4399eb review comments 2019-09-19 12:10:23 -07:00
Esteban Küber
2fbd6927a5 When possible, suggest fn call 2019-09-19 12:10:23 -07:00
Mazdak Farrokhzad
908636f510
Rollup merge of #64601 - grovesNL:two-backticks, r=jonas-schievink
Fix backticks in documentation

Fix a few typos in comments/documentation where backticks were doubled-up on one side.
2019-09-19 18:31:40 +02:00
Mazdak Farrokhzad
bda52e558e
Rollup merge of #63448 - RalfJung:miri-discriminant, r=eddyb
fix Miri discriminant handling

This can be reviewed commit-by-commit fairly well.

The Miri side is at https://github.com/rust-lang/miri/pull/903.

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

r? @eddyb @oli-obk
2019-09-19 18:31:37 +02:00
gaolei
1ab5593f95 factor out pluralisation remains after #64280 2019-09-20 00:25:27 +08:00
Niko Matsakis
b2c51c24c9 avoid generating drops for moved operands of calls
Currently, after a CALL terminator is created in MIR, we insert DROP
statements for all of its operands -- even though they were just moved
shortly before! These spurious drops are later removed, but not before
causing borrow check errors.

This PR series modifies the drop code to track operands that were
moved and avoid creating drops for them.

Right now, I'm only using this mechanism for calls, but it seems
likely it could be used in more places.
2019-09-19 11:50:00 -04:00
bors
9b9d2aff8d Auto merge of #64545 - nnethercote:ObligForest-more, r=nmatsakis
More `ObligationForest` improvements

Following on from #64500, these commits alsomake the code both nicer and faster.

r? @nikomatsakis
2019-09-19 06:53:54 +00:00
Joshua Groves
37bafeafe7 Fix backticks in documentation 2019-09-18 23:17:36 -06:00
Esteban Küber
479ce39939 Add explanation to type mismatch involving type params and assoc types 2019-09-18 17:30:35 -07:00
James Munns
f233a4c18b Fix a minor grammar nit, update UI tests 2019-09-19 00:16:16 +02:00
Nicholas Nethercote
3b85597d22 Add a specialized version of shallow_resolve().
The super-hot call site of `inlined_shallow_resolve()` basically does
`r.inlined_shallow_resolve(ty) != ty`. This commit introduces a
version of that function specialized for that particular call pattern,
`shallow_resolve_changed()`. Incredibly, this reduces the instruction
count for `keccak` by 5%.

The commit also renames `inlined_shallow_resolve()` as
`shallow_resolve()` and removes the `inline(always)` annotation, as it's
no longer nearly so hot.
2019-09-19 06:36:06 +10:00
Nicholas Nethercote
82e5c6ee65 Use explicit iteration instead of all() in process_obligation().
Amazingly enough, this is a 3.5% instruction count win on `keccak`.
2019-09-19 06:35:11 +10:00
Tyler Mandry
dbce655eda
Rollup merge of #64503 - RalfJung:miri-retag, r=oli-obk
rename Allocation::retag -> with_tags_and_extra

This is more consistent with `Pointer::with_tag`. Also, "retag" is a [term from Stacked Borrows](https://github.com/rust-lang/unsafe-code-guidelines/blob/master/wip/stacked-borrows.md#retagging) with a [corresponding Machine hook](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/interpret/machine/trait.Machine.html#method.retag), and this function has nothing to do with that other use of the term.

r? @oli-obk
2019-09-17 21:27:23 -07:00
bors
528379121c Auto merge of #64562 - tmandry:rollup-kfk0nuo, r=tmandry
Rollup of 10 pull requests

Successful merges:

 - #61626 (Get rid of special const intrinsic query in favour of `const_eval`)
 - #64283 (Updated RELEASES.md for 1.38.0)
 - #64394 (Shrink `SubregionOrigin`.)
 - #64429 (Fix failure note `to_str` implementation)
 - #64436 (improve Vec example soundness in mem::transmute docs)
 - #64502 (avoid duplicate issues for Miri build failures)
 - #64505 (Fix inconsistent link formatting)
 - #64529 (Add an example to Pin::as_mut)
 - #64541 (document Miri error categories)
 - #64544 (build-manifest: re-add some comments)

Failed merges:

r? @ghost
2019-09-17 22:21:10 +00:00
Tyler Mandry
f8b6e26cfb
Rollup merge of #64541 - RalfJung:miri-errors, r=oli-obk
document Miri error categories

r? @oli-obk
2019-09-17 14:10:55 -07:00
Tyler Mandry
ec905cf9e5
Rollup merge of #64394 - nnethercote:shrink-SubregionOrigin, r=Mark-Simulacrum
Shrink `SubregionOrigin`.

It's currently 120 bytes on x86-64, due to one oversized variant
(`Subtype`). This commit boxes `Subtype`'s contents, reducing the size
of `SubregionOrigin` to 32 bytes.

The change speeds things up by avoiding lots of `memcpy` calls, mostly
relating to `RegionConstraintData::constraints`, which is a `BTreeMap`
with `SubregionOrigin` values.
2019-09-17 14:10:47 -07:00
bors
7efe1c6e67 Auto merge of #64525 - nikomatsakis:issue-64512-drop-order-tail-temp, r=davidtwco
adjust desugaring for async fn to correct drop order

Old desugaring, given a user function body `{ $stmts; $expr }`

```
{
    let $param_pattern0 = $raw_param0;
    ...
    let $param_patternN = $raw_paramN;
    $stmts;
    $expr
}
```

New desugaring:

```
{
    let $param_pattern0 = $raw_param0;
    ...
    let $param_patternN = $raw_paramN;
    drop-temps {
        $stmts;
        $expr
    }
}
```

The drop-temps is an internal bit of HIR that drops temporaries from the resulting expression, but it should be equivalent to `return { $stmts; $expr }`.

Fixes #64512
Fixes #64391
2019-09-17 18:23:30 +00:00
Oliver Scherer
0de9485038 Get rid of special const intrinsic query in favour of const_eval 2019-09-17 16:31:55 +02:00
Mark Rousskov
4cc5aaada2 Protect error handler fields with single lock
This avoids concurrency-related bugs when locks are acquired for too
short a time and similar cases.
2019-09-17 09:30:45 -04:00
Mark Rousskov
2a767eec0c Remove unused methods from Handler 2019-09-17 09:30:45 -04:00
Mark Rousskov
b304e60131 Remove Handler::{emit, emit_with_code} 2019-09-17 09:30:45 -04:00
Mark Rousskov
998df0d70b Remove Handler::cancel 2019-09-17 09:30:44 -04:00
Mark Rousskov
2a3930d43c Privatize DiagnosticBuilder constructors 2019-09-17 09:30:44 -04:00
Mark Rousskov
0b586b436d Take Diagnostic in Handler::emit_diagnostic 2019-09-17 09:30:44 -04:00
Mark Rousskov
cdd805506e Replace DiagnosticBuilder with Diagnostic when emitting error 2019-09-17 09:29:46 -04:00
Niko Matsakis
2d8b10f63c adjust larger comment to include the body 2019-09-17 05:10:22 -04:00
Niko Matsakis
716b2bcfb3 use drop-temps { .. } pseudo-notation
DropTemps(...) looks like a function, this looks like wacko special stuff
2019-09-17 05:10:22 -04:00
Niko Matsakis
0a11e80fa8 introduce lower_block_expr convenience function, and use it 2019-09-17 05:10:22 -04:00
Ralf Jung
e8d858ef3c rename Allocation::retag -> with_tags_and_extra 2019-09-17 09:29:06 +02:00
Ralf Jung
daafeb35b7 document Miri error categories 2019-09-17 08:58:51 +02:00
Mazdak Farrokhzad
3edc644751
Rollup merge of #64085 - estebank:hrtb-errors, r=oli-obk
Tweak unsatisfied HRTB errors

r? @oli-obk

Close #35180.
2019-09-17 03:08:34 +02:00
Esteban Küber
0a985f2c86 Tweak unsatisfied HRTB errors 2019-09-16 15:34:33 -07:00
Mazdak Farrokhzad
a31d71f56b
Rollup merge of #64485 - RalfJung:miri, r=alexcrichton
update Miri

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

r? @alexcrichton for the Cargo.toml changes: with byteorder 1.3, the `i128` feature is a NOP, so we can remove it everywhere and then get rid of this crate in the workspace-hack.
2019-09-16 23:21:49 +02:00
Mazdak Farrokhzad
88e501e768
Rollup merge of #64357 - rust-lang:adt-docs-fix, r=varkor
`AdtDef` is an algebraic data type, not abstract data type

r? @varkor
2019-09-16 23:21:48 +02:00
Niko Matsakis
00d159095a adjust desugaring for async fn to correct drop order
Old desugaring, given a user function body { $stmts; $expr }

```
{
    let $param_pattern0 = $raw_param0;
    ...
    let $param_patternN = $raw_paramN;
    $stmts;
    $expr
}
```

New desugaring:

```
{
    let $param_pattern0 = $raw_param0;
    ...
    let $param_patternN = $raw_paramN;
    drop-temps {
        $stmts;
        $expr
    }
}
```

The drop-temps is an internal bit of HIR that drops temporaries from
the resulting expression, but it should be equivalent to `return {
$stmts; $expr }`.
2019-09-16 16:44:18 -04:00
Ralf Jung
f90a81c238 with byteorder 1.3, the i128 feature is a NOP 2019-09-16 18:28:05 +02:00