Commit graph

3909 commits

Author SHA1 Message Date
varkor
e79bc410bf Consolidate into create_substs_for_generic_args 2018-08-19 20:02:34 +01:00
varkor
b524991f03 Refactor astconv.rs (part ii) 2018-08-19 20:02:33 +01:00
varkor
5d07db436d Refactor confirm.rs (part ii) 2018-08-19 20:02:33 +01:00
varkor
08d49a65e7 Refactor mod/check (part viii) 2018-08-19 20:02:33 +01:00
varkor
5f2588f020 Fix behaviour in error condition 2018-08-19 20:02:33 +01:00
varkor
db94efab39 Refactor mod/check (part vii) 2018-08-19 20:02:33 +01:00
varkor
9bb40b09b7 Make prohibit_generics take IntoIterators 2018-08-19 20:02:33 +01:00
varkor
e02642dbb3 Fix confirm.rs 2018-08-19 20:02:32 +01:00
varkor
340a7fc4f5 Refactor astconv.rs 2018-08-19 20:02:32 +01:00
varkor
35ddd46a2d Refactor confirm.rs 2018-08-19 20:02:32 +01:00
varkor
84edc0a089 Move lifetime calculation outside loop 2018-08-19 20:02:32 +01:00
varkor
b6eef180cd Supress consecutive errors 2018-08-19 20:02:32 +01:00
varkor
d8ba103334 Fix param_idx calculation 2018-08-19 20:02:32 +01:00
varkor
d5e24dc121 Fix integer overflow 2018-08-19 20:02:32 +01:00
varkor
734ce4ae1a Fix tidy check 2018-08-19 20:02:32 +01:00
varkor
88d5b2f4b4 Refactor mod/check (part vi) 2018-08-19 20:02:32 +01:00
varkor
c9941a8a85 Refactor mod/check (part v) 2018-08-19 20:02:32 +01:00
varkor
e812b55d8f Refactor mod/check (part iv) 2018-08-19 20:02:32 +01:00
varkor
96379e1659 Refactor mod/check (part iii) 2018-08-19 20:02:32 +01:00
varkor
5fe9aeb402 Refactor mod/check (part ii) 2018-08-19 20:02:32 +01:00
varkor
d1a82af235 Refactor mod/check (part i) 2018-08-19 20:02:32 +01:00
varkor
2317abdd01 Fix quadratic loop in confirm.rs 2018-08-19 20:02:32 +01:00
bors
b355906919 Auto merge of #51131 - qnighy:unsized-locals, r=eddyb
Implement Unsized Rvalues

This PR is the first step to implement RFC1909: unsized rvalues (#48055).

## Implemented

- `Sized` is removed for arguments and local bindings. (under `#![feature(unsized_locals)]`)
- Unsized locations are allowed in MIR
- Unsized places and operands are correctly translated at codegen

## Not implemented in this PR

- Additional `Sized` checks:
  - tuple struct constructor (accidentally compiles now)
  - closure arguments at closure generation (accidentally compiles now)
  - upvars (ICEs now)
- Generating vtable for `fn method(self)` (ICEs now)
- VLAs: `[e; n]` where `n` isn't const
- Reduce unnecessary allocations

## Current status

- [x] Fix `__rust_probestack` (rust-lang-nursery/compiler-builtins#244)
  - [x] Get the fix merged
- [x] `#![feature(unsized_locals)]`
  - [x] Give it a tracking issue number
- [x] Lift sized checks in typeck and MIR-borrowck
  - [ ] <del>Forbid `A(unsized-expr)`</del> will be another PR
- [x] Minimum working codegen
- [x] Add more examples and fill in unimplemented codegen paths
- [ ] <del>Loosen object-safety rules (will be another PR)</del>
- [ ] <del>Implement `Box<FnOnce>` (will be another PR)</del>
- [ ] <del>Reduce temporaries (will be another PR)</del>
2018-08-19 12:21:56 +00:00
Masaki Hara
e2b95cb70e Lift some Sized checks. 2018-08-19 08:07:33 +09:00
Masaki Hara
9f0168a9f3 Add notes on unsized argument errors. 2018-08-19 08:06:42 +09:00
Eduard-Mihai Burtescu
14aed81d9a Use the new Entry::or_default method where possible. 2018-08-18 20:19:45 +03:00
Corey Farwell
4cdcb23581
Rollup merge of #53406 - estebank:to_string-to_string, r=michaelwoerister
Do not suggest conversion method that is already there

Fix #53348.
2018-08-17 08:23:42 -07:00
Corey Farwell
c3b7483559
Rollup merge of #53321 - alexcrichton:wasm-target-feature, r=nikomatsakis
Fix usage of `wasm_target_feature`

Currently usage results in:

```
error: internal compiler error: librustc_typeck/collect.rs:1928: unknown target feature gate wasm_target_feature

thread 'main' panicked at 'Box<Any>', librustc_errors/lib.rs:579:9
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: aborting due to previous error

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.30.0-nightly (d5a448b3f 2018-08-13) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C linker=/tmp/lld-shim -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

error: Could not compile `coresimd`.

To learn more, run the command again with --verbose.
```

and hopefully this should fix the ICE!
2018-08-17 08:23:34 -07:00
Esteban Küber
5a0a38a46f Do not suggest conversion method that is already there 2018-08-15 13:04:24 -07:00
Guillaume Gomez
6bea743d56
Rollup merge of #53342 - RalfJung:unsized-packed, r=cramertj
fix error for unsized packed struct field

It was really confusing to be told "only the last field of a struct may have a dynamically sized type" when only the last field *was* unsized.
2018-08-15 19:20:23 +02:00
bors
5db71dbae8 Auto merge of #53133 - Zoxc:gen-int, r=eddyb
Record adjustments and original type for expressions in the generator interior

Fixes https://github.com/rust-lang/rust/issues/50878 and https://github.com/rust-lang/rust/issues/52398.

r? @eddyb
2018-08-15 12:02:00 +00:00
Ralf Jung
2fd2f9cfaf fix error for unsized packed struct field 2018-08-15 10:53:26 +02:00
kennytm
8e7f69af9c
Rollup merge of #53317 - estebank:abolish-ice, r=oli-obk
Mark prior failure to avoid ICE

Fix #53251
2018-08-14 23:59:17 +08:00
Alex Crichton
2438cfc755 Fix usage of wasm_target_feature 2018-08-13 18:03:06 -07:00
Esteban Küber
397db46ae3 Mark prior failure to avoid ICE
Fix #53251
2018-08-13 15:28:18 -07:00
Guillaume Gomez
3e9a1a1b82
Rollup merge of #53230 - memoryruins:nll_bootstrap_4, r=nikomatsakis
[nll] enable feature(nll) on various crates for bootstrap: part 4

#53172

r? @nikomatsakis
2018-08-12 23:26:56 +02:00
memoryruins
ac9b7be50b [nll] librustc_typeck: enable feature(nll) for bootstrap 2018-08-09 15:34:54 -04:00
kennytm
c6f55bca7f
Rollup merge of #52773 - ljedrz:unncecessary_patterns, r=nikomatsakis
Avoid unnecessary pattern matching against Option and Result
2018-08-09 16:58:39 +08:00
kennytm
4176888c98
Rollup merge of #52885 - Mark-Simulacrum:cleanup-typeck, r=nikomatsakis
Remove some unused method arguments from typeck

None
2018-08-07 16:55:36 +08:00
ljedrz
44d32d4413 Avoid unnecessary pattern matching against Option and Result 2018-08-07 10:24:27 +02:00
John Kåre Alsaker
401af7994d Record adjustments and original type for expressions in the generator interior 2018-08-07 04:44:35 +02:00
varkor
c81b95f305 Remove unnecessary feature attributes that sneaked in 2018-08-05 15:54:49 +01:00
Mark Rousskov
442a4744e3 Normalize EntryFnType variants to standard style 2018-08-04 06:54:12 -06:00
Wesley Wiser
45482c6f99 Basic profiling 2018-08-02 18:57:24 -04:00
Mark Rousskov
4897820a16 Remove unused arguments 2018-07-30 17:00:14 -06:00
bors
7bbcd005b3 Auto merge of #52805 - ljedrz:format_str_literal, r=petrochenkov
Don't format!() string literals

Prefer `to_string()` to `format!()` take 2, this time targetting string literals. In some cases (`&format!("...")` -> `"..."`) also removes allocations. Occurences of `format!("")` are changed to `String::new()`.
2018-07-30 06:29:39 +00:00
bors
866a713258 Auto merge of #52738 - ljedrz:push_to_extend, r=eddyb
Replace push loops with extend() where possible

Or set the vector capacity where I couldn't do it.

According to my [simple benchmark](https://gist.github.com/ljedrz/568e97621b749849684c1da71c27dceb) `extend`ing a vector can be over **10 times** faster than `push`ing to it in a loop:

10 elements (6.1 times faster):
```
test bench_extension ... bench:          75 ns/iter (+/- 23)
test bench_push_loop ... bench:         458 ns/iter (+/- 142)
```

100 elements (11.12 times faster):
```
test bench_extension ... bench:          87 ns/iter (+/- 26)
test bench_push_loop ... bench:         968 ns/iter (+/- 3,528)
```

1000 elements (11.04 times faster):
```
test bench_extension ... bench:         311 ns/iter (+/- 9)
test bench_push_loop ... bench:       3,436 ns/iter (+/- 233)
```

Seems like a good idea to use `extend` as much as possible.
2018-07-29 21:37:47 +00:00
ljedrz
59c8a279da Replace push loops with collect() and extend() where possible 2018-07-29 18:53:22 +02:00
bors
023fd7e74a Auto merge of #52767 - ljedrz:avoid_format, r=petrochenkov
Prefer to_string() to format!()

Simple benchmarks suggest in some cases it can be faster by even 37%:
```
test converting_f64_long  ... bench:         339 ns/iter (+/- 199)
test converting_f64_short ... bench:         136 ns/iter (+/- 34)
test converting_i32_long  ... bench:          87 ns/iter (+/- 16)
test converting_i32_short ... bench:          87 ns/iter (+/- 49)
test converting_str       ... bench:          54 ns/iter (+/- 15)
test formatting_f64_long  ... bench:         349 ns/iter (+/- 176)
test formatting_f64_short ... bench:         145 ns/iter (+/- 14)
test formatting_i32_long  ... bench:          98 ns/iter (+/- 14)
test formatting_i32_short ... bench:          93 ns/iter (+/- 15)
test formatting_str       ... bench:          86 ns/iter (+/- 23)
```
2018-07-29 09:33:37 +00:00
ljedrz
421b2ba347 Don't format!() string literals 2018-07-28 17:58:52 +02:00