1
Fork 0
Commit graph

272945 commits

Author SHA1 Message Date
Esteban Küber
4007fc9a0f Tweak wording of non-const traits used as const bounds
Use verbose suggestions and add additional labels/notes.

Add more test cases for stable/nightly and feature enabled/disabled.
2024-12-10 00:38:05 +00:00
bors
974ccc12e6 Auto merge of #129514 - estebank:default-field-values, r=compiler-errors
Introduce `default_field_values` feature

Initial implementation of `#[feature(default_field_values]`, proposed in https://github.com/rust-lang/rfcs/pull/3681.

We now parse const expressions after a `=` in a field definition, to specify a `struct` field default value.

We now allow `Struct { field, .. }` where there's no base after `..`.

`#[derive(Default)]` now uses the default value if present, continuing to use `Default::default()` if not.

```rust
#[derive(Debug)]
pub struct S;

#[derive(Debug, Default)]
pub struct Foo {
    pub bar: S = S,
    pub baz: i32 = 42 + 3,
}

fn main () {
    let x = Foo { .. };
    let y = Foo::default();
    let z = Foo { baz: 1, .. };

    assert_eq!(45, x.baz);
    assert_eq!(45, y.baz);
    assert_eq!(1, z.baz);
}
```
2024-12-10 00:07:00 +00:00
Waffle Lapkin
05d83185c3
provide libz.so.1 in the nix-dev-shell
`libz.so.1` is needed for some (?) things...

i personally found myself in need of it when running `x t linkchecker`,
which failed when running cargo build script or something.

although there are also mentions of rustc itself needing it:
<https://github.com/NixOS/nixpkgs/issues/92946>
2024-12-10 00:24:21 +01:00
Waffle Lapkin
6058cdcccc
remove instructions to git exclude files in src/nix-dev-shell/envrc-*
this is no longer needed as `.gitignore` contains both `/.envrc` and
`flake.lock` (and also `/.direnv/`)
2024-12-10 00:11:27 +01:00
Eric Holk
b9afc78585
Remove rustc_const_stable attribute on const NOOP
This was accidentally reintroduced while editing #133089.
2024-12-09 15:08:30 -08:00
Waffle Lapkin
5f99e96fbb
only ignore {flake,default}.nix and {.envrc,.direnv/} in the root
this makes it so files in `src/nix-dev-shell` are *not* ignored, as they
should not be. note that `flake.lock` is still ignored globally.
2024-12-10 00:08:26 +01:00
Kirill Bulatov
61c0b269d8 Clippy fixes 2024-12-10 01:04:02 +02:00
Kirill Bulatov
b203c73ccf Avoid hashing completion-related ranges as those may change during /resolve query 2024-12-10 00:45:57 +02:00
León Orell Valerian Liehr
5a33ab0d71
Rollup merge of #134084 - estebank:typo, r=compiler-errors
Fix typo in RFC mention 3598 -> 3593

https://github.com/rust-lang/rfcs/blob/master/text/3593-unprefixed-guarded-strings.md
2024-12-09 23:39:08 +01:00
León Orell Valerian Liehr
cb5f03cbce
Rollup merge of #134073 - DianQK:fix-131227, r=oli-obk
dataflow_const_prop: do not eval a ptr address in SwitchInt

Fixes #131227.
2024-12-09 23:39:07 +01:00
León Orell Valerian Liehr
e0bec9dabb
Rollup merge of #134055 - RalfJung:interpret-alloc-dedup, r=oli-obk
interpret: clean up deduplicating allocation functions

The "align" and "kind" arguments would be largely ignored in the "dedup" case, so let's move that to entirely separate function.

Let's also remove support for old-style miri_resolve_frame while we are at it. The docs have already said for a while that this must be set to 1.
2024-12-09 23:39:07 +01:00
León Orell Valerian Liehr
76fbe8d503
Rollup merge of #134053 - notriddle:notriddle/issue-d, r=GuillaumeGomez
rustdoc: rename `issue-\d+.rs` tests to have meaningful names (part 10)

Follow up https://github.com/rust-lang/rust/pull/130287 et al

As always, it's easier to review the commits one at a time. Don't use the Files Changed tab. It's confusing.
2024-12-09 23:39:06 +01:00
León Orell Valerian Liehr
0cb12f9e84
Rollup merge of #134043 - ehuss:unicode-version, r=jieyouxu
Add test to check unicode identifier version

This adds a test to verify which version of Unicode is used for identifiers. This is part of the language, documented at https://doc.rust-lang.org/nightly/reference/identifiers.html#r-ident.unicode. The version here often changes implicitly due to dependency updates pulling in new versions, and thus we often don't notice it has changed leaving the documentation out of date. The intent here is to have a canary to give us a notification when it changes so that we can update the documentation.
2024-12-09 23:39:05 +01:00
León Orell Valerian Liehr
b282774aaf
Rollup merge of #134040 - clubby789:bootstrap-eprintln, r=jieyouxu
bootstrap: print{ln}! -> eprint{ln}! (take 2)

r? `@jieyouxu`

Reland of #133817 with the `print!`s changed as well.
2024-12-09 23:39:05 +01:00
León Orell Valerian Liehr
e0f3db0056
Rollup merge of #134032 - snprajwal:fix-docs, r=joboet
docs: better examples for `std::ops::ControlFlow`

Fixes #133963. Lesson learnt, never force-push from a bare clone of a repo 💀
2024-12-09 23:39:04 +01:00
León Orell Valerian Liehr
780b5bb1e1
Rollup merge of #134012 - aarikpokras:patch-1, r=saethlin
Grammar fixes

Fixed some grammar in README.md
2024-12-09 23:39:03 +01:00
León Orell Valerian Liehr
df5ec039fa
Rollup merge of #133996 - Zalathar:ui-link-native-libs, r=jieyouxu
Move most tests for `-l` and `#[link(..)]` into `tests/ui/link-native-libs`

Tests for the closely-related `-l` flag and `#[link(..)]` attribute are spread across a few different directories, and in some cases have ended up in a test directory intended for other linker-related functionality.

This PR moves most of them into a single `tests/ui/link-native-libs` directory.

---

Part of #133895.

try-job: i686-mingw

r? jieyouxu
2024-12-09 23:39:03 +01:00
Aarik Pokras
2d71dd5a0f Grammar fixes 2024-12-09 17:17:27 -05:00
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