Commit Graph

48066 Commits

Author SHA1 Message Date
Manish Goregaokar
b7f6d7239b Rollup merge of #29776 - nikomatsakis:mir-29740, r=nrc
In previous PRs, I changed the match desugaring to generate more efficient code for ints/chars and the like. But this doesn't help when you're matching strings, ranges, or other crazy complex things (leading to #29740). This commit restructures match desugaring *yet again* to handle that case better -- basically we now degenerate to an if-else-if chain in such cases.

~~Note that this builds on https://github.com/rust-lang/rust/pull/29763 which will hopefully land soon. So ignore the first few commits.~~ landed now

r? @Aatch since he's been reviewing the other commits in this series
2015-11-12 13:18:51 +05:30
Kevin Butler
5ae1937129 trpl: add a small section outlining doctest configuration 2015-11-12 05:17:11 +00:00
Kevin Butler
8e23e2fbcb libtest: deny warnings in doctests 2015-11-12 05:17:07 +00:00
Kevin Butler
c0fc402ab6 libterm: deny warnings in doctests 2015-11-12 05:17:02 +00:00
Kevin Butler
d64e551248 libsyntax: deny warnings in doctests 2015-11-12 05:16:57 +00:00
Kevin Butler
a17f81b4b7 libserialize: deny warnings in doctests 2015-11-12 05:16:53 +00:00
Kevin Butler
7ee329ac6e librustc_unicode: deny warnings in doctests 2015-11-12 05:16:48 +00:00
Kevin Butler
a715dd52e7 librbml: deny warnings in doctests 2015-11-12 05:16:43 +00:00
Kevin Butler
86c55e7d99 librand: deny warnings in doctests 2015-11-12 05:16:38 +00:00
Kevin Butler
d28d000ef9 liblog: deny warnings in doctests 2015-11-12 05:16:34 +00:00
Kevin Butler
ac36e10e2f libgraphviz: deny warnings in doctests 2015-11-12 05:16:29 +00:00
Kevin Butler
82ad9738b3 libgetopts: deny warnings in doctests 2015-11-12 05:16:24 +00:00
Kevin Butler
e3976cda64 libfmt_macros: deny warnings in doctests 2015-11-12 05:16:20 +00:00
Kevin Butler
0226fa17cc libflate: deny warnings in doctests 2015-11-12 05:16:14 +00:00
Kevin Butler
82784cb89d libcore: deny warnings in doctests 2015-11-12 05:16:08 +00:00
Kevin Butler
bbf964afea libcollections: deny warnings in doctests 2015-11-12 05:15:55 +00:00
Kevin Butler
89a8203898 libarena: deny warnings in doctests 2015-11-12 05:15:29 +00:00
Kevin Butler
7dbff09e57 liballoc: deny warnings in doctests 2015-11-12 05:15:08 +00:00
bors
3bd622f94c Auto merge of #29764 - nrc:stats, r=nikomatsakis
Emits loc, and node count - before and after expansion.

E.g.,

```
rustc: x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore
Lines of code:             32060
Pre-expansion node count:  120205
Post-expansion node count: 482749
```

r? @nikomatsakis
2015-11-12 04:06:48 +00:00
bors
35decad781 Auto merge of #29616 - nagisa:mir-repeat, r=nikomatsakis
r? @nikomatsakis

I went ahead and replaced repeat count with a `Constant`, because it cannot be non-constant to the best of my knowledge.
2015-11-12 02:24:06 +00:00
Niko Matsakis
a5e3625a55 ignore pretty since it dies for some mysterious reason I can't be
bothered to track down for a regresson test. /me hopes no one notices
2015-11-11 18:54:54 -05:00
bors
cc30948720 Auto merge of #29748 - petrochenkov:issue29746, r=nrc
Closes https://github.com/rust-lang/rust/issues/29746
2015-11-11 23:31:51 +00:00
Simonas Kazlauskas
e4e880df37 Const-eval array element repetition count 2015-11-12 01:30:17 +02:00
Danilo Bargen
9b5b0cd9b9 Fix article in Result.map and Result.map_err documentation 2015-11-12 00:02:56 +01:00
Vadim Petrochenkov
fba1926a2f Fix hygiene regression in patterns 2015-11-12 01:49:23 +03:00
Oliver Middleton
780581e8a1 Add test for assert_eq! with none Sized types 2015-11-11 22:08:20 +00:00
Steve Klabnik
f42af6464a Fix import warnings for stage0 2015-11-11 17:01:52 -05:00
Steve Klabnik
a1b24768a6 Clean up the prelude docs
This mostly brings them in line with existing linking convention, but
also has some minor re-wording.

The text at the top has been re-focused, by starting out with what the
prelude does, rather than starting from injecting std.

Also, it now mentions that other preludes exist.

Part of https://github.com/rust-lang/rust/issues/29369
2015-11-11 17:00:09 -05:00
Niko Matsakis
662232c8f6 Rewrite match algorithm to avoid massive blowup in generated code for
large matches that fallback to Eq. When we encounter a case where the
test being performed does not inform the candidate at all, we just stop
testing the candidates at that point, rather than adding the candidate
to both outcomes. The former behavior was not WRONG, but it generated a
lot of code, whereas this new behavior degenerates to an if-else-if
tree.

Fixes #29740.
2015-11-11 16:38:58 -05:00
bors
b8eaa1605a Auto merge of #29778 - Manishearth:rollup, r=Manishearth
- Successful merges: #29677, #29772, #29775, #29777
- Failed merges:
2015-11-11 20:39:49 +00:00
Manish Goregaokar
26705657e4 Fixup tidy 2015-11-12 02:08:37 +05:30
Nick Cameron
f7dc917ba4 Add -Zinput-stats
Emits loc, and node count - before and after expansion.

E.g.,

```
rustc: x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore
Lines of code:             32060
Pre-expansion node count:  120205
Post-expansion node count: 482749
```
2015-11-12 09:23:37 +13:00
Kyle Mayes
8c88308c68 libsyntax: Add more quasiquoting macros 2015-11-11 15:19:01 -05:00
Manish Goregaokar
98b5285703 Rollup merge of #29777 - Manishearth:const_irrefutable_diag, r=eddyb
None
2015-11-12 00:59:31 +05:30
Manish Goregaokar
3ef3fd96cf Rollup merge of #29775 - arcnmx:raw-c_char, r=alexcrichton
It's a bit strange to expect users of `libstd` to require the use of an external crates.io crate to work with standard types. This commit encourages the use `os::raw::c_char` instead, although users are certainly free to use `libc::c_char` if they wish; the test still exists to ensure the two types are identical (though the reported bug only exists on platforms that are not officially tested).

Fixes #29774
2015-11-12 00:59:30 +05:30
Manish Goregaokar
f51e030433 Rollup merge of #29772 - banyan:fix-doc, r=steveklabnik 2015-11-12 00:59:30 +05:30
Manish Goregaokar
eda26b32f4 Rollup merge of #29677 - GuillaumeGomez:patch-3, r=Manishearth
r? @Manishearth
cc @AlisdairO

Part of #24407
2015-11-12 00:59:30 +05:30
arcnmx
f9f734748c Cleaner c_char cfg logic 2015-11-11 14:25:18 -05:00
Manish Goregaokar
9be0ba5cc0 Add test for constant pattern diagnostics 2015-11-12 00:48:02 +05:30
Manish Goregaokar
d8062a9317 Add more comprehensive diagnostics for irrefutable pattern error with constants
Fixes #7526
2015-11-12 00:46:57 +05:30
arcnmx
fc60b2c73e Prefer raw::c_char or libc::c_char and fix arm 2015-11-11 12:02:55 -05:00
bors
f1f5c04c07 Auto merge of #29763 - nikomatsakis:mir-29227, r=nikomatsakis
The older algorithm was pretty inefficient for big matches. Fixes #29227. (On my computer, MIR construction on this test case goes from 9.9s to 0.025s.) Whereas before we had a loop like:

- for all outcomes of the test we are performing
    - for all candidates
        - check whether candidate is relevant to outcome

We now do:

- for all candidates
    - determine which outcomes the candidate is relevant to

Since the number of outcomes in this case is proportional to the number of candidates, the original algorithm turned out to be O(n^2), and the newer one is just O(n).

This PR also does some minor speedups by eagerly mirroring all patterns, so that we can just pass around `&Pattern<'tcx>`, which makes cloning cheaper. We could probably go a bit further in this direction.

r? @Aatch
2015-11-11 16:50:48 +00:00
Kohei Hasegawa
44fd0b91fb docs: Fix variable name 2015-11-12 00:47:42 +09:00
Oliver Middleton
4879078f2e Allow none Sized types in assert_eq!
format_args! doesn't support none Sized types so we should just pass it the references to left_val and right_val.

This fixes `assert_eq!([1, 2, 3][..], vec![1, 2, 3][..])` for example.
2015-11-11 14:25:08 +00:00
bors
8c743a95d7 Auto merge of #29650 - goyox86:goyox86/rustfmting-librustc_driverII, r=nikomatsakis
Hi Rustaceans!

This is the secong take on running latest rustfmt on librustc_driver!

All fixups made in https://github.com/rust-lang/rust/pull/29033 were done (also rustfmt got better).

//cc @nrc
2015-11-11 14:14:23 +00:00
Niko Matsakis
38cf175784 Ignore long lines on this test. 2015-11-11 09:02:24 -05:00
Niko Matsakis
3b903a7d10 Change from &mut Vec<Vec<_>> to &mut [Vec<_>], since the outer
`Vec` should not be resized.
2015-11-11 06:18:50 -05:00
bors
7d3477ce09 Auto merge of #29755 - mbrubeck:stat-doc, r=steveklabnik
Moved from #29753. r? @steveklabnik
2015-11-11 11:09:43 +00:00
bors
19bdf87e8c Auto merge of #29741 - Manishearth:fix-flowgraph, r=alexcrichton
None
2015-11-11 09:15:24 +00:00
bors
8fbd2923f1 Auto merge of #29752 - tamird:fix-compiletest-stage1, r=alexcrichton
Fixes #29751.
2015-11-11 07:29:54 +00:00