Commit graph

8989 commits

Author SHA1 Message Date
Vadim Petrochenkov
766f9b5a2f Remove ExplicitSelf from HIR 2016-05-14 13:26:40 +03:00
bors
d3ec9d43cf Auto merge of #33538 - Ms2ger:LocalCrateReader, r=arielb1
Refactor code around LocalCrateReader.
2016-05-13 23:34:52 -07:00
bors
dee865a56d Auto merge of #33532 - jseyfried:mutable_lowering_context, r=nrc
Clean up `hir::lowering`

Clean up `hir::lowering`:
 - give lowering functions mutable access to the lowering context
 - refactor the `lower_*` functions and other functions that take a lowering context into methods
 - simplify the API that `hir::lowering` exposes to `driver`
 - other miscellaneous cleanups

r? @nrc
2016-05-13 18:40:08 -07:00
Guillaume Gomez
521c0ae1e8 Rollup merge of #33401 - GuillaumeGomez:index_indication, r=pnkfelix
Add rustc_on_unimplemented for Index implementation on slice

Reopening of #31071.

It also extends the possibility of `#[rustc_on_unimplemented]` by providing a small type filter in order to find the ones which corresponds the most.

r? @pnkfelix
2016-05-11 21:30:19 +02:00
ggomez
4a3acfd937 Update to eddyb's PR 2016-05-11 17:01:15 +02:00
Steve Klabnik
4b8e7cb504 Rollup merge of #33539 - nikomatsakis:static-error, r=pnkfelix
fix DFS for region error reporting

This was causing terrible error reports, because the algorithm was incorrectly identifying the constraints.

r? @eddyb
2016-05-11 09:27:44 -04:00
Steve Klabnik
3b75f4b56e Rollup merge of #33345 - birkenfeld:issue-31754, r=pnkfelix
middle: reset loop labels while visiting closure

This should fix #31754 and follow-up #25343.  Before the latter, the closure was visited twice in the context of the enclosing fn, which made even a single closure with a loop label emit a warning.

With this change, the closure is still visited within the context of the main fn (which is intended, since it is not a separate item) but resets the found loop labels while being visited.

Fixes: #31754

Note: I amended the test file from #25343, but I don't know if the original or amended test are effective, since as far as I could see, compiletest's run-pass tests do not check for zero warnings emitted?

/cc @Manishearth
2016-05-11 09:27:43 -04:00
Guillaume Gomez
e6c0ff65ed Create Weight enum
Add more comments for the global understanding
2016-05-11 13:24:24 +02:00
ggomez
61e6169ffe Improve weight algorithm and tests 2016-05-11 13:24:22 +02:00
Guillaume Gomez
b8fad79a07 Improve error message for Index trait on slices 2016-05-11 13:22:01 +02:00
ggomez
e9797d4be5 Extend rustc_on_unimplemented flag: if a message is available at an impl, this message will be displayed instead 2016-05-11 13:18:57 +02:00
Ms2ger
5511e6568f Hand ownership of the Definitions to map_crate. 2016-05-11 09:32:05 +02:00
Eduard Burtescu
42eb7032fa Fixup indentation after methodification. 2016-05-11 08:48:12 +03:00
Eduard Burtescu
a1c170fc35 rustc: Split local type contexts interners from the global one. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
31a07b0ce6 rustc_typeck: Generalize over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
3a3013613a rustc: Remove the unnecessary ast_ty_to_ty_cache. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
20652162ca rustc: More interning for data used in Ty<'tcx>. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8f72d8127f rustc: Generalize a minimum set of functions over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
f0b2b3c441 rustc: Remove a redundant lifetime parameter from ExprUseVisitor. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
12e56ea56b rustc: Wrap users of InferCtxt in an anonymous scope. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8a704f6dc7 rustc: Remove the TyCtxt field from ParameterEnvironment. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
76affa5d6f rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
166dbc3273 rustc: Keep a reference to the interners in TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
2fbbaf2f17 rustc: Use set recovery APIs in the TyCtxt interners. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
513d392f7e rustc: Replace &'a TyCtxt<'tcx> with a TyCtxt<'a, 'tcx> wrapper. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
f8ea24edc8 rustc: Avoid free functions taking &TyCtxt and &InferCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
ef2f5f6d8e typeck: Avoid passing &TyCtxt around where possible. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8600a67782 mem_categorization: freely_aliasable doesn't need to take TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
6e290998c3 infer: Turn normalize_associated_type into a method on TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
0907c198c4 infer: Use methods for creating an InferCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
b5122d5c4c rustc: Always refer to TyCtxt as tcx. 2016-05-11 04:14:58 +03:00
Niko Matsakis
de0906fe12 fix DFS for region error reporting
This was causing terrible error reports, because the algorithm was
incorrectly identifying the constraints.
2016-05-10 12:22:20 -04:00
Jeffrey Seyfried
33978b0728 Refactor hir::lowering API 2016-05-10 07:54:52 +00:00
Jeffrey Seyfried
3927ff4fec Make the remaining functions in hir::lowering methods of LoweringContext 2016-05-10 07:54:49 +00:00
Jeffrey Seyfried
946efcd4ca Refactor the hir::lowering::lower_* functions into methods of LoweringContext 2016-05-10 05:41:01 +00:00
Jeffrey Seyfried
8d5c5785d5 Remove needless pubs 2016-05-10 04:58:14 +00:00
Jeffrey Seyfried
eed8d70ac5 Give lowering functions mutable access to the lowering context 2016-05-10 04:58:09 +00:00
Jeffrey Seyfried
417fe6d16e Refactor away method LoweringContext::diagnostic 2016-05-10 04:58:03 +00:00
Jeffrey Seyfried
df572fcf4e Remove unused function lower_opt_bounds 2016-05-10 04:57:50 +00:00
bors
a4d2424cc3 Auto merge of #33443 - jseyfried:resolve_ast, r=nrc
Perform name resolution before and during ast->hir lowering

This PR performs name resolution before and during ast->hir lowering instead of in phase 3.
r? @nrc
2016-05-09 21:31:55 -07:00
bors
72ed7e7894 Auto merge of #32900 - alexcrichton:panic2abort, r=nikomatsakis
rustc: Implement custom panic runtimes

This commit is an implementation of [RFC 1513] which allows applications to
alter the behavior of panics at compile time. A new compiler flag, `-C panic`,
is added and accepts the values `unwind` or `panic`, with the default being
`unwind`. This model affects how code is generated for the local crate, skipping
generation of landing pads with `-C panic=abort`.

[RFC 1513]: https://github.com/rust-lang/rfcs/blob/master/text/1513-less-unwinding.md

Panic implementations are then provided by crates tagged with
`#![panic_runtime]` and lazily required by crates with
`#![needs_panic_runtime]`. The panic strategy (`-C panic` value) of the panic
runtime must match the final product, and if the panic strategy is not `abort`
then the entire DAG must have the same panic strategy.

With the `-C panic=abort` strategy, users can expect a stable method to disable
generation of landing pads, improving optimization in niche scenarios,
decreasing compile time, and decreasing output binary size. With the `-C
panic=unwind` strategy users can expect the existing ability to isolate failure
in Rust code from the outside world.

Organizationally, this commit dismantles the `sys_common::unwind` module in
favor of some bits moving part of it to `libpanic_unwind` and the rest into the
`panicking` module in libstd. The custom panic runtime support is pretty similar
to the custom allocator support with the only major difference being how the
panic runtime is injected (takes the `-C panic` flag into account).

Closes #32837
2016-05-09 18:23:48 -07:00
Manish Goregaokar
6436b6080c
Rollup merge of #33496 - silvo38:master, r=apasel422
Fix minor typo in E0312
2016-05-09 14:59:41 -07:00
Alex Crichton
0ec321f7b5 rustc: Implement custom panic runtimes
This commit is an implementation of [RFC 1513] which allows applications to
alter the behavior of panics at compile time. A new compiler flag, `-C panic`,
is added and accepts the values `unwind` or `panic`, with the default being
`unwind`. This model affects how code is generated for the local crate, skipping
generation of landing pads with `-C panic=abort`.

[RFC 1513]: https://github.com/rust-lang/rfcs/blob/master/text/1513-less-unwinding.md

Panic implementations are then provided by crates tagged with
`#![panic_runtime]` and lazily required by crates with
`#![needs_panic_runtime]`. The panic strategy (`-C panic` value) of the panic
runtime must match the final product, and if the panic strategy is not `abort`
then the entire DAG must have the same panic strategy.

With the `-C panic=abort` strategy, users can expect a stable method to disable
generation of landing pads, improving optimization in niche scenarios,
decreasing compile time, and decreasing output binary size. With the `-C
panic=unwind` strategy users can expect the existing ability to isolate failure
in Rust code from the outside world.

Organizationally, this commit dismantles the `sys_common::unwind` module in
favor of some bits moving part of it to `libpanic_unwind` and the rest into the
`panicking` module in libstd. The custom panic runtime support is pretty similar
to the custom allocator support with the only major difference being how the
panic runtime is injected (takes the `-C panic` flag into account).
2016-05-09 08:22:36 -07:00
Amanieu d'Antras
04835ea5ec Add #[cfg(target_has_atomic)] to get atomic support for the current target 2016-05-09 13:31:47 +01:00
Jeffrey Seyfried
6710eef6b2 Refactor hir::lowering::Resolver 2016-05-09 10:27:24 +00:00
Jeffrey Seyfried
e6d6c37968 Reimplement pretty printing 2016-05-09 02:47:08 +00:00
Jeffrey Seyfried
e5a0dd7c6e Resolve paths generated in the ast->hir lowerer 2016-05-09 02:31:06 +00:00
Jeffrey Seyfried
8428447253 Move resolution to before lowering 2016-05-09 02:31:04 +00:00
silvo38
a7439ad75a Fix minor typo in E0312 2016-05-08 22:33:03 +10:00
bors
8e414e0e3f Auto merge of #33091 - sanxiyn:unused-trait-import-3, r=nrc
Warn unused trait imports, rebased

Rebase of #30021.

Fix #25730.
2016-05-08 04:50:27 -07:00