forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use place instead of symbol [In Progress] #35
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Only run for `QPath::Resolved` with `Some` self parameter (`<X as Y>::T`) - Fall back to the previous behavior if the path can't be resolved - Show what the behavior is if the type can't be normalized - Run `resolve_vars_if_possible` It's not clear whether or not this is necessary. See rust-lang#77616 for more context. - Add a test for cross-crate re-exports - Use the same code for both `hir::Ty` and `Ty`
This uses the same `with_param_env` pattern that late lints use. Thanks to all the doctree refactors, this was very easy to add.
* `rustc` should now compile under LLVM 9 or 10 * Compiler generates an error if `-Z instrument-coverage` is specified but LLVM version is less than 11 * Coverage tests that require `-Z instrument-coverage` and run codegen should be skipped if LLVM version is less than 11
rustc_ast currently has a few dependencies on rustc_lexer. Ideally, an AST would not have any dependency its lexer, for minimizing unnecessarily design-time dependencies. Breaking this dependency would also have practical benefits, since modifying rustc_lexer would not trigger a rebuild of rustc_ast. This commit does not remove the rustc_ast --> rustc_lexer dependency, but it does remove one of the sources of this dependency, which is the code that handles fuzzy matching between symbol names for making suggestions in diagnostics. Since that code depends only on Symbol, it is easy to move it to rustc_span. It might even be best to move it to a separate crate, since other tools such as Cargo use the same algorithm, and have simply contain a duplicate of the code. This changes the signature of find_best_match_for_name so that it is no longer generic over its input. I checked the optimized binaries, and this function was duplicated at nearly every call site, because most call sites used short-lived iterator chains, generic over Map and such. But there's no good reason for a function like this to be generic, since all it does is immediately convert the generic input (the Iterator impl) to a concrete Vec<Symbol>. This has all of the costs of generics (duplicated method bodies) with no benefit. Changing find_best_match_for_name to be non-generic removed about 10KB of code from the optimized binary. I know it's a drop in the bucket, but we have to start reducing binary size, and beginning to tame over-use of generics is part of that.
Co-authored-by: Wesley Wiser <[email protected]>
… r=oli-obk Rename `optin_builtin_traits` to `auto_traits` They were originally called "opt-in, built-in traits" (OIBITs), but people realized that the name was too confusing and a mouthful, and so they were renamed to just "auto traits". The feature flag's name wasn't updated, though, so that's what this PR does. There are some other spots in the compiler that still refer to OIBITs, but I don't think changing those now is worth it since they are internal and not particularly relevant to this PR. Also see <https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/opt-in.2C.20built-in.20traits.20(auto.20traits).20feature.20name>. r? `@oli-obk` (feel free to re-assign if you're not the right reviewer for this)
When using the unstable `--persist-doctests` option, Windows path separators were not escaped properly. Also when running the command in a workspace, crate files can overwrite each other. Before: `src\lib_rs_1_0\rust_out` After: `\crate_a_src_lib_rs_1_0\rust_out`, `\crate_b_src_lib_rs_1_0\rust_out`
…ents in AssocTyConstraints haven't been fully implemented
The sublist was being rendered as a code block because it was indented 4 spaces.
A list was being rendered all on one line and there were other formatting issues as well.
The angle brackets were confusing my IDE and I thought they were unnecessary. I was wrong.
Fixes rust-lang#79152 This code was already set up to handle indexing an array. However, it appears that we never end up with an inference variable for the slice case, so the missing call to `resolve_vars_if_possible` had no effect until now.
…jyn514 More intra doc links Helps with rust-lang#75080. I did a commit by group of file, I can squash if wanted. `@rustbot` modify labels: T-doc, A-intra-doc-links r? `@jyn514`
…gnueabi-target, r=petrochenkov Add built-in support for the armv5te-unknown-linux-uclibcgnueabi target Hi! I'd like to add built-in support for the `armv5te-unknown-linux-uclibcgnueabi` target. It's a pretty common target used by many devices like routers and IP cameras. It's mostly a copy-paste of `armv5te-unknown-linux-gnueabi`. I've tested it on a quite complex application that uses tokio, openssl and a lot of other stuff and everything seems to be working fine. I'm not sure about the `post_link_args` but the point is that my linker fails when `-ldl` isn't specified. Maybe there is a better place where to put this option... It's my first contribution to Rust itself, so feel free to wash my head 😄 _Note: The app mentioned above was built with this in my `.cargo/config`:_ ``` [unstable] build-std = ["core", "std", "alloc", "proc_macro", "panic_abort"] build-std-features = ["panic_immediate_abort"] ```
Remove extra call to upvar_tys We already visit the tuple of upvar_tys, we don't need to visit each individual type. Fixes rust-lang#78720 r? `@ghost`
…d-ux, r=jyn514 Make keyboard interactions in the settings menu more pleasant rust-lang#78868 improved the keyboard interactions with the settings page. This PR goes a bit further by allowing more than just "space" to toggle the checkboxes. r? `@jyn514`
Change ui test that are run-pass and that do not test the compiler to library tests Part of rust-lang#76268, these are some of the relevant ui tests I found that can be replaced by library tests. Note: this PR just moves the tests, I have not checked for any overlap between these tests and existing library tests. The only test I changed is `env_home_dir`, where I added code to restore the old home dir after testing. All moved tests: | ui test | library test file | test | | --- | --- | --- | | `const\ascii_ctype.rs` | `core\tests\ascii.rs` | `ascii_ctype_const` | | `const\const-str-ptr.rs` | `alloc\tests\str.rs` | `const_str_ptr` | | `assert-eq-trailing-comma.rs` | `core\tests\macros.rs` | `assert_eq_trailing_comma` | | `assert-escape.rs` | `core\tests\macros.rs` | `assert_escape` | | `assert-ne-trailing-comma.rs` | `core\tests\macros.rs` | `assert_ne_trailing_comma` | | `atomic-access-bool.rs` | `core\tests\atomic.rs` | `atomic_access_bool` | | `atomic-alignment.rs` | `core\tests\atomic.rs` | `atomic_alignment` | | `atomic-compare_exchange.rs` | `core\tests\atomic.rs` | `atomic_compare_exchange` | | ~~`atomic-print.rs`~~ | ~~`std\tests\process.rs`~~ | ~~`atomic_print`~~ | | `bool.rs` | `core\tests\bool.rs` | `test_bool` | | `bool_not.rs` | `core\tests\bool.rs` | `test_bool_not` | | `char_unicode.rs` | `core\tests\unicode.rs` | `version` | | `cmp-default.rs` | `core\tests\cmp.rs` | `cmp_default` | | `deref-mut-on-ref.rs` | `core\tests\ops.rs` | `deref_mut_on_ref` | | `deref-on-ref.rs` | `core\tests\ops.rs` | `deref_on_ref` | | `env-home-dir.rs` | `std\tests\env.rs` | `env_home_dir` | | ~~`env-vars.rs`~~ | ~~`std\tests\env.rs`~~ | ~~`env_vars`~~ | | `extend-for-unit.rs` | `core\tests\iter.rs` | `extend_for_unit` | | `offset_from.rs` | `core\tests\ptr.rs` | `offset_from` | | `option-ext.rs` | `core\tests\option.rs` | `option_ext` | | `result-opt-conversions.rs` | `core\tests\result.rs` | `result_opt_conversions` | | `sleep.rs` | `std\tests\thread.rs` | `sleep` | | ~~`try-wait.rs`~~ | ~~`std\tests\process.rs`~~ | ~~`try_wait`~~ | | `utf8.rs` | `alloc\tests\str.rs` | `utf8` | | `utf8_chars.rs` | `alloc\tests\str.rs` | `utf8_chars` | | `wrapping-int-api.rs` | `core\tests\num\wrapping.rs` | `wrapping_int_api` |
…nd_str_type_name, r=varkor Stop adding '*' at the end of slice and str typenames for MSVC case When computing debug info for MSVC debuggers, Rust compiler emits C++ style type names for compatibility with .natvis visualizers. All Ref types are treated as equivalences of C++ pointers in this process, and, as a result, their type names end with a '\*'. Since Slice and Str are treated as Ref by the compiler, their type names also end with a '\*'. This causes the .natvis engine for WinDbg fails to display data of Slice and Str objects. We addressed this problem simply by removing the '*' at the end of type names for Slice and Str types. Debug info in WinDbg before the fix: ![image](https://user-images.githubusercontent.com/74681961/99594120-9a4dcf80-29a7-11eb-8cce-aedaf1da6d21.png) Debug info in WinDbg after the fix: ![image](https://user-images.githubusercontent.com/74681961/99597173-717c0900-29ac-11eb-861e-98143a9177cf.png) This change has also been tested with debuggers for Visual Studio, VS Code C++ and VS Code LLDB to make sure that it does not affect the behavior of other kinds of debugger.
…-core, r=jyn514 Remove const_fn_feature_flags test ## Overview Helps with rust-lang#76268 I found `const_fn_feature_flags` is targeting feature-gate and remove it. r? ``@matklad``
Move const ip in ui test to unit test Helps with rust-lang#76268 r? ``@matklad``
…imulacrum Validate lint docs separately. This addresses some concerns raised in rust-lang#76549 (comment) about errors with the lint docs being confusing and cumbersome. Errors from validating the lint documentation were being generated during `x.py doc` (and `x.py dist`), since extraction and validation are being done in a single step. This changes it so that extraction and validation are separated, so that `x.py doc` will not error if there is a validation problem, and tests are moved to `x.py test src/tools/lint-docs`. This includes the following changes: * Separate validation to `x.py test`. * Added some more documentation on how to more easily modify and test the docs. * Added more help to the error messages to hopefully provide more information on how to fix things. The first commit just moves the code around, so you may consider looking at the other commits for a smaller diff.
…illaumeGomez Add -Z normalize-docs and enable it for compiler docs Works around rust-lang#79459 by only enabling normalization for the compiler itself (and anyone who opts-in on nightly). Eventually I want to remove this and enable normalization by default, but that's turned out to be [really hard](https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/How.20do.20I.20normalize.20projection.20types.20to.20a.20single.20type.3F/near/218125195). This uses a command line option instead of a feature gate so it's easier to pass it to all crates at once. Theoretically it's better to use a feature gate instead so that it's easier for people to use on docs.rs, but I'm also not terribly concerned with how easy it to use a temporary hack. Addresses rust-lang#77459.
Move intra-doc link tests into a subdirectory They were starting to get unwieldy. r? ``@Manishearth``
Show since when a function is const in stdlib Fixes rust-lang#76998 This makes it so that functions with the `#[rustc_const_stable()]` attribute now show from what version they were stably declared const, alongside what version they were declared stable. Example from `Result`: ![image](https://user-images.githubusercontent.com/13342132/100561194-1be60d00-3286-11eb-99ff-1e81201218a9.png) r? ``@jyn514``
update Miri This update includes rust-lang/miri#1617, the data race detector by ``@JCTyblaidd.`` :) Cc ``@rust-lang/miri`` r? ``@ghost``
Update with status for various NetBSD ports. The NetBSD ports of rust to aarch64, armv7*, i686, and powerpc** all both build and run. Status is as of rust 1.47.0. *) Natively requires repeated successive build attempts (`rustc` is such a resource pig VM-consumption-wise), or run in a chroot on an aarch64 host where the available VM space is 4GB instead of the native 2GB. **) Powerpc either requires `-latomic` in a directory searched by default by `ld` or to be built within pkgsrc which has a patch and support package to tackle this issue.
Update books ## nomicon 1 commits in 23c49f1d5ce4720bc5b7e3a920f47eccc8da6b63..d8383b65f7948c2ca19191b3b4bd709b403aaf45 2020-11-05 13:30:53 +0900 to 2020-11-22 10:24:42 -0500 - Clarify that any alignment is valid for ZSTs ## reference 5 commits in a7de763c213292f5b44bf10acb87ffa38724814d..a8afdca5d0715b2257b6f8b9a032fd4dd7dae855 2020-11-11 19:13:21 -0800 to 2020-11-30 06:44:46 -0800 - Describe relationship between reference and optimizers (rust-lang/reference#902) - A simple missing space (rust-lang/reference#909) - Cleanup formatting (rust-lang/reference#907) - Use `doc`, not `test` for fn item inner attr example (rust-lang/reference#906) - Update where our chat is. (rust-lang/reference#903) ## book 1 commits in 13e1c05420bca86ecc79e4ba5b6d02de9bd53c62..a190438d77d28041f24da4f6592e287fab073a61 2020-10-20 14:57:32 -0500 to 2020-11-16 10:44:08 -0600 - Change SipHash not found (404) link to SipHash in Wikipedia (rust-lang/book#2503) ## rust-by-example 4 commits in 1886fda6981b723e4de637074455558f8bc1e83c..236c734a2cb323541b3394f98682cb981b9ec086 2020-10-28 13:46:54 -0500 to 2020-11-30 14:05:49 -0300 - Update old invalid link (rust-lang/rust-by-example#1392) - Moved "See also" link to the correct page. (rust-lang/rust-by-example#1389) - Fix some markdown lint warnings (rust-lang/rust-by-example#1388) - Minor grammar suggestion (rust-lang/rust-by-example#1386) ## embedded-book 1 commits in ca8169e69b479f615855d0eece7e318138fcfc00..ba34b8a968f9531d38c4dc4411d5568b7c076bfe 2020-10-15 15:06:35 +0000 to 2020-11-17 00:20:43 +0000 - Clarify CAS availability (rust-embedded/book#273)
Rollup of 11 pull requests Successful merges: - rust-lang#79038 (Change ui test that are run-pass and that do not test the compiler to library tests) - rust-lang#79184 (Stop adding '*' at the end of slice and str typenames for MSVC case) - rust-lang#79227 (Remove const_fn_feature_flags test) - rust-lang#79444 (Move const ip in ui test to unit test) - rust-lang#79522 (Validate lint docs separately.) - rust-lang#79525 (Add -Z normalize-docs and enable it for compiler docs) - rust-lang#79527 (Move intra-doc link tests into a subdirectory) - rust-lang#79548 (Show since when a function is const in stdlib) - rust-lang#79568 (update Miri) - rust-lang#79573 (Update with status for various NetBSD ports.) - rust-lang#79583 (Update books) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
UDS can be a sendfile destination, just like TCP sockets.
…, r=pnkfelix Implement lazy decoding of DefPathTable during incremental compilation PR rust-lang#75813 implemented lazy decoding of the `DefPathTable` from crate metadata. However, it requires decoding the entire `DefPathTable` when incremental compilation is active, so that we can map a decoded `DefPathHash` to a `DefId` from an arbitrary crate. This PR adds support for lazy decoding of dependency `DefPathTable`s when incremental compilation si active. When we load the incremental cache and dep graph, we need the ability to map a `DefPathHash` to a `DefId` in the current compilation session (if the corresponding definition still exists). This is accomplished by storing the old `DefId` (that is, the `DefId` from the previous compilation session) for each `DefPathHash` we need to remap. Since a `DefPathHash` includes the owning crate, the old crate is guaranteed to be the right one (if the definition still exists). We then use the old `DefIndex` as an initial guess, which we validate by comparing the expected and actual `DefPathHash`es. In most cases, foreign crates will be completely unchanged, which means that we our guess will be correct. If our guess is wrong, we fall back to decoding the entire `DefPathTable` for the foreign crate. This still represents an improvement over the status quo, since we can skip decoding the entire `DefPathTable` for other crates (where all of our guesses were correct).
Add wasm32 support to inline asm There is some contention around inline asm and wasm, and I really only made this to figure out the process of hacking on rustc, but I figured as long as the code existed, it was worth uploading. cc `@Amanieu`
Warn if `dsymutil` returns an error code This checks the error code returned by `dsymutil` and warns if it failed. It also provides the stdout and stderr logs from `dsymutil`, similar to the native linker step. I tried to think of ways to test this change, but so far I haven't found a good way, as you'd likely need to inject some nonsensical args into `dsymutil` to induce failure, which feels too artificial to me. Also, rust-lang#79361 suggests Rust is on the verge of disabling `dsymutil` by default, so perhaps it's okay for this change to be untested. In any case, I'm happy to add a test if someone sees a good approach. Fixes rust-lang#78770
…r=oli-obk Improve attribute message error spans I got the idea while working on rust-lang#79464
…m-ou-se std::io: Use sendfile for UnixStream `UnixStream` was forgotten in rust-lang#75272 . Benchmark yields the following results. Before: `running 1 test test sys::unix::kernel_copy::tests::bench_file_to_uds_copy ... bench: 54,399 ns/iter (+/- 6,817) = 2409 MB/s` After: `running 1 test test sys::unix::kernel_copy::tests::bench_file_to_uds_copy ... bench: 18,627 ns/iter (+/- 6,007) = 7036 MB/s`
…laumeGomez Rollup of 3 pull requests Successful merges: - rust-lang#79508 (Warn if `dsymutil` returns an error code) - rust-lang#79509 (Improve attribute message error spans) - rust-lang#79600 (std::io: Use sendfile for UnixStream) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Modifies
closure_kind_origins
such thatPlace
is used instead ofSymbol
to describe which variable influenced the decision of selecting a specific closure kind (FnMut
,FnOnce
,Fn
)Remainging work: Figure out why for 4 of the tests, some stderr info are missing.
Closes rust-lang/project-rfc-2229/issues/21
This change is