755 Commits

Author SHA1 Message Date
Matthias Krüger
4452446292 fix more typos found by codespell. 2018-02-17 17:38:49 +01:00
kennytm
9dab73773a
Rollup merge of #47543 - topecongiro:issue-42344, r=nikomatsakis
Disallow mutable borrow to non-mut statics

Closes #42344.
2018-02-06 02:13:46 +08:00
Seiichi Uchida
3d114c7f61 Remove delay_span_bug() in check_aliasability
This path was considered to be unreachable. However,
`&mut` could potentially live inside `static`.
For example, `static TAB: [&mut [u8]; 0] = [];`.
2018-02-04 19:15:34 +09:00
bors
616b66dca2 Auto merge of #47465 - estebank:include-space-after-mut, r=nikomatsakis
Include space in suggestion `mut` in bindings

Fix #46614.
2018-02-02 04:19:12 +00:00
Eduard-Mihai Burtescu
bba81c975d rustc_borrowck: replace "lvalue" terminology with "place" in docs. 2018-01-29 11:48:17 +02:00
Eduard-Mihai Burtescu
46a9bdda78 rustc: replace "lvalue" terminology with "place" in the code. 2018-01-29 01:49:29 +02:00
David Wood
c71cec8834
end_point handling multibyte characters correctly. 2018-01-27 11:46:27 +00:00
Esteban Küber
d0bd090efb Consider all whitespace when preparing span 2018-01-26 14:24:17 -08:00
Esteban Küber
a8f77e12fc Include space in suggestion mut in bindings 2018-01-26 14:24:17 -08:00
John Kåre Alsaker
9b57e60f03 Use delay_span_bug for things that should be errors 2018-01-23 05:10:38 +01:00
John Kåre Alsaker
ccf0d8399e Adds support for immovable generators. Move checking of invalid borrows across suspension points to borrowck. Fixes #44197, #45259 and #45093. 2018-01-23 05:10:38 +01:00
Esteban Küber
a0d44976bb Do not suggest to make mut binding external to Fn closure 2018-01-15 14:19:33 -08:00
bors
fd0f29237c Auto merge of #47261 - estebank:immutable-arg, r=petrochenkov
Assignment to immutable argument: diagnostic tweak

Re #46659.
2018-01-14 06:09:14 +00:00
Esteban Küber
90bc98c5d1 Modify message to match label 2018-01-10 11:41:12 -08:00
kennytm
6648dcd353
Rollup merge of #47258 - rkruppe:struct-assert, r=eddyb
rustc::ty: Rename struct_variant to non_enum_variant

r? @eddyb
2018-01-09 03:37:16 +08:00
Esteban Küber
18908184de Assignment to immutable argument: diagnostic tweak 2018-01-07 19:00:45 -08:00
Robin Kruppe
cf3fefe97f rustc::ty: Rename struct_variant to non_enum_variant
It is also intended for use with unions.
2018-01-08 00:28:05 +01:00
Malo Jaffré
3f073c409a Try to fix a perf regression by updating log
Upgrade `log` to `0.4` in multiple crates.
2018-01-07 16:54:05 +01:00
bors
78f24d86b8 Auto merge of #47124 - estebank:loan-paths, r=nikomatsakis
Reword reason for move note

On move errors, when encountering an enum variant, be more ambiguous and do not refer to the type on the cause note, to avoid referring to `(maybe as std::prelude::v1::Some).0`, and instead refer to `the value`.

Sidesteps part of the problem with #41962:

```
error[E0382]: use of partially moved value: `maybe`
 --> file.rs:5:30
  |
5 |         if let Some(thing) = maybe {
  |                     -----    ^^^^^ value used here after move
  |                     |
  |                     value moved here
  = note: move occurs because the value has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait

error[E0382]: use of moved value: `(maybe as std::prelude::v1::Some).0`
 --> file.rs:5:21
  |
5 |         if let Some(thing) = maybe {
  |                     ^^^^^ value moved here in previous iteration of loop
  = note: move occurs because the value has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait

error: aborting due to 2 previous errors
```

Previous discussion: #44360

r? @arielb1
2018-01-04 05:52:39 +00:00
Esteban Küber
e027f5a99e Add mir test, review comments 2018-01-03 13:55:40 -08:00
Esteban Küber
48b684a40a Be ambiguous when type cannot be properly mentioned 2018-01-02 19:49:38 -08:00
Esteban Küber
6c506d4c71 Address review comments: make label shorter 2018-01-01 22:10:13 -08:00
Esteban Küber
be6734a7e7 Move reason for move to label 2018-01-01 21:55:46 -08:00
matthewjasper
f26c0b41d2 Delay panic for aliasing violation for static items. 2018-01-01 17:53:12 +00:00
Esteban Küber
6384568fdb Reword trying to operate in immutable fields
The previous message ("cannot assign/mutably borrow immutable field")
when trying to modify a field of an immutable binding gave the
(incorrect) impression that fields can be mutable independently of their
ADT's binding. Slightly reword the message to read "cannot
assign/mutably borrow field of immutable binding".
2017-12-31 15:32:41 -08:00
Santiago Pastorino
e980fb8bef feature nll implies borrowck=mir 2017-12-20 14:38:13 -05:00
bors
588f7db8ef Auto merge of #46733 - nikomatsakis:nll-master-to-rust-master-5, r=arielb1
nll part 5

Next round of changes from the nll-master branch.

Extensions:

- we now propagate ty-region-outlives constraints out of closures and into their creator when necessary
- we fix a few ICEs that can occur by doing liveness analysis (and the resulting normalization) during type-checking
- we handle the implicit region bound that assumes that each type `T` outlives the fn body
- we handle normalization of inputs/outputs in fn signatures

Not included in this PR (will come next):

- handling `impl Trait`
- tracking causal information
- extended errors

r? @arielb1
2017-12-20 03:58:15 +00:00
Niko Matsakis
3a5842afe1 add a new RegionKind variant: ReClosureBound
This is needed to allow the `ClosureRegionRequirements` to capture
types that include regions.
2017-12-15 10:27:52 -05:00
Esteban Küber
02079e44dd Point at var in short lived borrows 2017-12-14 22:45:45 -08:00
Irina-Gabriela Popa
d6f70359dc rustc_back: remove slice module in favor of std::slice::from_ref. 2017-12-04 18:25:06 +02:00
est31
c9af68e90c Replace -Zborrowck-mir with -Zborrowck=mode
where mode is one of {ast,mir,compare}.

This commit only implements the functionality.
The tests will be updated in a follow up commit.
2017-11-26 16:36:52 +01:00
Niko Matsakis
54f4f396d9 convert the closure_kinds map to just store the origin information
The closure kinds themselves are now completely found in the `ClosureSubsts`.
2017-11-18 07:47:37 -05:00
Michael Woerister
24e54ddefa Introduce LocalDefId which provides a type-level guarantee that the DefId is from the local crate. 2017-11-16 14:04:01 +01:00
Oliver Schneider
6ae440e048
Make the difference between lint codes and error codes explicit 2017-11-02 10:19:41 +01:00
Niko Matsakis
f700728a3b make end-point optional in the borrow check 2017-10-31 12:41:39 -04:00
Josh Leeb-du Toit
37f2382435 Refactor if block to use idiomatic matches 2017-10-30 09:58:09 +11:00
Josh Leeb-du Toit
014e61094a Refactor matches to use Result::err 2017-10-30 08:21:56 +11:00
Josh Leeb-du Toit
5086657b42 Fix duplicate display of error E0502 2017-10-29 12:14:13 +11:00
Carol (Nichols || Goulding)
0e46cf4db4 Reword to avoid using either re-assignment or reassignment in errors 2017-10-25 11:29:52 -04:00
bors
7a4f39453c Auto merge of #44501 - nikomatsakis:issue-44137-non-query-data-in-tcx, r=eddyb
remove or encapsulate the remaining non-query data in tcx

I wound up removing the existing cache around inhabitedness since it didn't seem to be adding much value. I reworked const rvalue promotion, but not that much (i.e., I did not split the computation into bits, as @eddyb had tossed out as a suggestion). But it's now demand driven, at least.

cc @michaelwoerister -- see the `forbid_reads` change in last commit

r? @eddyb -- since the trickiest of this PR is the work on const rvalue promotion

cc #44137
2017-10-18 10:44:08 +00:00
kennytm
40d61f5982 Rollup merge of #45097 - nivkner:fixme_fixup2, r=estebank
address more FIXME whose associated issues were marked as closed

part of #44366
2017-10-17 22:20:55 +08:00
Niko Matsakis
0f568e2f34 convert constant promotion into a query 2017-10-16 17:32:22 -04:00
Niv Kaminer
90f6bc0bc7 turn link to RFC 1751 into a markdown link 2017-10-16 14:25:33 +00:00
bors
fdec805d03 Auto merge of #45283 - alexcrichton:used-mut-nodes, r=arielb1
rustc: Remove `used_mut_nodes` from `TyCtxt`

This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.

Closes #42384
2017-10-16 03:02:05 +00:00
Alex Crichton
4df1278c69 rustc: Remove used_mut_nodes from TyCtxt
This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.

Closes #42384
2017-10-14 09:29:02 -07:00
bors
9c5e9a500d Auto merge of #45167 - pnkfelix:migrate-remaining-ast-diagnostics, r=arielb1
MIR-borrowck: Migrate remaining ast diagnostics

This PR migrates all of the remaining diagnostics in `rustc_borrowck` over to `rustc_mir`, exposing them for use by both AST-borrowck and MIR-borrowck.

This should hopefully resolve all remaining cases of diagnostic messages emitted from borrowck under `-Z borrowck-mir` without an origin annotation.
2017-10-14 13:47:44 +00:00
Esteban Küber
fab6a10c00 Point at immutable outer variable
When attempting to mutate an immutable outer variable from a closure,
point at the outer variable and suggest making it mutable.
2017-10-11 15:56:22 -07:00
Felix S. Klock II
5b68e1f8da Add Origin::Ast arguments to all of the migrated AST-borrowck diagnostics. 2017-10-10 13:12:00 +02:00
Felix S. Klock II
cf11ef436b Fixed client code for diagnostics migration, adding new methods to trait BorrowckErrors as necessary. 2017-10-10 13:12:00 +02:00
Felix S. Klock II
52cb6fc936 Moved remaining AST-borrowck diagnostic definitions to rustc_mir crate. 2017-10-10 13:12:00 +02:00