Commit Graph

51813 Commits

Author SHA1 Message Date
Niko Matsakis 0769865f7f rewrite scope drop to be iterative
while I'm at it, remove the "extra caching" that I was doing for no good
reason except laziness. Basically before I was caching at each scope in
the chain, but there's not really a reason to do that, since the cached
entry point at level N is always equal to the last cached exit point
from level N-1.
2016-03-23 20:46:38 -04:00
Ulrik Sverdrup f621193e5e Accept 0 as a valid str char boundary
Index 0 must be a valid char boundary (invariant of str that it contains
valid UTF-8 data).

If we check explicitly for index == 0, that removes the need to read the
byte at index 0, so it avoids a trip to the string's memory, and it
optimizes out the slicing index' bounds check whenever it is zero.

With this change, the following examples all change from having a read of
the byte at 0 and a branch to possibly panicing, to having the bounds
checking optimized away.

```rust
pub fn split(s: &str) -> (&str, &str) {
    s.split_at(0)
}

pub fn both(s: &str) -> &str {
    &s[0..s.len()]
}

pub fn first(s: &str) -> &str {
    &s[..0]
}

pub fn last(s: &str) -> &str {
    &s[0..]
}
```
2016-03-24 01:25:59 +01:00
Brian Anderson addde1fd6f Make warnings of renamed and removed lints themselves lints
This adds the `renamed_and_removed_lints` warning, defaulting
to the warning level.

Fixes #31141
2016-03-23 23:41:48 +00:00
Brian Anderson b013ad55aa doc: Stdin is locked for reads, not writes 2016-03-23 23:39:01 +00:00
bors 43843d06ea Auto merge of #32455 - TimNN:patch-1, r=alexcrichton
add naked function tracking issue # to feature gate definition
2016-03-23 16:24:39 -07:00
Ulrik Sverdrup 80e7a1be35 Mark str::split_at inline 2016-03-23 22:03:06 +01:00
Niko Matsakis a276e755e7 introduce "call-site-scope" as the outermost scope
also, when exiting a scope, assign the final goto terminator with the
target scope's id
2016-03-23 16:42:55 -04:00
Niko Matsakis 1c0fa34310 Update borrowck to use `repr::*` instead of a mix
We should probably settle on some conventions here. In MIR code, I have
generally been importing `*`, but perhaps borrowck does not want to do
that.
2016-03-23 16:42:54 -04:00
Niko Matsakis 2b96cfb143 add comments on remaining fields 2016-03-23 16:42:54 -04:00
Niko Matsakis c36707a284 Add `ScopeAuxiliaryVec`, return MIR+aux via tuple
It's nice to be able to index with a scope-id,
but coherence rules prevent us from implementing
`Index<ScopeId>` for `Vec<ScopeAuxiliary>`, and I'd
prefer that `ScopeAuxiliary` remain in librustc_mir,
just for compilation time reasons.
2016-03-23 16:42:54 -04:00
Niko Matsakis 70d0123082 Address nit: Remove `ScopedDataVec` newtype 2016-03-23 16:42:54 -04:00
Niko Matsakis b3d2059b08 Address nit: block.unit() 2016-03-23 16:42:54 -04:00
Niko Matsakis c1a53a60e7 Address nit: doc-comments on fields 2016-03-23 16:42:54 -04:00
Niko Matsakis a2bab6f3e1 Address nit: use doc-comments for fields of VarDecl 2016-03-23 16:42:53 -04:00
Niko Matsakis 14a5657a9a Rename `MirPlusPlus` to `MirAndScopeAuxiliary` 2016-03-23 16:42:53 -04:00
Niko Matsakis f66fd8972f replace DUMMY_SP on resume with span from fn 2016-03-23 16:42:53 -04:00
Niko Matsakis cb04e495dc rewrite drop code
This was triggered by me wanting to address a use of DUMMY_SP, but
actually I'm not sure what would be a better span -- I guess the span
for the function as a whole.
2016-03-23 16:42:53 -04:00
Niko Matsakis f976e222e9 fix bug in `simplify_cfg` with inf. loops 2016-03-23 16:42:53 -04:00
Niko Matsakis a61c1759c7 allow dumping intermediate IR with -Z dump-mir 2016-03-23 16:42:53 -04:00
Niko Matsakis 0d93989cf5 adjust pretty printer to print scopes / auxiliary 2016-03-23 16:42:53 -04:00
Niko Matsakis d32bde3311 augment MIR pretty printer to print scopes 2016-03-23 16:42:52 -04:00
Niko Matsakis caac0b969f reformat mir text pretty printer 2016-03-23 16:42:52 -04:00
Niko Matsakis 9d00deee96 add span/scope-id to terminator 2016-03-23 16:42:52 -04:00
Niko Matsakis 3a16f57fbb extend Terminator into a struct so it can have additional fields 2016-03-23 16:42:52 -04:00
Niko Matsakis e752d4cde3 track the innermost scope for every stmt 2016-03-23 16:37:48 -04:00
Niko Matsakis 323d7f4e98 record a scope for each `VarDecl` 2016-03-23 16:37:48 -04:00
Niko Matsakis 464c02e336 integrate scopes into MIR 2016-03-23 16:37:48 -04:00
bors 98f0a9128f Auto merge of #32454 - eddyb:rollup, r=eddyb
Rollup of 11 pull requests

- Successful merges: #32404, #32420, #32423, #32425, #32429, #32430, #32431, #32434, #32437, #32441, #32443
- Failed merges:
2016-03-23 12:33:04 -07:00
Tim Neumann 7027521daa add naked function tracking issue # to feature gate definition 2016-03-23 17:14:19 +01:00
Eduard-Mihai Burtescu 2e9b40f576 Rollup merge of #32443 - tclfs:patch-8, r=steveklabnik
Docs: Change "statements" to "expressions" on `match`

I apt to use `expressions` over `statements`, because `match` is a expression in essence, though it can become a statement when followed a semicolon.
2016-03-23 17:59:16 +02:00
Eduard-Mihai Burtescu 7f2612e66c Rollup merge of #32441 - tshepang:doc-primitive, r=steveklabnik
doc: small char improvements
2016-03-23 17:59:16 +02:00
Eduard-Mihai Burtescu 3fd144db0d Rollup merge of #32437 - eddyb:orbital-msvc, r=alexcrichton
Annotate run-pass/backtrace with #[rustc_no_mir] on MSVC.

Fixes #32384 by not using MIR on MSVC for the functions in the path of the backtrace.
This is the known blocker for the MSVC MIR builder, hopefully the only one overall.
r? @alexcrichton Confirmed to work on a nightly, by @retep998.
2016-03-23 17:59:16 +02:00
Eduard-Mihai Burtescu 2acad9c17e Rollup merge of #32434 - mitaa:rdoc-no-inline, r=alexcrichton
rustdoc: Consider `doc(no_inline)` in crate-local inlining

Imports with `doc(no_inline)` will not be inlined, even when `doc(inline)` is present.

fixes #32343

r? @alexcrichton
2016-03-23 17:59:16 +02:00
Eduard-Mihai Burtescu d7bf3d3284 Rollup merge of #32431 - nicholasf:tweak/improve-expression, r=steveklabnik
Simplifying some of the phrasing explaining lifetime elision

Just simplifying some of the language expressing what kind of inference Rust can and can't do on function signatures.
2016-03-23 17:59:15 +02:00
Eduard-Mihai Burtescu 12e54bba21 Rollup merge of #32430 - sanxiyn:const-trans, r=arielb1
Fix const trans

Fix #30615.

The idea was that when there are N autoderefs, first do N-1 derefs and check for autoref. If there is autoref, done, if not, do one more deref. But when N is zero, doing one more deref is wrong.
2016-03-23 17:59:15 +02:00
Eduard-Mihai Burtescu c028b1c02c Rollup merge of #32429 - alexcrichton:scope-id-hton, r=aturon
std: Store flowinfo/scope_id in host byte order

Apparently these aren't supposed to be stored in network byte order, so doing so
ends up causing failures when it would otherwise succeed when stored in the host
byte order.

Closes #32424
2016-03-23 17:59:15 +02:00
Eduard-Mihai Burtescu 0c424f9825 Rollup merge of #32425 - ituxbag:master, r=alexcrichton
Added version 7.3* for Apple's clang compiler

The recent 7.3 clang version was missing.

Closes #32442
2016-03-23 17:59:15 +02:00
Eduard-Mihai Burtescu 46b2a99db3 Rollup merge of #32423 - mitaa:rdoc-vstruct-fields, r=alexcrichton
rustdoc: Omit `pub` for inlined variant-struct fields

fixes #32395

r? @alexcrichton
2016-03-23 17:59:15 +02:00
Eduard-Mihai Burtescu 6b4b65afad Rollup merge of #32420 - frewsxcv:regression-test-26997, r=alexcrichton
Add regression test for Issue 26997.

https://github.com/rust-lang/rust/issues/26997
2016-03-23 17:59:14 +02:00
Eduard-Mihai Burtescu 2de428e1a2 Rollup merge of #32404 - WiSaGaN:feature/osstring-implement-default, r=aturon
Implement Default trait for OsString/OsStr

Fixes #32385
2016-03-23 17:59:14 +02:00
bors b76f818cad Auto merge of #32390 - japaric:untry, r=pnkfelix
convert 99.9% of `try!`s to `?`s

The first commit is an automated conversion using the [untry] tool and the following command:

```
$ find -name '*.rs' -type f | xargs untry
```

at the root of the Rust repo.

[untry]: https://github.com/japaric/untry

cc @rust-lang/lang @alexcrichton @brson
2016-03-23 08:59:10 -07:00
Guillaume Gomez ca609cc674 Add code examples for libstd/time 2016-03-23 15:39:27 +01:00
Jorge Aparicio c063c5153f add back `&` that was deleted by mistake 2016-03-23 06:17:29 -05:00
bors 26cfc269a0 Auto merge of #32410 - Ticki:master, r=eddyb
Add support for naked functions

See https://github.com/rust-lang/rfcs/pull/1201#issuecomment-199442239

This PR adds `#[naked]` for marking naked functions.
2016-03-23 03:49:02 -07:00
bors d6af19b89c Auto merge of #32348 - brson:cargotest, r=alexcrichton
Introduce 'cargotest' and the check-cargotest buildstep

This is a new suite of tests that verifies that the compiler builds specific revisions of select crates from crates.io.

It does not run by default. It is intended that bors runs these tests against all PRs, and gates on them. In this way we will make it harder still to break important swaths of the ecosystem, even on nightly.

This is a very basic implementation intended for feedback. The biggest thing it probably should do but doesn't is use a lockfile for every project it builds.

r? @alexcrichton cc @rust-lang/lang @rust-lang/libs
2016-03-23 01:03:04 -07:00
Steven Fackler be87650f63 Add augmented assignment operator impls for time types 2016-03-22 23:28:22 -07:00
NODA, Kai 0950dc3d86 Remove ungrammatical dots from the error index.
They were probably meant as a shorthand for omitted code.

Part of #32446 but there should be a separate fix for the issue.

Signed-off-by: NODA, Kai <nodakai@gmail.com>
2016-03-23 13:56:09 +08:00
bors 8ba2ea5fad Auto merge of #32058 - pczarn:hashmap-initial-refactoring, r=apasel422
Basic refactoring of HashMap
2016-03-22 21:21:45 -07:00
Tang Chenglong ea9ae48662 Docs: Change "statements" to "expressions" on `match`
I apt to use `expressions` over `statements`, because `match` is a expression in essence, though it can become a statement when followed a semicolon.
2016-03-23 12:03:41 +08:00
Jorge Aparicio c548eda362 enable question_mark feature in rustc_borrowck 2016-03-22 22:04:10 -05:00