rust/src
bors c0bbc3927e Auto merge of #55517 - nikomatsakis:universes, r=scalexm
Universes

This PR transitions the compiler to use **universes** instead of the **leak-check**. It is marked as [WIP] for a few reasons:

- The diagnostics at present are terrible =)
- This changes the behavior of coherence, regressing some things that used to compile

The goals of this PR at present are:

- To start getting some eyes on the code
- To do a crater run
- To see the full travis results (due to https://github.com/rust-lang/rust/issues/52452, I am not able to run the full test suite locally anymore at present)

The first few commits in the PR are changing how `evaluate` treats regions. We now track whether region comparisons occurred, reverting the "staticized" query approach that @arielb1 put in. The problem with "staticized" queries is that it relied on the leak-check to get higher-ranked things correct, and we are removing the leak-check in this PR series, so that caused problems.

You can see at the end a collection of test updates. Mostly we behave the same but with atrocious diagnostics, but there are a number of cases where we used to error and now no longer do, as well as single case where we used to **not** error but we now do (the coherence-subtyping change).

(Note: it would be possible to do a version of leak-check that propagates universe information and recover the old behavior. I am reluctant to do so because I'd like to leave us room to get more precise -- e.g., I want to eventually handle things like `exists<'a> { for<'b> { if ('a: 'b) { 'a: 'b } } }` which presently the leak-check cannot cope with etc. Also because it seems more consistent to me: most folks I've talked to expect the new behavior and are surprised to learn that binding sites were so significant before when it comes to coherence. One question is, though, to what extent are people relying on this in the wild?)
2019-01-03 17:18:15 +00:00
..
bootstrap Update cargo, rls, miri 2018-12-28 17:23:01 -08:00
build_helper Remove licenses 2018-12-25 21:08:33 -07:00
ci Remove licenses 2018-12-25 21:08:33 -07:00
doc Auto merge of #57194 - matthiaskrgr:copyright_headers, r=Centril 2019-01-01 06:34:11 +00:00
etc Remove the private generic NonZero<T> wrapper type. 2018-12-26 20:54:10 +01:00
grammar Remove licenses 2018-12-25 21:08:33 -07:00
liballoc Mention ToString in std::fmt docs 2018-12-29 19:17:03 -05:00
libarena Remove licenses 2018-12-25 21:08:33 -07:00
libcore Auto merge of #57125 - doitian:inconsistent-clone-doc, r=bluss 2019-01-01 20:50:13 +00:00
libfmt_macros Point at correct span for arguments in format strings 2018-12-26 20:36:02 -08:00
libgraphviz Remove licenses 2018-12-25 21:08:33 -07:00
libpanic_abort Bound sgx target_env with fortanix as target_vendor 2018-12-31 16:32:56 -08:00
libpanic_unwind Remove licenses 2018-12-25 21:08:33 -07:00
libproc_macro Work-around for shadowing of variant names with assoc const names in libproc_macro/bridge/rpc.rs. 2018-12-26 21:40:21 +00:00
libprofiler_builtins Remove licenses 2018-12-25 21:08:33 -07:00
librustc Auto merge of #55517 - nikomatsakis:universes, r=scalexm 2019-01-03 17:18:15 +00:00
librustc_allocator Remove licenses 2018-12-25 21:08:33 -07:00
librustc_apfloat Remove licenses 2018-12-25 21:08:33 -07:00
librustc_asan Remove licenses 2018-12-25 21:08:33 -07:00
librustc_borrowck Update link to rustc guide 2018-12-28 13:34:00 -05:00
librustc_codegen_llvm Add -Z instrument-mcount 2018-12-30 11:59:03 -08:00
librustc_codegen_ssa Remove licenses 2018-12-25 21:08:33 -07:00
librustc_codegen_utils Remove licenses 2018-12-25 21:08:33 -07:00
librustc_cratesio_shim Remove licenses 2018-12-25 21:08:33 -07:00
librustc_data_structures Remove licenses 2018-12-25 21:08:33 -07:00
librustc_driver remove outdated rustc_driver tests 2019-01-02 17:35:05 -05:00
librustc_errors Remove licenses 2018-12-25 21:08:33 -07:00
librustc_fs_util Remove licenses 2018-12-25 21:08:33 -07:00
librustc_incremental Remove licenses 2018-12-25 21:08:33 -07:00
librustc_lint rename type_moves_by_default to type_is_copy_modulo_regions 2019-01-02 17:35:06 -05:00
librustc_llvm Remove licenses 2018-12-25 21:08:33 -07:00
librustc_lsan Remove licenses 2018-12-25 21:08:33 -07:00
librustc_metadata Store Ident rather than just Name in HIR types Item and ForeignItem. 2018-12-26 21:26:37 +00:00
librustc_mir Auto merge of #55517 - nikomatsakis:universes, r=scalexm 2019-01-03 17:18:15 +00:00
librustc_msan Remove licenses 2018-12-25 21:08:33 -07:00
librustc_passes Do not abort compilation if expansion produces errors 2018-12-27 15:51:36 +03:00
librustc_platform_intrinsics Remove licenses 2018-12-25 21:08:33 -07:00
librustc_plugin Remove licenses 2018-12-25 21:08:33 -07:00
librustc_privacy Address review comments 2019-01-01 01:39:55 +03:00
librustc_resolve Auto merge of #57199 - petrochenkov:ambig, r=estebank 2019-01-01 02:08:39 +00:00
librustc_save_analysis Remove licenses 2018-12-25 21:08:33 -07:00
librustc_target Remove licenses 2018-12-25 21:08:33 -07:00
librustc_traits Stop well-formedness checking unreachable code. 2018-12-30 14:30:59 +01:00
librustc_tsan Remove licenses 2018-12-25 21:08:33 -07:00
librustc_typeck rename type_moves_by_default to type_is_copy_modulo_regions 2019-01-02 17:35:06 -05:00
librustdoc Auto merge of #56225 - alexreg:type_alias_enum_variants, r=petrochenkov 2018-12-29 21:03:11 +00:00
libserialize Remove licenses 2018-12-25 21:08:33 -07:00
libstd Auto merge of #57243 - dingelish:master, r=sfackler 2019-01-02 15:09:41 +00:00
libsyntax Auto merge of #57251 - petrochenkov:reregr, r=varkor 2019-01-02 09:24:10 +00:00
libsyntax_ext Use structured suggestion for braceless unicode escape squence 2018-12-31 09:44:58 -08:00
libsyntax_pos Remove licenses 2018-12-25 21:08:33 -07:00
libterm Remove licenses 2018-12-25 21:08:33 -07:00
libtest Bound sgx target_env with fortanix as target_vendor 2018-12-31 16:32:56 -08:00
libunwind Remove licenses 2018-12-25 21:08:33 -07:00
llvm@f4728ed8fa Update LLVM submodule 2018-12-18 15:26:10 +05:30
llvm-emscripten@7f23313edf Pull in fix for dist-i686-linux build 2018-11-09 16:59:45 +01:00
rtstartup Remove licenses 2018-12-25 21:08:33 -07:00
rustc Remove licenses 2018-12-25 21:08:33 -07:00
rustllvm Remove licenses 2018-12-25 21:08:33 -07:00
stdsimd@513e067908 Update the stdsimd submodule 2018-12-17 13:40:21 -08:00
test Auto merge of #55517 - nikomatsakis:universes, r=scalexm 2019-01-03 17:18:15 +00:00
tools submodules: update clippy from f7bdf500 to 39bd8449 2018-12-30 18:16:09 +01:00
.gitignore
README.md rustc-guide has moved 2018-11-26 15:03:13 -06:00
stage0.txt Bump to 1.33.0 2018-12-12 08:09:26 -08:00

This directory contains the source code of the rust project, including:

  • rustc and its tests
  • libstd
  • Various submodules for tools, like rustdoc, rls, etc.

For more information on how various parts of the compiler work, see the rustc guide.

There is also useful content in the following READMEs, which are gradually being moved over to the guide: