]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoRollup merge of #61908 - matklad:overflow, r=petrochenkov
Mazdak Farrokhzad [Mon, 17 Jun 2019 18:56:01 +0000 (20:56 +0200)]
Rollup merge of #61908 - matklad:overflow, r=petrochenkov

don't ICE on large files

This is an extremely marginal error, so the cost of properly threading
`Handler` everywhere just not seemed justified. However, it's useful
to panic when we create a file, and not when we slice strings with
overflown indexes somewhere in the guts of the compiler.

For this reason, while we provide safe `try_new_source_file`, we don't
change the existing public interface and just panic more or less
cleanly.

closes #61904

r? @petrochenkov

5 years agoRollup merge of #61893 - chpio:weak_ptr_eq_methods, r=rkruppe
Mazdak Farrokhzad [Mon, 17 Jun 2019 18:56:00 +0000 (20:56 +0200)]
Rollup merge of #61893 - chpio:weak_ptr_eq_methods, r=rkruppe

make `Weak::ptr_eq`s into methods

This makes the `Weak::ptr_eq`s associated function into methods. There's no reason for methods on `Weak`s to be associated functions, as there is no `Dered` thus no possibility of a collision. Also: methods can be called using the associated function syntax.

follow up on https://github.com/rust-lang/rust/pull/55987
[Tracking issue for weak_ptr_eq](https://github.com/rust-lang/rust/issues/55981)

5 years agoRollup merge of #61885 - scottmcm:slice-iter-len-opt, r=rkruppe,RalfJung
Mazdak Farrokhzad [Mon, 17 Jun 2019 18:55:58 +0000 (20:55 +0200)]
Rollup merge of #61885 - scottmcm:slice-iter-len-opt, r=rkruppe,RalfJung

Help LLVM better optimize slice::Iter(Mut)::len

r? @RalfJung

I've included a codegen test that fails without this change as a demonstration of usefulness.

5 years agoRollup merge of #61836 - ljedrz:i_still_hate_node_ids, r=ljedrz
Mazdak Farrokhzad [Mon, 17 Jun 2019 18:55:57 +0000 (20:55 +0200)]
Rollup merge of #61836 - ljedrz:i_still_hate_node_ids, r=ljedrz

Replace some uses of NodeId with HirId

We are still using `NodeId` in some spots where we could use `HirId` instead; this PR targets some of these spots and removes some of the associated `hir::map` functions.

5 years agoRollup merge of #61702 - RalfJung:const-enum-cast, r=oli-obk
Mazdak Farrokhzad [Mon, 17 Jun 2019 18:55:55 +0000 (20:55 +0200)]
Rollup merge of #61702 - RalfJung:const-enum-cast, r=oli-obk

test more variants of enum-int-casting

As I learned in https://github.com/rust-lang/rust/pull/61673#issuecomment-500213506, there is a code path we are not testing yet. Looks like enum-int-casting with and without an intermediate let-binding is totally different.

EDIT: The reason for this is to get rid of the cycle in definitions such as:
```rust
enum Foo {
    A = 0,
    B = Foo::A as isize + 2,
}
```
This has historically been supported, so a hack adding special treatment to `Enum::Variant as _` was added to keep supporting it.

5 years agoremove superfluous space
ljedrz [Mon, 17 Jun 2019 18:31:26 +0000 (20:31 +0200)]
remove superfluous space

5 years agofix rebase fallout
ljedrz [Mon, 17 Jun 2019 17:01:41 +0000 (19:01 +0200)]
fix rebase fallout

5 years agochange NodeId to HirId in some HIR docs
ljedrz [Sun, 16 Jun 2019 15:44:19 +0000 (17:44 +0200)]
change NodeId to HirId in some HIR docs

5 years agosimplify ICE handling in HirIdValidator
ljedrz [Sun, 16 Jun 2019 15:37:58 +0000 (17:37 +0200)]
simplify ICE handling in HirIdValidator

5 years agofix a HIR doc, simplify one HIR-related function call
ljedrz [Sun, 16 Jun 2019 15:30:53 +0000 (17:30 +0200)]
fix a HIR doc, simplify one HIR-related function call

5 years agorenamve hir_to_string to node_to_string
ljedrz [Sun, 16 Jun 2019 15:30:02 +0000 (17:30 +0200)]
renamve hir_to_string to node_to_string

5 years agoremove _by_hir_id if there is no NodeId counterpart
ljedrz [Fri, 14 Jun 2019 16:58:55 +0000 (18:58 +0200)]
remove _by_hir_id if there is no NodeId counterpart

5 years agoreplace some uses of NodeId with HirId
ljedrz [Fri, 14 Jun 2019 10:28:47 +0000 (12:28 +0200)]
replace some uses of NodeId with HirId

5 years agodon't ICE on large files
Aleksey Kladov [Mon, 17 Jun 2019 08:35:26 +0000 (11:35 +0300)]
don't ICE on large files

This is an extremely marginal error, so the cost of properly threading
`Handler` everywhere just not seemed justified. However, it's useful
to panic when we create a file, and not when we slice strings with
overflown indexes somewhere in the guts of the compiler.

For this reason, while we provide safe `try_new_source_file`, we don't
change the existing public interface and just panic more or less
cleanly.

5 years agoAuto merge of #61857 - Centril:typeck-extract-expr, r=oli-obk
bors [Mon, 17 Jun 2019 13:32:35 +0000 (13:32 +0000)]
Auto merge of #61857 - Centril:typeck-extract-expr, r=oli-obk

typeck: extract expr type-checking to expr.rs + refactor check_expr_kind

In this PR we:

- Extract out the bulk of the expression type checking logic from `check/mod.rs` into a new file `check/expr.rs`.

- Refactor `fn check_expr_kind` into several smaller functions.

More functions should probably be moved but I think this is a reasonable start.

r? @oli-obk
cc @eddyb

5 years agoAuto merge of #58508 - Zoxc:time-crate, r=oli-obk
bors [Mon, 17 Jun 2019 09:59:57 +0000 (09:59 +0000)]
Auto merge of #58508 - Zoxc:time-crate, r=oli-obk

Add a RUSTC_TIME env var to time rust crates during bootstrap

Blocked on https://github.com/rust-lang/cargo/pull/6674

r? @michaelwoerister

Example for rustc with https://github.com/rust-lang/rust/pull/58507:
```
  time: 0.460; rss: 94MB parsing
  time: 0.000; rss: 94MB attributes injection
  time: 0.000; rss: 94MB recursion limit
  time: 0.000; rss: 94MB crate injection
  time: 0.000; rss: 94MB plugin loading
  time: 0.000; rss: 94MB plugin registration
  time: 0.044; rss: 94MB pre ast expansion lint checks
    time: 1.999; rss: 316MB expand crate
    time: 0.000; rss: 316MB check unused macros
  time: 2.000; rss: 316MB expansion
  time: 0.000; rss: 316MB maybe building test harness
  time: 0.053; rss: 316MB AST validation
  time: 0.000; rss: 316MB maybe creating a macro crate
  time: 1.515; rss: 397MB name resolution
  time: 0.122; rss: 397MB complete gated feature checking
  time: 0.655; rss: 546MB lowering ast -> hir
  time: 0.136; rss: 550MB early lint checks
    time: 0.117; rss: 540MB validate hir map
  time: 0.606; rss: 540MB indexing hir
  time: 0.000; rss: 480MB load query result cache
  time: 0.000; rss: 478MB dep graph tcx init
  time: 0.000; rss: 478MB looking for entry point
  time: 0.001; rss: 478MB looking for plugin registrar
  time: 0.001; rss: 478MB looking for derive registrar
  time: 0.049; rss: 478MB loop checking
  time: 0.064; rss: 479MB attribute checking
  time: 0.166; rss: 484MB stability checking
  time: 0.699; rss: 566MB type collecting
  time: 0.006; rss: 566MB outlives testing
  time: 0.018; rss: 568MB impl wf inference
    time: 0.002; rss: 583MB unsafety checking
    time: 0.005; rss: 583MB orphan checking
  time: 0.227; rss: 583MB coherence checking
  time: 0.006; rss: 583MB variance testing
  time: 1.546; rss: 657MB wf checking
  time: 0.389; rss: 665MB item-types checking
  time: 13.999; rss: 837MB item-bodies checking
    time: 1.692; rss: 883MB rvalue promotion
    time: 0.067; rss: 883MB intrinsic checking
    time: 0.624; rss: 887MB match checking
    time: 0.246; rss: 889MB liveness checking
  time: 2.629; rss: 889MB misc checking
  time: 0.000; rss: 889MB borrow checking
  time: 16.754; rss: 1242MB MIR borrow checking
  time: 0.050; rss: 1242MB dumping chalk-like clauses
  time: 0.010; rss: 1242MB MIR effect checking
  time: 0.001; rss: 1242MB layout testing
    time: 0.829; rss: 1244MB privacy checking
    time: 0.183; rss: 1247MB death checking
    time: 0.100; rss: 1248MB unused lib feature checking
    time: 0.405; rss: 1250MB lint checking
  time: 1.518; rss: 1250MB misc checking
  time: 0.000; rss: 1250MB resolving dependency formats
    time: 2.928; rss: 1332MB write metadata
      time: 0.014; rss: 1332MB collecting roots
      time: 7.621; rss: 1488MB collecting mono items
    time: 7.635; rss: 1488MB monomorphization collection
    time: 0.557; rss: 1567MB codegen unit partitioning
    time: 27.971; rss: 2656MB codegen to LLVM IR
    time: 0.056; rss: 2656MB assert dep graph
    time: 0.000; rss: 2656MB serialize dep graph
  time: 195.414; rss: 2656MB codegen
  time: 0.000; rss: 329MB serialize work products
    time: 1.664; rss: 331MB running linker
  time: 1.965; rss: 331MB linking
[RUSTC-TIMING] rustc test:false 950.103
```
It doesn't really look like the times add up here.

5 years agoAuto merge of #61889 - matthiaskrgr:submodule_upd, r=oli-obk
bors [Mon, 17 Jun 2019 07:12:03 +0000 (07:12 +0000)]
Auto merge of #61889 - matthiaskrgr:submodule_upd, r=oli-obk

submodules: update clippy from 7b2a7a22 to be5d17fe

Changes:
````
Fix wrong lifetime of TyCtxt
Use replace_region_in_file for creating the lint list
Restructure rename tests
Register rename to the LintStore.
Rename REDUNDANT_STATIC_LIFETIME to REDUNDANT_STATIC_LIFETIMES.
Remove pub from RedundantStaticLifetime.visit_type function.
Rename const_static_lifetime to redundant_static_lifetime.
Merge StaticConst and StaticStatic lints into StaticConst.
Use RedundantStaticLifetime in StaticStatic.
Move type-checking logic in StaticConst to RedundantStaticLifetime.
Add lint for statics with explicit static lifetime.
minor fix
make it pass dogfood
run rustfmt
fix padding and put clippy someplaces
show default lint levels
group printing
prelim arg parse
move Lint static def into its own module
switch to sorted usable lints
Update clippy_dev/src/main.rs
initial commit for help improvements on clippy-driver
````

Fixes clippy toolstate.
r? @oli-obk

5 years agoAuto merge of #61892 - rijenkii:master, r=Centril
bors [Sun, 16 Jun 2019 23:25:12 +0000 (23:25 +0000)]
Auto merge of #61892 - rijenkii:master, r=Centril

weird-exprs: if if if if

The `if` keyword can be chained as long as there are enough `{...} else {...}` following, and they all return a `bool` (not required for the last one).
`if` expression can be also put inside a `match` arm guard, thus making the whole thing a little bit more confusing.

Discovered this clusterfunk while reading the reference because I have nothing better to do.

5 years agoAuto merge of #61347 - Centril:stabilize-underscore_const_names, r=petrochenkov
bors [Sun, 16 Jun 2019 20:33:55 +0000 (20:33 +0000)]
Auto merge of #61347 - Centril:stabilize-underscore_const_names, r=petrochenkov

Stabilize underscore_const_names in 1.37.0

You are now permitted to write:

```rust
const _: $type_expression = $term_expression;
```

That is, we change the [grammar of items](https://github.com/rust-lang-nursery/wg-grammar/blob/9d1984d7ae8d6576f943566539a31a5800644c57/grammar/item.lyg#L3-L42), as written in [the *`.lyg`* notation](https://github.com/rust-lang/gll/tree/263bf161dad903e67aa65fc591ced3cab18afa2a#grammar), from:

```java
Item = attrs:OuterAttr* vis:Vis? kind:ItemKind;
ItemKind =
  | ...
  | Const:{ "const" name:IDENT ":" ty:Type "=" value:Expr ";" }
  | ...
  ;
```

into:

```java
Item = attrs:OuterAttr* vis:Vis? kind:ItemKind;
ItemKind =
  | ...
  | Const:{ "const" name:IdentOrUnderscore ":" ty:Type "=" value:Expr ";" }
  | ...
  ;

IdentOrUnderscore =
  | Named:IDENT
  | NoName:"_"
  ;
```

r? @petrochenkov

5 years agoAuto merge of #61881 - glaubitz:sparc64-ffi-abi, r=petrochenkov
bors [Sun, 16 Jun 2019 17:48:24 +0000 (17:48 +0000)]
Auto merge of #61881 - glaubitz:sparc64-ffi-abi, r=petrochenkov

librustc_codegen_llvm: Use repr(transparent) for bitflags over repr(C…

…) (#61306)

In order to make sure that Rust's bitflags types are passed the same way in the Rust ABI as they are in the C ABI, we need to use the attribute repr(transparent) over the repr(C) attribute for the single-field bitflags structs in in order to prevent ABI mismatches. Thanks to Michael Karcher for finding this bug.

5 years agoAuto merge of #61754 - nikomatsakis:trait-caching-perf-3, r=pnkfelix
bors [Sun, 16 Jun 2019 14:58:05 +0000 (14:58 +0000)]
Auto merge of #61754 - nikomatsakis:trait-caching-perf-3, r=pnkfelix

create a "provisional cache" to restore performance in the case of cycles

Introduce a "provisional cache" that caches the results of auto trait resolutions but keeps them from entering the *main* cache until everything is ready. This turned out a bit more complex than I hoped, but I don't see another short term fix -- happy to take suggestions! In the meantime, it's very clear we need to rework the trait solver. This resolves the extreme performance slowdown experienced in #60846 -- I plan to add a perf.rust-lang.org regression test to track this.

Caveat: I've not run `x.py test` in full yet.

r? @pnkfelix
cc @arielb1

Fixes #60846

5 years agoAuto merge of #61739 - chansuke:separate-unit-tests, r=petrochenkov
bors [Sun, 16 Jun 2019 12:15:01 +0000 (12:15 +0000)]
Auto merge of #61739 - chansuke:separate-unit-tests, r=petrochenkov

Separate unit tests

I'm working on #61097.

About half of the modules are done but dozens of modules are still remaining. I will rebase and squash the commits later.

5 years agomake `Weak::ptr_eq`s into methods
Thomas Heck [Sun, 16 Jun 2019 11:57:07 +0000 (13:57 +0200)]
make `Weak::ptr_eq`s into methods

5 years agoif if if if
Rijenkii [Sun, 16 Jun 2019 12:01:05 +0000 (19:01 +0700)]
if if if if

5 years agoFix tidy
Vadim Petrochenkov [Sun, 16 Jun 2019 11:15:11 +0000 (14:15 +0300)]
Fix tidy

5 years agoSeparate libsyntax_ext module
chansuke [Sun, 16 Jun 2019 01:12:26 +0000 (10:12 +0900)]
Separate libsyntax_ext module

5 years agoSeparate libfmt_macros module
chansuke [Sat, 15 Jun 2019 19:54:46 +0000 (04:54 +0900)]
Separate libfmt_macros module

5 years agoSeparate bootstrap module
chansuke [Sat, 15 Jun 2019 19:21:51 +0000 (04:21 +0900)]
Separate bootstrap module

5 years agoSeparate libtest module
chansuke [Tue, 11 Jun 2019 17:34:34 +0000 (02:34 +0900)]
Separate libtest module

5 years agoSeparate libserialize module
chansuke [Wed, 5 Jun 2019 19:20:49 +0000 (04:20 +0900)]
Separate libserialize module

5 years agoSeparate librustcdoc module
chansuke [Wed, 5 Jun 2019 18:33:39 +0000 (03:33 +0900)]
Separate librustcdoc module

5 years agoSeparate librustc module
chansuke [Wed, 5 Jun 2019 18:16:41 +0000 (03:16 +0900)]
Separate librustc module

5 years agoSeparate librustc_metadata module
chansuke [Wed, 5 Jun 2019 17:53:24 +0000 (02:53 +0900)]
Separate librustc_metadata module

5 years agoSeparate librustc_lint module
chansuke [Wed, 5 Jun 2019 17:39:56 +0000 (02:39 +0900)]
Separate librustc_lint module

5 years agoSeparate librustc_data_structures module
chansuke [Wed, 5 Jun 2019 16:44:33 +0000 (01:44 +0900)]
Separate librustc_data_structures module

5 years agoSeparate librustc_codegen_ssa module
chansuke [Wed, 5 Jun 2019 16:11:43 +0000 (01:11 +0900)]
Separate librustc_codegen_ssa module

5 years agosubmodules: update clippy from 7b2a7a22 to be5d17fe
Matthias Krüger [Sun, 16 Jun 2019 10:40:22 +0000 (12:40 +0200)]
submodules: update clippy from 7b2a7a22 to be5d17fe

Changes:
````
Fix wrong lifetime of TyCtxt
Use replace_region_in_file for creating the lint list
Restructure rename tests
Register rename to the LintStore.
Rename REDUNDANT_STATIC_LIFETIME to REDUNDANT_STATIC_LIFETIMES.
Remove pub from RedundantStaticLifetime.visit_type function.
Rename const_static_lifetime to redundant_static_lifetime.
Merge StaticConst and StaticStatic lints into StaticConst.
Use RedundantStaticLifetime in StaticStatic.
Move type-checking logic in StaticConst to RedundantStaticLifetime.
Add lint for statics with explicit static lifetime.
minor fix
make it pass dogfood
run rustfmt
fix padding and put clippy someplaces
show default lint levels
group printing
prelim arg parse
move Lint static def into its own module
switch to sorted usable lints
Update clippy_dev/src/main.rs
initial commit for help improvements on clippy-driver
````

5 years agoSeparate libgraphviz module
chansuke [Wed, 5 Jun 2019 15:55:07 +0000 (00:55 +0900)]
Separate libgraphviz module

5 years agoSeparate libarena::lib module
chansuke [Mon, 3 Jun 2019 17:58:27 +0000 (02:58 +0900)]
Separate libarena::lib module

5 years agoSeparate liballoc module
chansuke [Sat, 1 Jun 2019 16:50:10 +0000 (01:50 +0900)]
Separate liballoc module

5 years agoAuto merge of #60730 - matthewjasper:optimize-false-edges, r=pnkfelix
bors [Sun, 16 Jun 2019 09:30:34 +0000 (09:30 +0000)]
Auto merge of #60730 - matthewjasper:optimize-false-edges, r=pnkfelix

Optimize matches

Attempt to fix or improve #60571

This is breaking some diagnostics because the MIR for match arms isn't in source order any more.

cc @centril

5 years agoAuto merge of #61886 - Centril:rollup-3p3m2fu, r=Centril
bors [Sun, 16 Jun 2019 04:46:14 +0000 (04:46 +0000)]
Auto merge of #61886 - Centril:rollup-3p3m2fu, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #61447 (Add some Vec <-> VecDeque documentation)
 - #61704 (Pass LLVM linker flags to librustc_llvm build)
 - #61829 (rustbuild: include llvm-libunwind in dist tarball)
 - #61832 (update miri)
 - #61866 (Remove redundant `clone()`s)
 - #61869 (Cleanup some new active feature gates)

Failed merges:

r? @ghost

5 years agoHelp LLVM better optimize slice::Iter(Mut)::len
Scott McMurray [Sun, 16 Jun 2019 03:54:04 +0000 (20:54 -0700)]
Help LLVM better optimize slice::Iter(Mut)::len

5 years agoRollup merge of #61869 - Centril:cleanup-feature-gates, r=alexreg
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:19 +0000 (06:05 +0200)]
Rollup merge of #61869 - Centril:cleanup-feature-gates, r=alexreg

Cleanup some new active feature gates

r? @alexreg

5 years agoRollup merge of #61866 - sinkuu:redundant_clone, r=petrochenkov
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:18 +0000 (06:05 +0200)]
Rollup merge of #61866 - sinkuu:redundant_clone, r=petrochenkov

Remove redundant `clone()`s

5 years agoRollup merge of #61832 - RalfJung:miri, r=oli-obk
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:17 +0000 (06:05 +0200)]
Rollup merge of #61832 - RalfJung:miri, r=oli-obk

update miri

Fixes https://github.com/rust-lang/rust/issues/61830
Fixes https://github.com/rust-lang/rust/issues/61848

r? @oli-obk

5 years agoRollup merge of #61829 - Keruspe:libunwind-src, r=alexcrichton
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:15 +0000 (06:05 +0200)]
Rollup merge of #61829 - Keruspe:libunwind-src, r=alexcrichton

rustbuild: include llvm-libunwind in dist tarball

Without this we cannot build with llvm-libunwind enabled from a release tarball.

Could it be backported in a beta rollup somehow so that this gets fixed before 1.36 is released?

5 years agoRollup merge of #61704 - petrhosek:llvm-linker-flags, r=alexcrichton
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:14 +0000 (06:05 +0200)]
Rollup merge of #61704 - petrhosek:llvm-linker-flags, r=alexcrichton

Pass LLVM linker flags to librustc_llvm build

Some -L and -l flags may be needed even when building librustc_llvm,
for example when using static libc++ on Linux we may need to manually
specify the library search path and -ldl -lpthread as additional link
dependencies. We pass LLVM linker flags from config to librustc_llvm
build to make sure these cases are handled.

5 years agoRollup merge of #61447 - scottmcm:vec-vecdeque, r=sfackler
Mazdak Farrokhzad [Sun, 16 Jun 2019 04:05:12 +0000 (06:05 +0200)]
Rollup merge of #61447 - scottmcm:vec-vecdeque, r=sfackler

Add some Vec <-> VecDeque documentation

These are more than just `.into_iter().collect()`, so talk about some of their nuances.

For VecDeque -> Vec I'm trying to intentionally not write a guarantee for people making their own `Vec`s, since the rules are more complicated than I think we want to commit to forever.

The "Vec -> VecDeque doesn't reallocate" guarantee seems reasonable, though.  (And I'm intentionally ambiguous about when it's O(1) instead of O(n).)

5 years agolibrustc_codegen_llvm: Use repr(transparent) for bitflags over repr(C) (#61306)
John Paul Adrian Glaubitz [Sun, 16 Jun 2019 00:53:33 +0000 (02:53 +0200)]
librustc_codegen_llvm: Use repr(transparent) for bitflags over repr(C) (#61306)

In order to make sure that Rust's bitflags types are passed the same
way in the Rust ABI as they are in the C ABI, we need to use the attribute
repr(transparent) over the repr(C) attribute for the single-field bitflags
structs in in order to prevent ABI mismatches. Thanks to Michael Karcher
for finding this bug.

5 years agoAuto merge of #61828 - RalfJung:cfg-if, r=alexcrichton
bors [Sat, 15 Jun 2019 21:15:28 +0000 (21:15 +0000)]
Auto merge of #61828 - RalfJung:cfg-if, r=alexcrichton

make sure we use cfg-if as a std dependency

xargo currently fails to build libstd because this feature is missing. My guess is that it works in rustc because the feature is enabled elsewhere, but that does not help for a libstd-only build.

Miri is currently in a state where it is shipped but broken, which makes CI fail for projects that are tested in Miri. So this is kind of urgent.

Cc @alexcrichton  https://github.com/rust-lang/rust/pull/61720

5 years agoAuto merge of #61868 - Centril:rollup-gglsecp, r=Centril
bors [Sat, 15 Jun 2019 18:24:18 +0000 (18:24 +0000)]
Auto merge of #61868 - Centril:rollup-gglsecp, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #61785 (note some safety concerns of raw-ptr-to-ref casts)
 - #61805 (typeck: Fix ICE for blocks in repeat expr count.)
 - #61813 (Remove some unnecessary symbol interner ops)
 - #61824 (in which we decline to lint single-use lifetimes in `derive`d impls)
 - #61844 (Change `...` to `..=` where applicable)
 - #61854 (Minor cosmetic improvements to accompany PR 61825)

Failed merges:

r? @ghost

5 years agocleanup some new active feature gates.
Mazdak Farrokhzad [Sat, 15 Jun 2019 17:00:49 +0000 (19:00 +0200)]
cleanup some new active feature gates.

5 years agoRollup merge of #61854 - alexreg:fix-type-alias-enum-patterns, r=Centril
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:45:07 +0000 (17:45 +0200)]
Rollup merge of #61854 - alexreg:fix-type-alias-enum-patterns, r=Centril

Minor cosmetic improvements to accompany PR 61825

r? @Centril

5 years agoRollup merge of #61844 - AaronKutch:master, r=Centril
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:45:06 +0000 (17:45 +0200)]
Rollup merge of #61844 - AaronKutch:master, r=Centril

Change `...` to `..=` where applicable

This is mainly to fix #61816, but I decided to manually check a few thousand `...` throughout the code base to check for any other cases. I think I found a documentation bug in `src\libsyntax\ast.rs` where both `1..` and `1...` where mentioned. If there is internal support for both `1..` and `1..=` (that can exist before error handling gets to it), then I can add that back.
There were some other cases that look like `// struct Closure<'l0...'li, T0...Tj, CK, CS, U0...Uk> {`, `// <P0 as Trait<P1...Pn>>::Foo: 'a`, and `assert!(min <= max, "discriminant range is {}...{}", min, max);`, but I am not sure if I should change those.
There are a bunch of cases in the `/test/` directory that could be changed, but I presume I should just leave those be.

5 years agoRollup merge of #61824 - rust-lang:single_derive, r=eddyb
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:45:04 +0000 (17:45 +0200)]
Rollup merge of #61824 - rust-lang:single_derive, r=eddyb

in which we decline to lint single-use lifetimes in `derive`d impls

Resolves #53738.

r? @eddyb

5 years agoRollup merge of #61813 - matthewjasper:remove-unnecessary-symbol-ops, r=petrochenkov
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:45:02 +0000 (17:45 +0200)]
Rollup merge of #61813 - matthewjasper:remove-unnecessary-symbol-ops, r=petrochenkov

Remove some unnecessary symbol interner ops

* Don't gensym symbols that don't need to worry about colliding with other symbols
* Use symbol constants instead of interning string literals in a few places.
* Don't generate a module in `__register_diagnostic`

r? @petrochenkov

5 years agoRollup merge of #61805 - davidtwco:ice-const-generic-repeat-expr-count-sequel, r...
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:45:01 +0000 (17:45 +0200)]
Rollup merge of #61805 - davidtwco:ice-const-generic-repeat-expr-count-sequel, r=varkor

typeck: Fix ICE for blocks in repeat expr count.

Fixes #61336 (again). This PR fixes an ICE that occured when a block expression resolving to a const generic was used for the count of an array repeat expression.

r? @varkor

5 years agoRollup merge of #61785 - RalfJung:as-ref, r=rkruppe
Mazdak Farrokhzad [Sat, 15 Jun 2019 15:44:59 +0000 (17:44 +0200)]
Rollup merge of #61785 - RalfJung:as-ref, r=rkruppe

note some safety concerns of raw-ptr-to-ref casts

5 years agoAuto merge of #61143 - estebank:issue-61106, r=eddyb
bors [Sat, 15 Jun 2019 13:12:13 +0000 (13:12 +0000)]
Auto merge of #61143 - estebank:issue-61106, r=eddyb

When suggesting borrow, remove useless clones

Fix #61106.

5 years agoRemove unnecessary `.clone()`
Shotaro Yamada [Sat, 8 Jun 2019 10:06:58 +0000 (19:06 +0900)]
Remove unnecessary `.clone()`

5 years agoUse `slice::from_ref` instead of cloning
Shotaro Yamada [Sat, 8 Jun 2019 09:37:37 +0000 (18:37 +0900)]
Use `slice::from_ref` instead of cloning

5 years agoAuto merge of #59752 - Zoxc:dylib-fix, r=alexcrichton
bors [Sat, 15 Jun 2019 10:18:09 +0000 (10:18 +0000)]
Auto merge of #59752 - Zoxc:dylib-fix, r=alexcrichton

Limit dylib symbols

This makes `windows-gnu` match the behavior of `windows-msvc`. It probably doesn't make sense to export these symbols on other platforms either.

5 years agoAuto merge of #61825 - Centril:tauv-infer-fix, r=petrochenkov
bors [Sat, 15 Jun 2019 03:47:55 +0000 (03:47 +0000)]
Auto merge of #61825 - Centril:tauv-infer-fix, r=petrochenkov

type_alias_enum_variants: fix #61801; allow a path pattern to infer

Fix #61801.

Given a type-relative path pattern referring to an enum variant through a type alias, allow inferring the generic argument applied in the expectation set by the scrutinee of a `match` expression.

Similar issues may exist for `let` statements but I don't know how to test for that since `PhantomData<T>` is necessary...)

The gist of the problem here was that `resolve_ty_and_res_ufcs` was called twice which is apparently no good... It is possible that this PR is papering over some deeper problem, but that is beyond my knowledge of the compiler.

r? @petrochenkov
cc @eddyb @alexreg
cc https://github.com/rust-lang/rust/pull/61682
cc https://github.com/rust-lang/rust/issues/49683

5 years agotypeck/expr.rs: move check_field + struct helpers here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 01:32:16 +0000 (03:32 +0200)]
typeck/expr.rs: move check_field + struct helpers here.

5 years agotypeck/expr.rs: move check_method_call here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 01:11:36 +0000 (03:11 +0200)]
typeck/expr.rs: move check_method_call here.

5 years agotypeck/expr.rs: move some check_return_expr here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 01:01:05 +0000 (03:01 +0200)]
typeck/expr.rs: move some check_return_expr here.

5 years agotypeck/expr.rs: move some check_expr_*s here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:58:32 +0000 (02:58 +0200)]
typeck/expr.rs: move some check_expr_*s here.

5 years agotypeck/expr.rs: move check_expr_with_expectation_and_needs here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:51:45 +0000 (02:51 +0200)]
typeck/expr.rs: move check_expr_with_expectation_and_needs here.

5 years agotypeck/expr.rs: extract out check_expr_yield.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:48:59 +0000 (02:48 +0200)]
typeck/expr.rs: extract out check_expr_yield.

5 years agotypeck/expr.rs: extract out check_expr_index.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:46:47 +0000 (02:46 +0200)]
typeck/expr.rs: extract out check_expr_index.

5 years agotypeck/expr.rs: move check_expr_struct here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:43:02 +0000 (02:43 +0200)]
typeck/expr.rs: move check_expr_struct here.

5 years agotypeck/expr.rs: extract out check_expr_tuple.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:39:23 +0000 (02:39 +0200)]
typeck/expr.rs: extract out check_expr_tuple.

5 years agotypeck/expr.rs: extract out check_expr_repeat.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:36:07 +0000 (02:36 +0200)]
typeck/expr.rs: extract out check_expr_repeat.

5 years agotypeck/expr.rs: extract out check_expr_array.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:31:20 +0000 (02:31 +0200)]
typeck/expr.rs: extract out check_expr_array.

5 years agotypeck/expr.rs: extract out check_expr_cast.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:25:37 +0000 (02:25 +0200)]
typeck/expr.rs: extract out check_expr_cast.

5 years agotypeck/expr.rs: extract out check_expr_loop.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:22:52 +0000 (02:22 +0200)]
typeck/expr.rs: extract out check_expr_loop.

5 years agotypeck/expr.rs: extract out check_expr_while.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:19:23 +0000 (02:19 +0200)]
typeck/expr.rs: extract out check_expr_while.

5 years agotypeck/expr.rs: move check_expr_assign here.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:10:56 +0000 (02:10 +0200)]
typeck/expr.rs: move check_expr_assign here.

5 years agotypeck/expr.rs: extract out check_expr_return.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:10:12 +0000 (02:10 +0200)]
typeck/expr.rs: extract out check_expr_return.

5 years agotypeck/expr.rs: extract out check_expr_break.
Mazdak Farrokhzad [Sat, 15 Jun 2019 00:06:02 +0000 (02:06 +0200)]
typeck/expr.rs: extract out check_expr_break.

5 years agotypeck/expr.rs: extract out check_expr_path.
Mazdak Farrokhzad [Fri, 14 Jun 2019 23:56:10 +0000 (01:56 +0200)]
typeck/expr.rs: extract out check_expr_path.

5 years agotypeck/expr.rs: extract out check_expr_addr_of.
Mazdak Farrokhzad [Fri, 14 Jun 2019 23:50:33 +0000 (01:50 +0200)]
typeck/expr.rs: extract out check_expr_addr_of.

5 years agotypeck/expr.rs: extract out check_expr_unary.
Mazdak Farrokhzad [Fri, 14 Jun 2019 23:45:39 +0000 (01:45 +0200)]
typeck/expr.rs: extract out check_expr_unary.

5 years agotypeck/expr.rs: extract out check_expr_box.
Mazdak Farrokhzad [Fri, 14 Jun 2019 23:36:09 +0000 (01:36 +0200)]
typeck/expr.rs: extract out check_expr_box.

5 years agotypeck: check_expr_kind -> expr.rs
Mazdak Farrokhzad [Fri, 14 Jun 2019 23:28:38 +0000 (01:28 +0200)]
typeck: check_expr_kind -> expr.rs

5 years agoMinor cosmetic improvements to accompany PR 61825
Alexander Regueiro [Fri, 14 Jun 2019 22:43:23 +0000 (23:43 +0100)]
Minor cosmetic improvements to accompany PR 61825

5 years agoupdate miri
Ralf Jung [Fri, 14 Jun 2019 19:58:33 +0000 (21:58 +0200)]
update miri

5 years agoreview comment: do not rely on path str to identify std::clone::Clone
Esteban Küber [Fri, 14 Jun 2019 18:44:20 +0000 (11:44 -0700)]
review comment: do not rely on path str to identify std::clone::Clone

5 years agoUse `sym` constansts for `PrimitiveTypeTable` keys
Matthew Jasper [Thu, 13 Jun 2019 20:14:58 +0000 (21:14 +0100)]
Use `sym` constansts for `PrimitiveTypeTable` keys

5 years agoAvoid some unnecessary symbol interner operations
Matthew Jasper [Tue, 11 Jun 2019 18:47:52 +0000 (19:47 +0100)]
Avoid some unnecessary symbol interner operations

5 years agoreview comments: avoid string modification
Esteban Küber [Fri, 14 Jun 2019 17:45:13 +0000 (10:45 -0700)]
review comments: avoid string modification

5 years agoChange `...` to `..=` where applicable
Aaron Kutch [Fri, 14 Jun 2019 17:24:38 +0000 (12:24 -0500)]
Change `...` to `..=` where applicable

5 years agoAuto merge of #61817 - eddyb:begone-gcx-attempt-2, r=oli-obk
bors [Fri, 14 Jun 2019 16:20:35 +0000 (16:20 +0000)]
Auto merge of #61817 - eddyb:begone-gcx-attempt-2, r=oli-obk

Unify all uses of 'gcx and 'tcx.

This is made possible by @Zoxc landing #57214 (see https://github.com/rust-lang/rust/pull/57214#issuecomment-465036053 for the decision).

A bit of context for the approach: just like #61722, this is *not* how I originally intended to go about this, but @Zoxc and my own experimentation independently resulted in the same conclusion:
The interim alias `type TyCx<'tcx> = TyCtxt<'tcx, 'tcx>;` attempt required more work (adding `use`s), even only for handling the `TyCtxt<'tcx, 'tcx>` case and not the general `TyCtxt<'gcx, 'tcx>` one.

What this PR is based on is the realization that `'gcx` is a special-enough name that it can be replaced, without caring for context, with `'tcx`, and then repetitions of the name `'tcx` be compacted away.
After that, only a small number of error categories remained, each category easily dealt with with either more mass replacements (e.g. `TyCtxt<'tcx, '_>` -> `TyCtxt<'tcx>`) or by hand.

For the `rustfmt` commit, I used https://github.com/rust-lang/rustfmt/issues/1324#issuecomment-482109952, and manually filtered out some noise, like in #61735 and #61722, and like the latter, there was also a weird bug to work around.
It should be reviewed separately, and dropped if unwanted (in this PR it's pretty significant).

cc @rust-lang/compiler r? @nikomatsakis

5 years agoRun `rustfmt --file-lines ...` for changes from previous commits.
Eduard-Mihai Burtescu [Thu, 13 Jun 2019 22:32:15 +0000 (01:32 +0300)]
Run `rustfmt --file-lines ...` for changes from previous commits.

5 years agoUnify all uses of 'gcx and 'tcx.
Eduard-Mihai Burtescu [Thu, 13 Jun 2019 21:48:52 +0000 (00:48 +0300)]
Unify all uses of 'gcx and 'tcx.

5 years agoAuto merge of #61421 - vorner:string-in-rc-into-raw-docs, r=RalfJung
bors [Fri, 14 Jun 2019 12:37:28 +0000 (12:37 +0000)]
Auto merge of #61421 - vorner:string-in-rc-into-raw-docs, r=RalfJung

docs: Use String in Rc::into_raw examples

It is unclear if accessing an integer after `drop_in_place` has been
called on it is undefined behaviour or not, as demonstrated by the
discussion in
https://github.com/rust-lang/rust/pull/60766#pullrequestreview-243414222.

Avoid these uncertainties by using String which frees memory in its
`drop_in_place` to make sure this is undefined behaviour. The message in
the docs should be to watch out and not access the data after that, not
discussing when one maybe could get away with it O:-).

5 years agoput back the workarounds for #60846
Felix S Klock II [Fri, 14 Jun 2019 10:19:26 +0000 (12:19 +0200)]
put back the workarounds for #60846

based on https://github.com/rust-lang/rust/pull/61754#issuecomment-501743750 I am adding `bootstrap` to the cfg-preconditions for the two manual `unsafe impls`'s of `Send` and `Sync` for `TokenTree`.

5 years agoAuto merge of #61679 - zackmdavis:maybe_dont_indicate_the_anonymous_lifetime, r=oli-obk
bors [Fri, 14 Jun 2019 09:39:17 +0000 (09:39 +0000)]
Auto merge of #61679 - zackmdavis:maybe_dont_indicate_the_anonymous_lifetime, r=oli-obk

in which we decline to suggest the anonymous lifetime in declarations

The elided-lifetimes-in-path lint (part of our suite of Rust 2018 idiom lints which we are hoping to promote to Warn status) was firing with an illegal suggestion to write an anonymous lifetime in a
struct/item declaration (where we don't allow it). The linting code was already deciding whether to act on the basis of a `ParamMode` enum, indicating whether the present path-segment was part of an
expression, or anywhere else. The present case seemed to be part of the "anywhere else", and yet meriting different rules as far as the lint was concerned, so it seemed expedient to introduce a new enum member. We yank out `TyKind::Path` arm into its own method so that we can call it with our new `ParamMode` specifically when lowering struct fields—one would have hoped to think of something more elegant than this, but it definitely beats changing the signature of `lower_ty` to take a `ParamMode`!

Resolves #61124.

cc @memoryruins
r? @oli-obk

5 years agorustbuild: include llvm-libunwind in dist tarball
Marc-Antoine Perennou [Fri, 14 Jun 2019 09:24:59 +0000 (11:24 +0200)]
rustbuild: include llvm-libunwind in dist tarball

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>