Uh oh!
There was an error while loading. Please reload this page.
Fix unicode tables - #5944
Closed
graydon wants to merge 291 commits into
Closed
Conversation
It doesn't quite reflect reality
The sentence "Remember that `(float, float)` is a tuple of two floats" sounds like you've already read a section on tuples, but that section comes later. Changing it to "Assuming that ..." makes it more about taking the writer's word that the syntax is how tuples are defined.
It doesn't quite reflect reality
Because the PTHREAD_STACK_MIN of my system is larger than default size, I add the stack_sz check to prevent assertion failure. Besides, libuv has to be modified because some flags are different from other targets. Instead of using hardcoded numbers, I change them to predefined symbols. By the way, the toolchain I used is http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/mips-gnu-linux libuv patch: http://people.cs.nctu.edu.tw/~jyyou/rust/mips-uv.patch Below is the current test result. * core test stackwalk tests can cause segfault so I ignored them. ``` failures: io::tests::test_read_be_int_n io::tests::test_read_buffer_big_enough io::tests::test_read_f32 io::tests::test_read_write_be io::tests::test_read_write_f32 io::tests::test_read_write_le io::tests::test_simple io::tests::test_write_empty rand::tests::rng_seeded_custom_seed2 unstable::uvll::test::test_uv_ll_struct_size_addrinfo unstable::uvll::test::test_uv_ll_struct_size_uv_timer_t result: FAILED. 596 passed; 11 failed; 49 ignored ``` * std test: ``` failures: time::tests::run_tests result: FAILED. 330 passed; 1 failed; 21 ignored ```
…into check_call / method_resolution
per method and list of def-ids per trait.
…e with a bare function store (which is not in fact a kind of value) but rather ty::TraitRef. Removes many uses of fail!() and other telltale signs of type-semantic mismatch. cc rust-lang#4183 (not a fix, but related)
This takes care of one of the last remnants of assumptions about enum layout. A type visitor is now passed a function to read a value's discriminant, then accesses fields by being passed a byte offset for each one. The latter may not be fully general, despite the constraints imposed on representations by borrowed pointers, but works for any representations currently planned and is relatively simple. Closesrust-lang#5652.
…rphism Closesrust-lang#5487, rust-lang#1913, and rust-lang#4568 I tracked this by adding all used unsafe blocks/functions to a set on the `tcx` passed around, and then when the lint pass comes around if an unsafe block/function isn't listed in that set, it's unused. I also removed everything from the compiler that was unused, and up to stage2 is now compiling without any known unused unsafe blocks. I chose `unused_unsafe` as the name of the lint attribute, but there may be a better name...
Hopefully this puts out the final fire
Hopefully this puts out the final fire
r? @graydon Pulled out tests into their own modules inside the files they test, as per the draft style guidelines. Started a new module, path_util, for utility functions to do with paths and directories. Changed default_dest_dir to use a condition and return Path instead of Option<Path>.
…=catamorphism This adds examples for the methods in std::base64. Each example is complete in the sense that you can copy-paste it into a file and compile it successfully without adding anything (imports, etc). The hardest part of figuring out how to use this was figuring out the right import statements to put at the top.
…ate (no pub mod or pub fn).
This patch is a sledge hammer that moves all tests into `#[cfg(test)] mod test { .. }`, and makes them private, there were several instances of `pub mod tests { #[test] pub fn ... } `.
(The reason for this is I was playing with using `syntax` to index code ([result so far](http://www.ug.it.usyd.edu.au/~hwil7821/rust-api/)) and it was getting some junk from the tests.)
The rustdoc commit is particularly brutal, so it's fine if that one isn't landed.Can now use them like `x.transform(|i| i + 3).zip(y.filter(|i| i % 2)`.
This will help not to meet confusing errors. In issue rust-lang#5873, the error was "expected constant expr for vector length: Can't cast str to int". It was originally "expected constant expr for vector length: Non-constant path in constant expr" This patch make the original error to be printed.
flip1995 pushed a commit
to flip1995/rust
that referenced
this pull request
Aug 28, 2020
Fix ICE in `repeat_once` changelog: Fix ICE in [`repeat_once`] Fixesrust-lang#5944
calebcartwright added a commit
to calebcartwright/rust
that referenced
this pull request
Oct 23, 2023
…023-10-22 sync subtree
U007D pushed a commit
to U007D/rust-mos
that referenced
this pull request
Aug 21, 2026
7562: add `generate_enum_match` assist r=matklad a=yoshuawuyts
This adds a `generate_enum_match` assist, which generates `is_` variants for enums (e.g. `Option::{is_none,is_some}` in std). This is my first attempt at contributing to Rust-Analyzer, so I'm not sure if I've gotten everything right. Thanks!
## Example
**Input**
```rust
pub(crate) enum Variant {
Undefined,
Minor, // cursor here
Major,
}
```
**Output**
```rust
pub(crate) enum Variant {
Undefined,
Minor,
Major,
}
impl Variant {
pub(crate) fn is_minor(&self) -> bool {
matches!(self, Self::Minor)
}
}
```
## Future Directions
I made this as a stepping stone for some of the more involved refactors (e.g. rust-lang#5944). I'm not sure yet how to create, use, and test `window.showQuickPick`-based asssists in RA. But once that's possible, it'd probably be nice to be able to generate match methods in bulk through the quickpick UI rather than one-by-one:
```
[x] Select enum members to generate methods for. (3 selected) [ OK ]
---------------------------------------------------------------------------
[x] Undefined
[x] Minor
[x] Major
```
Co-authored-by: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>U007D pushed a commit
to U007D/rust-mos
that referenced
this pull request
Aug 21, 2026
10539: Add "generate delegate methods" assist r=Veykril a=yoshuawuyts _Co-authored with `@rylev_.` This patch adds a new assist: "generate delegate method" which creates a method that calls to a method defined on an inner field. Delegation is common when authoring newtypes, and having IDE support for this is the best way we can make this easier to author in Rust, bar adding language-level support for it. Thanks! Closesrust-lang#5944. ## Example __before__ ```rust struct Age(u8); impl Age { fn age(&self) -> u8 { self.0 } } struct Person { ag$0e: Age, } ``` __after__ ```rust struct Age(u8); impl Age { fn age(&self) -> u8 { self.0 } } struct Person { age: Age, } impl Person { $0fn age(&self) -> u8 { self.age.age() } } ``` Co-authored-by: Ryan Levick <me@ryanlevick.com> Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
This file contains hidden or 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
Sign up for freeto 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.
This switches the unicode tables in core to use static character-range tables and a binary search helper rather than open-coded switch statements. It adds about 50k of read only data to the libcore binary but cuts out a number of huge functions that were expensive to compile.