| Age | Commit message (Collapse) | Author | Lines |
|
|
|
Fix AsmOption rule in rust.ungram
|
|
|
|
|
|
|
|
|
|
Taking a raw ref of a deref is always safe
|
|
|
|
|
|
|
|
|
|
Pin `cc` and run `cargo update`
`cc` tends to cause issues with automatic bumps so locking it to be bumped individually when necessary
<details>
<summary>compiler and tools dependencies</summary>
```
Updating allocator-api2 v0.2.20 -> v0.2.21
Updating annotate-snippets v0.11.4 -> v0.11.5
Updating anyhow v1.0.93 -> v1.0.94
Updating bstr v1.11.0 -> v1.11.1
Updating chrono v0.4.38 -> v0.4.39
Updating clap v4.5.21 -> v4.5.23
Updating clap_builder v4.5.21 -> v4.5.23
Updating clap_complete v4.5.38 -> v4.5.39
Updating clap_lex v0.7.3 -> v0.7.4
Updating colored v2.1.0 -> v2.2.0
Updating console v0.15.8 -> v0.15.10
Updating crossbeam-channel v0.5.13 -> v0.5.14
Updating crossbeam-deque v0.8.5 -> v0.8.6
Updating crossbeam-utils v0.8.20 -> v0.8.21
Updating encode_unicode v0.3.6 -> v1.0.0
Updating fastrand v2.2.0 -> v2.3.0
Updating home v0.5.9 -> v0.5.11
Updating js-sys v0.3.74 -> v0.3.76
Updating libc v0.2.167 -> v0.2.168
Updating miniz_oxide v0.8.0 -> v0.8.1
Updating pest v2.7.14 -> v2.7.15
Updating pest_derive v2.7.14 -> v2.7.15
Updating pest_generator v2.7.14 -> v2.7.15
Updating pest_meta v2.7.14 -> v2.7.15
Updating redox_syscall v0.5.7 -> v0.5.8
Updating rustc-stable-hash v0.1.0 -> v0.1.1
Updating rustix v0.38.41 -> v0.38.42
Updating self_cell v1.0.4 -> v1.1.0
Updating semver v1.0.23 -> v1.0.24
Updating serde v1.0.215 -> v1.0.216
Updating serde_derive v1.0.215 -> v1.0.216
Adding thiserror v2.0.7
Adding thiserror-impl v2.0.7
Updating time v0.3.36 -> v0.3.37
Updating time-macros v0.2.18 -> v0.2.19
Updating tokio v1.41.1 -> v1.42.0
Updating wasm-bindgen v0.2.97 -> v0.2.99
Updating wasm-bindgen-backend v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99
Updating wasm-bindgen-shared v0.2.97 -> v0.2.99
Updating wasm-encoder v0.221.0 -> v0.221.2
Updating wasmparser v0.221.0 -> v0.221.2
Updating wast v221.0.0 -> v221.0.2
Updating wat v1.221.0 -> v1.221.2
```
</details>
<details>
<summary>library dependencies</summary>
```
Updating allocator-api2 v0.2.20 -> v0.2.21
Updating libc v0.2.167 -> v0.2.168
```
</details>
<details>
<summary>rustbook dependencies</summary>
```
Updating anyhow v1.0.93 -> v1.0.94
Updating bstr v1.11.0 -> v1.11.1
Updating chrono v0.4.38 -> v0.4.39
Updating clap v4.5.21 -> v4.5.23
Updating clap_builder v4.5.21 -> v4.5.23
Updating clap_complete v4.5.38 -> v4.5.39
Updating clap_lex v0.7.3 -> v0.7.4
Updating fastrand v2.2.0 -> v2.3.0
Updating js-sys v0.3.74 -> v0.3.76
Updating libc v0.2.167 -> v0.2.168
Updating miniz_oxide v0.8.0 -> v0.8.1
Updating pest v2.7.14 -> v2.7.15
Updating pest_derive v2.7.14 -> v2.7.15
Updating pest_generator v2.7.14 -> v2.7.15
Updating pest_meta v2.7.14 -> v2.7.15
Updating pulldown-cmark-to-cmark v19.0.0 -> v19.0.1
Updating redox_syscall v0.5.7 -> v0.5.8
Updating rustix v0.38.41 -> v0.38.42
Updating semver v1.0.23 -> v1.0.24
Updating serde v1.0.215 -> v1.0.216
Updating serde_derive v1.0.215 -> v1.0.216
Adding thiserror v2.0.7
Adding thiserror-impl v2.0.7
Updating wasm-bindgen v0.2.97 -> v0.2.99
Updating wasm-bindgen-backend v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99
Updating wasm-bindgen-shared v0.2.97 -> v0.2.99
Removing windows-sys v0.52.0
```
</details>
|
|
`rustc_symbol` is the source of truth for keywords.
rustdoc has its own implicit definition of keywords, via the
`is_doc_keyword`. It (presumably) intends to include all keywords, but
it omits `yeet`.
rustfmt has its own explicit list of Rust keywords. It also (presumably)
intends to include all keywords, but it omits `await`, `builtin`, `gen`,
`macro_rules`, `raw`, `reuse`, `safe`, and `yeet`. Also, it does linear
searches through this list, which is inefficient.
This commit fixes all of the above problems by introducing a new
predicate `is_any_keyword` in rustc and using it in rustdoc and rustfmt.
It documents that it's not the right predicate in most cases.
|
|
fix: Fix pretty-printing of `@` patterns
|
|
Update cargo
6 commits in 769f622e12db0001431d8ae36d1093fb8727c5d9..99dff6d77db779716dda9ca3b29c26addd02c1be
2024-12-14 04:27:35 +0000 to 2024-12-18 00:55:17 +0000
- fix(build-std): make Resolve align to what to build (rust-lang/cargo#14938)
- test(build-std): Isolate output test to avoid spurious `[BLOCKING]` messages from concurrent runs (rust-lang/cargo#14943)
- docs: fix wrong changelog PR link (rust-lang/cargo#14947)
- docs(unstable): Correct stabilization version for MSRV-resolver (rust-lang/cargo#14945)
- Update release information for home 0.5.11 (rust-lang/cargo#14939)
- Limit release trigger to 0.* tags (rust-lang/cargo#14940)
|
|
|
|
|
|
|
|
Because `TokenStreamIter` is a much better name for a `TokenStream`
iterator. Also rename the `TokenStream::trees` method as
`TokenStream::iter`, and some local variables.
|
|
It's only ever used with a lookahead of 0, so this commit removes the
lookahead and renames it `peek`.
|
|
As it happens, lookahead values of 0, 1, and 2 all work fine here, due
to the structure of the code. (Values or 3 or greater cause test
failures.) This commit changes the lookahead to zero because that will
facilitate cleanups in subsequent commits.
|
|
It didn't print the `@`.
|
|
Field init shorthand allows writing initializers like `tcx: tcx` as
`tcx`. The compiler already uses it extensively. Fix the last few places
where it isn't yet used.
|
|
r=jieyouxu,Urgau,Kobzol
Promote powerpc64le-unknown-linux-musl to tier 2 with host tools
MCP: https://github.com/rust-lang/compiler-team/issues/803
I'm using crosstool-ng for building a toolchain because GCC 9 from `musl-toolchain.sh` has float ABI issues (?) and can't compile LLVM, and writing a crosstool-ng config for a target feels less hacky than yet another target specific shell script. I also defined a kernel version, since there wasn't one specified before. If a lower version is desired, just let me know. I also tried to match the rust configure args with the loongarch64 musl tier 2 target.
The resulting compiler works fine, built with `DEPLOY=1 ./src/ci/docker/run.sh dist-powerpc64le-linux` and tested on Alpine Linux in a VM and on a bare metal POWER8 machine:
```
qemu-ppc64le:/tmp/rust-nightly-powerpc64le-unknown-linux-musl$ ash install.sh
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-powerpc64le-unknown-linux-musl'
install: installing component 'cargo'
install: installing component 'rustfmt-preview'
install: installing component 'rls-preview'
install: installing component 'rust-analyzer-preview'
install: installing component 'llvm-tools-preview'
install: installing component 'clippy-preview'
install: installing component 'miri-preview'
install: installing component 'rust-analysis-powerpc64le-unknown-linux-musl'
install: installing component 'llvm-bitcode-linker-preview'
install: WARNING: failed to run ldconfig. this may happen when not installing as root. run with --verbose to see the error
rust installed.
qemu-ppc64le:~$ echo 'fn main() { println!("hello world"); }' > test.rs
qemu-ppc64le:~$ rustc test.rs
qemu-ppc64le:~$ ./test
hello world
qemu-ppc64le:~$ file test
test: ELF 64-bit LSB executable, 64-bit PowerPC or cisco 7500, OpenPOWER ELF V2 ABI, version 1 (SYSV), statically linked, BuildID[sha1]=596ee6abf9add487ebc54fb71c2076fb6faea013, with debug_info, not stripped
```
try-job: dist-powerpc64le-linux
|
|
Split up attribute parsing code and move data types to `rustc_attr_data_structures`
This change renames `rustc_attr` to `rustc_attr_parsing`, and splits up the parsing code. At the same time, all the data types used move to `rustc_attr_data_structures`. This is in preparation of also having a third crate: `rustc_attr_validation`
I initially envisioned this as two separate PRs, but I think doing it in one go reduces the number of ways others would have to rebase their changes on this. However, I can still split them.
r? `@oli-obk` (we already discussed how this is a first step in a larger plan)
For a more detailed plan on how attributes are going to change, see https://github.com/rust-lang/rust/issues/131229
Edit: this looks like a giant PR, but the changes are actually rather trivial. Each commit is reviewable on its own, and mostly moves code around. No new logic is added.
|
|
Updating allocator-api2 v0.2.20 -> v0.2.21
Updating annotate-snippets v0.11.4 -> v0.11.5
Updating anyhow v1.0.93 -> v1.0.94
Updating bstr v1.11.0 -> v1.11.1
Updating chrono v0.4.38 -> v0.4.39
Updating clap v4.5.21 -> v4.5.23
Updating clap_builder v4.5.21 -> v4.5.23
Updating clap_complete v4.5.38 -> v4.5.39
Updating clap_lex v0.7.3 -> v0.7.4
Updating colored v2.1.0 -> v2.2.0
Updating console v0.15.8 -> v0.15.10
Updating crossbeam-channel v0.5.13 -> v0.5.14
Updating crossbeam-deque v0.8.5 -> v0.8.6
Updating crossbeam-utils v0.8.20 -> v0.8.21
Updating encode_unicode v0.3.6 -> v1.0.0
Updating fastrand v2.2.0 -> v2.3.0
Updating home v0.5.9 -> v0.5.11
Updating js-sys v0.3.74 -> v0.3.76
Updating libc v0.2.167 -> v0.2.168
Updating miniz_oxide v0.8.0 -> v0.8.1
Updating pest v2.7.14 -> v2.7.15
Updating pest_derive v2.7.14 -> v2.7.15
Updating pest_generator v2.7.14 -> v2.7.15
Updating pest_meta v2.7.14 -> v2.7.15
Updating redox_syscall v0.5.7 -> v0.5.8
Updating rustc-stable-hash v0.1.0 -> v0.1.1
Updating rustix v0.38.41 -> v0.38.42
Updating self_cell v1.0.4 -> v1.1.0
Updating semver v1.0.23 -> v1.0.24
Updating serde v1.0.215 -> v1.0.216
Updating serde_derive v1.0.215 -> v1.0.216
Adding thiserror v2.0.7
Adding thiserror-impl v2.0.7
Updating time v0.3.36 -> v0.3.37
Updating time-macros v0.2.18 -> v0.2.19
Updating tokio v1.41.1 -> v1.42.0
Updating wasm-bindgen v0.2.97 -> v0.2.99
Updating wasm-bindgen-backend v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99
Updating wasm-bindgen-shared v0.2.97 -> v0.2.99
Updating wasm-encoder v0.221.0 -> v0.221.2
Updating wasmparser v0.221.0 -> v0.221.2
Updating wast v221.0.0 -> v221.0.2
Updating wat v1.221.0 -> v1.221.2
library dependencies:
Updating allocator-api2 v0.2.20 -> v0.2.21
Updating libc v0.2.167 -> v0.2.168
rustbook dependencies:
Updating anyhow v1.0.93 -> v1.0.94
Updating bstr v1.11.0 -> v1.11.1
Updating chrono v0.4.38 -> v0.4.39
Updating clap v4.5.21 -> v4.5.23
Updating clap_builder v4.5.21 -> v4.5.23
Updating clap_complete v4.5.38 -> v4.5.39
Updating clap_lex v0.7.3 -> v0.7.4
Updating fastrand v2.2.0 -> v2.3.0
Updating js-sys v0.3.74 -> v0.3.76
Updating libc v0.2.167 -> v0.2.168
Updating miniz_oxide v0.8.0 -> v0.8.1
Updating pest v2.7.14 -> v2.7.15
Updating pest_derive v2.7.14 -> v2.7.15
Updating pest_generator v2.7.14 -> v2.7.15
Updating pest_meta v2.7.14 -> v2.7.15
Updating pulldown-cmark-to-cmark v19.0.0 -> v19.0.1
Updating redox_syscall v0.5.7 -> v0.5.8
Updating rustix v0.38.41 -> v0.38.42
Updating semver v1.0.23 -> v1.0.24
Updating serde v1.0.215 -> v1.0.216
Updating serde_derive v1.0.215 -> v1.0.216
Adding thiserror v2.0.7
Adding thiserror-impl v2.0.7
Updating wasm-bindgen v0.2.97 -> v0.2.99
Updating wasm-bindgen-backend v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro v0.2.97 -> v0.2.99
Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99
Updating wasm-bindgen-shared v0.2.97 -> v0.2.99
Removing windows-sys v0.52.0
|
|
|
|
|
|
fix: Fix a panic with a diagnostics fix when a keyword is used as a field
|
|
The reason I did this is because I plan to add another field to this struct (indicating whether the item was cfg'ed out), but it seems worthy even separately and removes a bunch of one-letter variable names and tuple-indexing. It is also easy to separate from future changes, so it will be easier to review this way.
|
|
|
|
|
|
I found it easiest to fix in the quickfix code, and not deeper (e.g. body lowering).
|
|
Subtree update of `rust-analyzer`
r? `@ghost`
|
|
Prior to this commit we used to generate import paths, then zipped them with the existing qualifier to check if they agree on the path to import.
This is brittle when re-exports come into play causing items to have multiple applicable paths that refer to them.
This commit instead rewrites this logic by generating the import path for the qualifier, verifying that the rest of the qualifier resolves and then doing a final lookup on that resolution result for the final segment instead.
|
|
internal: Don't serialize empty fields in completions and resolve payloads
|
|
feat: Use string literal contents as a name when extracting into variable
|
|
|
|
minor: improve name suggestion for destructure_tuple_binding
|
|
feat: Report unresolved idents for implicit captures in `format_args!()`
|
|
internal: Simplify ratoml testdir usage
|
|
|
|
And also a bit of cleanup by storing the capture's span with the open quote included.
|
|
|
|
Hir attributes
This PR needs some explanation, it's somewhat large.
- This is step one as described in https://github.com/rust-lang/compiler-team/issues/796. I've added a new `hir::Attribute` which is a lowered version of `ast::Attribute`. Right now, this has few concrete effects, however every place that after this PR parses a `hir::Attribute` should later get a pre-parsed attribute as described in https://github.com/rust-lang/compiler-team/issues/796 and transitively https://github.com/rust-lang/rust/issues/131229.
- an extension trait `AttributeExt` is added, which is implemented for both `ast::Attribute` and `hir::Atribute`. This makes `hir::Attributes` mostly compatible with code that used to parse `ast::Attribute`. All its methods are also added as inherent methods to avoid having to import the trait everywhere in the compiler.
- Incremental can not not hash `ast::Attribute` at all.
|
|
fix: Fix proc-macro dylib names on windows
|
|
|
|
Fix `--nocapture` for run-make tests
This was confusing because there are three layers of output hiding.
1. libtest shoves all output into a buffer and does not print it unless the test fails or `--nocapture` is passed.
2. compiletest chooses whether to print the output from any given process.
3. run-make-support chooses what output to print.
This modifies 2 and 3.
- compiletest: Don't require both `--verbose` and `--nocapture` to show the output of run-make tests.
- compiletest: Print the output from `rmake` processes if they succeed. Previously this was only printed on failure.
- compiletest: Distinguish rustc and rmake stderr by printing the command name (e.g. "--stderr--" to "--rustc stderr--").
- run-make-support: Unconditionally print the needle/haystack being searched. Previously this was only printed on failure.
Before:
```
$ x t tests/run-make/linker-warning --force-rerun -- --nocapture
running 1 tests
.
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 281.64ms
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture 2>&1 | wc -l
1004
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture | tail -n40
running 1 tests
------stdout------------------------------
------stderr------------------------------
warning: unused import: `std::path::Path`
--> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:1:5
|
1 | use std::path::Path;
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `run_make_support::rfs::remove_file`
--> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:3:5
|
3 | use run_make_support::rfs::remove_file;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: 2 warnings emitted
------------------------------------------
test [run-make] tests/run-make/linker-warning ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 285.89ms
```
After:
```
Testing stage1 compiletest suite=run-make mode=run-make (x86_64-unknown-linux-gnu)
running 1 tests
------rmake stdout------------------------------
------rmake stderr------------------------------
assert_contains_regex:
=== HAYSTACK ===
error: linking with `./fake-linker` failed: exit status: 1
|
= note: LC_ALL="C" PATH="/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin:...:/bin" VSLANG="1033" "./fake-linker" "-m64" "/tmp/rustcYqdAZT/symbols.o" "main.main.d17f5fbe6225cf88-cgu.0.rcgu.o" "main.2uoctswmurc6ir5rvoay0p9ke.rcgu.o" "-Wl,--as-needed" "-Wl,-Bstatic" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-B/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/test/run-make/linker-warning/rmake_out" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "run_make_error"
= note: error: baz
error: aborting due to 1 previous error
=== NEEDLE ===
fake-linker.*run_make_error
assert_not_contains_regex:
=== HAYSTACK ===
=== NEEDLE ===
fake-linker.*run_make_error
------------------------------------------
.
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 314.81ms
```
r? `@jieyouxu`
|
|
|
|
|