1
Fork 0
Commit graph

272980 commits

Author SHA1 Message Date
Esteban Küber
fa331f4d0d Support x-crate default fields 2024-12-09 21:58:07 +00:00
Esteban Küber
0757641f4d Unconditionally error at definition if default field value has const errors
Emit E0080 always on struct definition with default fields that have unconditional const errors and remove `default_field_always_invalid_const` lint.
2024-12-09 21:58:00 +00:00
Esteban Küber
2d6e763cc6 Disallow #[default] Variant {} regardless of feature flag 2024-12-09 21:55:13 +00:00
Esteban Küber
148a77dfde review comments: rewordings 2024-12-09 21:55:13 +00:00
Esteban Küber
e0752ad257 Provide diagnostic for Struct(a, .., z) expression
People might extrapolate from `Struct { .. }` that `Struct(..)` would work, but it doesn't.
2024-12-09 21:55:12 +00:00
Esteban Küber
550bcae8aa Detect struct S(ty = val);
Emit a specific error for unsupported default field value syntax in tuple structs.
2024-12-09 21:55:12 +00:00
Esteban Küber
9ac95c10c0 Introduce default_field_values feature
Initial implementation of `#[feature(default_field_values]`, proposed in https://github.com/rust-lang/rfcs/pull/3681.

Support default fields in enum struct variant

Allow default values in an enum struct variant definition:

```rust
pub enum Bar {
    Foo {
        bar: S = S,
        baz: i32 = 42 + 3,
    }
}
```

Allow using `..` without a base on an enum struct variant

```rust
Bar::Foo { .. }
```

`#[derive(Default)]` doesn't account for these as it is still gating `#[default]` only being allowed on unit variants.

Support `#[derive(Default)]` on enum struct variants with all defaulted fields

```rust
pub enum Bar {
    #[default]
    Foo {
        bar: S = S,
        baz: i32 = 42 + 3,
    }
}
```

Check for missing fields in typeck instead of mir_build.

Expand test with `const` param case (needs `generic_const_exprs` enabled).

Properly instantiate MIR const

The following works:

```rust
struct S<A> {
    a: Vec<A> = Vec::new(),
}
S::<i32> { .. }
```

Add lint for default fields that will always fail const-eval

We *allow* this to happen for API writers that might want to rely on users'
getting a compile error when using the default field, different to the error
that they would get when the field isn't default. We could change this to
*always* error instead of being a lint, if we wanted.

This will *not* catch errors for partially evaluated consts, like when the
expression relies on a const parameter.

Suggestions when encountering `Foo { .. }` without `#[feature(default_field_values)]`:

 - Suggest adding a base expression if there are missing fields.
 - Suggest enabling the feature if all the missing fields have optional values.
 - Suggest removing `..` if there are no missing fields.
2024-12-09 21:55:01 +00:00
Alona Enraght-Moony
e6bc4278f2 jsondocck: Parse, don't validate commands. 2024-12-09 21:46:22 +00:00
Yuki Sireneva
9aebb5c930
crates/r-a: Fix typo in debug message 2024-12-10 00:13:17 +03:00
Kirill Bulatov
160cb324c1 Unite more bool hashing 2024-12-09 22:38:55 +02:00
Kirill Bulatov
78ea49e4e7 Stop excluding Helix from the general resolve path 2024-12-09 22:26:00 +02:00
Kirill Bulatov
e8e3949698 Always compute the hash when r-a wants the imports to be resolved 2024-12-09 22:26:00 +02:00
Kirill Bulatov
cbc0069939 Draft completion hashing 2024-12-09 22:26:00 +02:00
Sven Kanoldt
7951d19280
Apply suggestions from code review
commit suggestion of not always pretty printing

Co-authored-by: Urgau <3616612+Urgau@users.noreply.github.com>
2024-12-09 20:51:34 +01:00
roife
ab6382e460 minor: enhance name suggestion for Arc<T> and Rc<T> 2024-12-10 02:47:52 +08:00
Esteban Küber
5404cbb996 Fix typo in RFC mention 3598 -> 3593
https://github.com/rust-lang/rfcs/blob/master/text/3593-unprefixed-guarded-strings.md
2024-12-09 17:16:14 +00:00
bors
a224f3807e Auto merge of #134064 - jieyouxu:revert-131669, r=ChrisDenton
Revert #131669 due to ICEs

Revert [lint: change help for pointers to dyn types in FFI #131669](https://github.com/rust-lang/rust/pull/131669) due to ICE reports:

- <https://github.com/rust-lang/rust/issues/134059> (real-world)
- <https://github.com/rust-lang/rust/issues/134060> (fuzzing)

Closes #134060.

The revert criteria I used to assess whether to post this revert was:

1. It's not trivial to fix-forward. (1) The implementation itself is tricky due to `tcx.is_sized` query not being very trivial. (2) It will need more extensive test coverage for different ty kinds.
2. It is impacting real-world crates, i.e. #134059.
3. `improper_ctypes_definitions` is a warn-by-default lint.

This revert is without prejudice to relanding the changes. The changes can be re-landed with those cases addressed and stronger test coverage.

A rough regression test corresponding to the fuzzed example reported in #134060 is added to check that the revert worked, it is not sufficient for the lint test coverage when the lint improvements are to be relanded. Please feel free to improve the test in the reland.

r? `@workingjubilee` (or compiler)
cc `@niacdoial` (PR author)
2024-12-09 17:05:29 +00:00
Lukas Wirth
91adfec2f0
Merge pull request #18647 from Veykril/push-nsrrmmnzzoym
internal: Disable pipe on typing handler
2024-12-09 15:06:29 +00:00
Lukas Wirth
2ad6d7103c Disable pipe on typing handler 2024-12-09 15:52:04 +01:00
Eric Huss
a97404eee3 Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
Ralf Jung
ed8ee39930 fix ICE on type error in promoted 2024-12-09 15:17:26 +01:00
Ralf Jung
73dc95dad1 interpret: clean up deduplicating allocation functions 2024-12-09 15:12:33 +01:00
Lukas Wirth
244b1fd34e
Merge pull request #18645 from Veykril/push-yruoyrvrsntw
fix: Non-exhaustive structs may be empty
2024-12-09 13:26:47 +00:00
Lukas Wirth
67c9287863 fix: Non-exhaustive structs may be empty 2024-12-09 14:12:22 +01:00
DianQK
d0986f45e0
dataflow_const_prop: do not eval a ptr address in SwitchInt 2024-12-09 21:06:29 +08:00
clubby789
a6c462863d compiletest: print{,ln}! -> eprint{,ln}!
Co-authored-by: Jieyou Xu <jieyouxu@outlook.com>
2024-12-09 20:06:53 +08:00
clubby789
15d7331a01 bootstrap: print{,ln}! -> eprint{,ln}! 2024-12-09 19:41:56 +08:00
Jakub Beránek
4f14890394
Configure renovatebot 2024-12-09 12:07:11 +01:00
Lukas Wirth
641bca6d62
Merge pull request #18644 from Veykril/push-nolvpzqvoqwx
Remove patch sysroot cfg-if hack
2024-12-09 10:58:27 +00:00
Lukas Wirth
dc9bcef471
Merge pull request #18643 from Veykril/push-muwuzmowptnn
internal: Rename test fixture crates to ra_test_fixture
2024-12-09 10:54:51 +00:00
Lukas Wirth
770265d057 Remove patch sysroot cfg-if hack 2024-12-09 11:42:51 +01:00
Lukas Wirth
b9f809a4b5 Rename test fixture crates to ra_test_fixture 2024-12-09 11:40:21 +01:00
Nicholas Nethercote
b59c4dc261 Remove an out-of-date comment.
The part about zero-sized structures is totally wrong. The rest of
it has almost no explanatory value; there are better explanations in
comments elsewhere.
2024-12-09 20:49:36 +11:00
Nicholas Nethercote
db760e27fd Move write_graphviz_results from results.rs to graphviz.rs.
It's more graphviz-y than it is results-y. This lets us reduce
visibility of several types in `graphviz.rs`.
2024-12-09 20:49:36 +11:00
Laurențiu Nicola
be43a67703
Merge pull request #18642 from lnicola/rm-minicore-unstable
minor: Remove unstable attributes in minicore
2024-12-09 09:41:53 +00:00
许杰友 Jieyou Xu (Joe)
38bfd88db7 Add regression test for #134060
Mostly just to check that the lint impl doesn't ICE from an easy case.
2024-12-09 17:39:08 +08:00
许杰友 Jieyou Xu (Joe)
1fcbb1e338 Revert #131669 due to ICEs
Revert <https://github.com/rust-lang/rust/pull/131669> due to ICE
reports:

- <https://github.com/rust-lang/rust/issues/134059> (real-world)
- <https://github.com/rust-lang/rust/issues/134060> (fuzzing)

The changes can be re-landed with those cases addressed.

This reverts commit 703bb98230, reversing
changes made to f415c07494.
2024-12-09 17:31:16 +08:00
Laurențiu Nicola
4148b5345d Remove unstable attributes in minicore 2024-12-09 11:17:17 +02:00
Lukas Wirth
c7b6c95ccf
Merge pull request #18441 from Veykril/lw-psyvmlotlvqn
internal: Do not cache the config directory path
2024-12-09 08:47:20 +00:00
Lukas Wirth
3fc7101b96 Fix config guard lock for ratoml tests 2024-12-09 09:33:02 +01:00
Lukas Wirth
c6e8a0e209
Merge pull request #18635 from ChayimFriedman2/fix-test
minor: Fix a test that didn't test what it should
2024-12-09 08:02:05 +00:00
Lukas Wirth
b4c83da1ea
Merge pull request #18531 from Giga-Bowser/map-new-nodes
fix: Map new replacement nodes to their mutable equivalents in `SyntaxEditor`
2024-12-09 08:01:55 +00:00
bors
f6cb952dc1 Auto merge of #133891 - nnethercote:MixedBitSet, r=Mark-Simulacrum
Introduce `MixedBitSet`

`ChunkedBitSet` is good at avoiding excessive memory usage for programs with very large functgions where dataflow bitsets have very large domain sizes. But it's overly heavyweight for small bitsets, because any non-empty `ChunkedBitSet` takes up at least 256 bytes.

This PR introduces `MixedBitSet`, which is a simple bitset that uses `BitSet` for small/medium bitsets and `ChunkedBitSet` for large bitsets. It's a speed and memory usage win.

r? `@Mark-Simulacrum`
2024-12-09 07:13:11 +00:00
Michael Howell
b5318549c7 rustdoc: rename issue-\d+.rs tests to have meaningful names 2024-12-08 21:59:23 -07:00
Michael Howell
999aed4bff Add URL to test cases 2024-12-08 21:39:48 -07:00
bors
1b3fb31675 Auto merge of #134052 - matthiaskrgr:rollup-puxwqrk, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #133567 (A bunch of cleanups)
 - #133789 (Add doc alias 'then_with' for `then` method on `bool`)
 - #133880 (Expand home_dir docs)
 - #134036 (crash tests: use individual mir opts instead of mir-opt-level where easily possible)
 - #134045 (Fix some triagebot mentions paths)
 - #134046 (Remove ignored tests for hangs w/ new solver)
 - #134050 (Miri subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-12-09 03:24:24 +00:00
Matthias Krüger
e01cb62c91
Rollup merge of #134050 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`
2024-12-09 01:56:35 +01:00
Matthias Krüger
86f3ed3e11
Rollup merge of #134046 - lqd:new-solver-hangs, r=compiler-errors
Remove ignored tests for hangs w/ new solver

As asked on zulip [here](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/needs_help.3A.20look.20through.20compare-mode.20hangs).

As far as I can tell there are no more UI tests that hang anymore, so this removes the ignore directives for the compare mode.

(As I was using `--compare-mode new-solver` and that failed in an obscure way without any info about what to do, I've also fixed its error handling in `compiletest`: it didn't show the invalid `--compare-mode`, nor the valid values one can pass).

r? lcnr
2024-12-09 01:56:35 +01:00
Matthias Krüger
6f89a6158c
Rollup merge of #134045 - ehuss:triagebot-path-fixes, r=compiler-errors
Fix some triagebot mentions paths

This fixes some mentions paths in `triagebot.toml` that are no longer valid.

* rustdoc themes were merged into rustdoc.css (which already has a mention, and unfortunately can't independently mention the ayu theme). https://github.com/rust-lang/rust/pull/115829 cc `@GuillaumeGomez` `@Cldfire`
* The entry for `inspect_obligations.rs` was never correct, from https://github.com/rust-lang/rust/pull/122385. cc `@lcnr` `@compiler-errors`
* The entry for `need_type_info.rs` was moved in https://github.com/rust-lang/rust/pull/127501
2024-12-09 01:56:34 +01:00
Matthias Krüger
273a359b90
Rollup merge of #134036 - matthiaskrgr:opppt, r=saethlin
crash tests: use individual mir opts instead of mir-opt-level where easily possible

r? `@saethlin`
2024-12-09 01:56:34 +01:00