1
Fork 0
Commit graph

246922 commits

Author SHA1 Message Date
Esteban Küber
f566867ace Add flatmap/flat_map -> and_then suggestions 2024-02-22 18:05:28 +00:00
Esteban Küber
caa216d245 Tweak wording of "implemented trait isn't imported" suggestion 2024-02-22 18:05:27 +00:00
Esteban Küber
14277ef201 Better account for associated const found for fn call expr 2024-02-22 18:04:55 +00:00
Esteban Küber
76885673d6 fix test 2024-02-22 18:04:55 +00:00
Esteban Küber
e1e4da2b0a Make confusable suggestions verbose 2024-02-22 18:04:55 +00:00
Esteban Küber
385eea1d46 Consider methods from traits when suggesting typos
Do not provide a structured suggestion when the arguments don't match.

```
error[E0599]: no method named `test_mut` found for struct `Vec<{integer}>` in the current scope
  --> $DIR/auto-ref-slice-plus-ref.rs:7:7
   |
LL |     a.test_mut();
   |       ^^^^^^^^
   |
   = help: items from traits can only be used if the trait is implemented and in scope
note: `MyIter` defines an item `test_mut`, perhaps you need to implement it
  --> $DIR/auto-ref-slice-plus-ref.rs:14:1
   |
LL | trait MyIter {
   | ^^^^^^^^^^^^
help: there is a method `get_mut` with a similar name, but with different arguments
  --> $SRC_DIR/core/src/slice/mod.rs:LL:COL
```

Consider methods beyond inherent ones when suggesting typos.

```
error[E0599]: no method named `owned` found for reference `&dyn Foo` in the current scope
  --> $DIR/object-pointer-types.rs:11:7
   |
LL |     fn owned(self: Box<Self>);
   |                    --------- the method might not be found because of this arbitrary self type
...
LL |     x.owned();
   |       ^^^^^ help: there is a method with a similar name: `to_owned`
```

Fix #101013.
2024-02-22 18:04:55 +00:00
Esteban Küber
d30dfb0af7 Provide more and more accurate suggestions when calling the wrong method
```
error[E0308]: mismatched types
  --> $DIR/rustc_confusables_std_cases.rs:20:14
   |
LL |     x.append(42);
   |       ------ ^^ expected `&mut Vec<{integer}>`, found integer
   |       |
   |       arguments to this method are incorrect
   |
   = note: expected mutable reference `&mut Vec<{integer}>`
                           found type `{integer}`
note: method defined here
  --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
help: you might have meant to use `push`
   |
LL |     x.push(42);
   |       ~~~~
```
2024-02-22 18:04:55 +00:00
Esteban Küber
e13d452111 drive-by fmt cleanup 2024-02-22 18:04:55 +00:00
Esteban Küber
0e89465672 On type error of method call arguments, look at confusables for suggestion 2024-02-22 18:04:55 +00:00
Esteban Küber
e5b3c7ef14 Add rustc_confusables annotations to some stdlib APIs
Help with common API confusion, like asking for `push` when the data structure really has `append`.

```
error[E0599]: no method named `size` found for struct `Vec<{integer}>` in the current scope
  --> $DIR/rustc_confusables_std_cases.rs:17:7
   |
LL |     x.size();
   |       ^^^^
   |
help: you might have meant to use `len`
   |
LL |     x.len();
   |       ~~~
help: there is a method with a similar name
   |
LL |     x.resize();
   |       ~~~~~~
```

#59450
2024-02-22 18:04:55 +00:00
Esteban Küber
6017de46f7 When encountering <&T as Clone>::clone(x) because T: Clone, suggest #[derive(Clone)]
CC #40699.
2024-02-22 18:01:20 +00:00
lcnr
16350d76d8 add comment 2024-02-22 18:54:51 +01:00
lcnr
db950efbc3 region unification update universe of region vars 2024-02-22 18:54:51 +01:00
lcnr
c71484eefd change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
Matthias Krüger
4537e6d120
Rollup merge of #121452 - jonathanpallant:patch-1, r=Amanieu
Add new maintainers to nto-qnx.md

[Ferrous Systems](https://ferrous-systems.com) are volunteering myself and `@japaric` as co-maintainers of the QNX targets.
2024-02-22 18:09:55 +01:00
Matthias Krüger
5401098ead
Rollup merge of #121441 - lcnr:typesystem-cleanup, r=compiler-errors
`DefId`  to `LocalDefId`
2024-02-22 18:09:55 +01:00
Matthias Krüger
e064bf639b
Rollup merge of #121439 - jrudolph:patch-1, r=bjorn3
Fix typo in metadata.rs doc comment
2024-02-22 18:09:55 +01:00
Matthias Krüger
01ec4eb319
Rollup merge of #121427 - nnethercote:fix-Rocket, r=oli-obk
Fix panic when compiling `Rocket`.

This panic was reported [here](https://github.com/rust-lang/rust/pull/120576#issuecomment-1957515484).

r? ``@oli-obk``
2024-02-22 18:09:54 +01:00
Matthias Krüger
47bf8a6c28
Rollup merge of #121401 - eltociear:patch-25, r=nnethercote
Fix typo in serialized.rs

accomodate -> accommodate
2024-02-22 18:09:54 +01:00
Matthias Krüger
5a87e13057
Rollup merge of #121393 - Nadrieril:match-lowering-testcase, r=matthewjasper
match lowering: Introduce a `TestCase` enum to replace most matching on `PatKind`

Introduces `TestCase` that represents the specific outcome of a test. It complements `TestKind` which represents a test. In `MatchPair::new()` we select the appropriate `TestCase` for the pattern, and after that we almost never have to inspect the pattern directly during match lowering.

Together with https://github.com/rust-lang/rust/pull/120904, this makes `MatchPair` into a standalone abstraction that hides the details of `thir::Pat`. This will become even truer in the next PR where I make `TestCase` handle or patterns. This opens the door to a lot of future simplifications.

r? `@matthewjasper`
2024-02-22 18:09:53 +01:00
Matthias Krüger
379ef9bd36
Rollup merge of #121386 - oli-obk:no_higher_ranked_opaques, r=lcnr
test that we do not support higher-ranked regions in opaque type inference

We already do all the right checks in `check_opaque_type_parameter_valid`, and we have done so since at least 2 years.

I collected the tests from https://github.com/rust-lang/rust/pull/116935 and https://github.com/rust-lang/rust/pull/100503 and added some more

cc https://github.com/rust-lang/rust/issues/96146

r? `@lcnr`
2024-02-22 18:09:52 +01:00
Matthias Krüger
702225e290
Rollup merge of #120598 - compiler-errors:no-rigid-check, r=lcnr
No need to `validate_alias_bound_self_from_param_env` in `assemble_alias_bound_candidates`

We already fully normalize the self type before we reach `assemble_alias_bound_candidates`, so there's no reason to double check that a projection is truly rigid by checking param-env bounds.

I think this is also blocked on us making sure to always normalize opaques: #120549.

r? lcnr
2024-02-22 18:09:52 +01:00
Oli Scherer
1efb7479ef Remove some annotations that just specify the default 2024-02-22 16:56:26 +00:00
lcnr
49dc0f22f4 do not use <: in subtyping overflow msg 2024-02-22 17:43:59 +01:00
lcnr
f7cdff825c overflow errors: change source to a concrete enum 2024-02-22 17:43:57 +01:00
bors
f62f490fd4 Auto merge of #121370 - jieyouxu:migrate-compiletest-directives, r=oli-obk
Migrate compiletest to use `ui_test`-style `//@` directives

## Preface

There's an on-going effort to rewrite parts of or the entirety of compiletest
(<https://github.com/rust-lang/compiler-team/issues/536>). A step towards this involve migrating
compiletest tests to use the [`ui_test`](https://github.com/oli-obk/ui_test) framework, which
involves changing compiletest directives in `// <directive-name>` style to `ui_test`
`//@ <directive-name>` style (https://github.com/rust-lang/compiler-team/issues/512).

This PR aims to implement the directive-style change from `//` to `//`@`` for the remaining
non-"ui" test suite tests.

## Key Changes

1. All `tests/` tests now use `//`@`` directives.
2. Compiletest only accepts `//`@`` and issues an error if an old-style directive is detected.
3. `// ignore-tidy` and `// ignore-tidy-*` are considered tidy directives and are ignored by
   compiletest header parsing.

## Diff Generation

The diff is generated by:

- Collecting directives from `tests/` via hijacking compiletest to emit successfully parsed
  directive lines.
- Using a migration tool
  (<https://github.com/jieyouxu/compiletest-ui_test-header-migration/tree/master>) to replace
  `//` directives in compiletest tests with `//`@`.`

### Reproduction Steps

0. Delete the temporary file `$RUSTC_REPO_PATH/build/<target_triple>/test/__directive_lines.txt`,
   if the collection script was previously ran.
1. Use the <https://github.com/jieyouxu/rust/tree/collect-test-directives> collect-test-directives
   script, which outputs a temporary file recording headers occuring in each compiletest test.
   - You need to checkout this branch: `git checkout collect-test-directives`.
   - This needs to be rebased on latest master to ensure up-to-date test directives can be collected.
   - You need to run `./x test` on each of the `test/*` subfolders once:

        ```bash
        ./x test tests/assembly/ --stage 1 --force-rerun
        ./x test tests/codegen/ --stage 1 --force-rerun
        ./x test tests/codegen-units/ --stage 1 --force-rerun
        ./x test tests/coverage/ --stage 1 --force-rerun
        ./x test tests/coverage-run-rustdoc/ --stage 1 --force-rerun
        ./x test tests/debuginfo/ --stage 1 --force-rerun
        ./x test tests/incremental/ --stage 1 --force-rerun
        ./x test tests/mir-opt/ --stage 1 --force-rerun
        ./x test tests/pretty/ --stage 1 --force-rerun
        ./x test tests/run-make/ --stage 1 --force-rerun
        ./x test tests/run-make-fulldeps/ --stage 1 --force-rerun
        ./x test tests/run-pass-valgrind/ --stage 1 --force-rerun
        ./x test tests/rustdoc/ --stage 1 --force-rerun
        TARGET=<target-triple> ./x test tests/rustdoc-gui/ --stage 1 --force-rerun
        ./x test tests/rustdoc-js/ --stage 1 --force-rerun
        ./x test tests/rustdoc-js-std/ --stage 1 --force-rerun
        ./x test tests/rustdoc-json/ --stage 1 --force-rerun
        ./x test tests/rustdoc-ui/ --stage 1 --force-rerun
        ./x test tests/ui/ --stage 1 --force-rerun
        ./x test tests/ui-fulldeps/ --stage 1 --force-rerun
        ```

2. Checkout the `migrate-compiletest-directives` branch.
3. Run the migration tool <https://github.com/jieyouxu/compiletest-ui_test-header-migration>.
4. Check that the migration at least does not cause test failures if you change compiletest to
   accept `//`@`` directives only. This is also required if the test outputs somehow need to be
   blessed.
   - `RUSTC_TEST_FAIL_FAST=1 ./x test tests/<secondary-directory>  --stage 1 --bless`
5. Confirm that there is no difference after running the migration tool when you are on the
   `migrate-compiletest-directives` branch.

## Follow Up Work

- [ ] Adjust rustc-dev-guide docs for compiletest directives (this time for all the other suites and modes). <https://github.com/rust-lang/rustc-dev-guide/pull/1895>.
2024-02-22 16:39:09 +00:00
lcnr
f392a870e9 freshen: resolve root vars
Without doing so we use the same candidate cache entry
for `?0: Trait<?1>` and `?0: Trait<?0>`. These goals are different
and we must not use the same entry for them.
2024-02-22 17:29:26 +01:00
lcnr
91535ad026 remove sub_relations from infcx, recompute in diagnostics
we don't track them when canonicalizing or when freshening,
resulting in instable caching in the old solver, and issues when
instantiating query responses in the new one.
2024-02-22 17:29:25 +01:00
Markus Reiter
b74d8db9d2
Fix example. 2024-02-22 17:16:29 +01:00
许杰友 Jieyou Xu (Joe)
cd25009469
Re-bless tests/pretty 2024-02-22 16:04:05 +00:00
许杰友 Jieyou Xu (Joe)
6e48b96692
[AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
许杰友 Jieyou Xu (Joe)
cbf10affb0
Ignore tidy linelength 2024-02-22 16:04:04 +00:00
许杰友 Jieyou Xu (Joe)
be94059be9
Update tidy target_specific_tests to account for //@ directives 2024-02-22 16:04:03 +00:00
许杰友 Jieyou Xu (Joe)
95f4d4da43
Update tidy target_policy to account for //@ directives 2024-02-22 16:04:03 +00:00
许杰友 Jieyou Xu (Joe)
90a189c19b
Update compiletest to only accept //@ directives 2024-02-22 16:04:03 +00:00
许杰友 Jieyou Xu (Joe)
0840502351
Update list of known directive names for diagnostics 2024-02-22 16:04:03 +00:00
许杰友 Jieyou Xu (Joe)
5fe4e226c9
Fix tests/assembly/stack-protector/stack-protector-target-support.rs
Previously the test seems to not actually test redox.
2024-02-22 16:04:02 +00:00
James Dietz
669f891845 remove exception 2024-02-22 10:04:20 -05:00
bors
933a05bd0b Auto merge of #121372 - clubby789:test-all-tests, r=onur-ozkan
Make `x test tests` work

Fixes #97314

This makes `x test tests` work, and be roughly equivalent to `x test tests/*`. The `--dry-run` output is identical, except for errors on the non-test items in `tests` and a couple of things being in a different order (where path != struct name).

This probably needs a test, but I'm not sure of the best way to do it.
2024-02-22 14:39:16 +00:00
Oli Scherer
e4622e0608 report_mismatch did not actually report anymore 2024-02-22 14:24:25 +00:00
Markus Reiter
0c474acdfa
Use generic NonZero everywhere else. 2024-02-22 15:17:34 +01:00
Markus Reiter
36d194f561
Use generic NonZero everywhere in alloc. 2024-02-22 15:17:34 +01:00
Markus Reiter
e0732e42d8
Use generic NonZero everywhere in std. 2024-02-22 15:17:33 +01:00
Markus Reiter
14ed426eec
Use generic NonZero everywhere in core. 2024-02-22 15:17:33 +01:00
Oli Scherer
e3021eb245 Preserve the Span from prove_predicate all the way to registering opaque types 2024-02-22 14:05:01 +00:00
Jonathan Pallant
a2a6e479a4
Add new maintainers to nto-qnx.md
Ferrous Systems are volunteering myself and Jorge as co-maintainers of the QNX targets.
2024-02-22 13:45:10 +00:00
bors
1bb3a9f67a Auto merge of #121309 - Nilstrieb:inline-all-the-fallbacks, r=oli-obk
Make intrinsic fallback bodies cross-crate inlineable

This change was prompted by the stage1 compiler spending 4% of its time when compiling the polymorphic-recursion MIR opt test in `unlikely`.

Intrinsic fallback bodies like `unlikely` should always be inlined, it's very silly if they are not. To do this, we enable the fallback bodies to be cross-crate inlineable. Not that this matters for our workloads since the compiler never actually _uses_ the "fallback bodies", it just uses whatever was cfg(bootstrap)ped, so I've also added `#[inline]` to those.

See the comments for more information.

r? oli-obk
2024-02-22 12:07:08 +00:00
klensy
53efefb3c2 dedupe env_logger, drop is-terminal 2024-02-22 14:35:21 +03:00
klensy
15bc68118f bump tabled 2024-02-22 14:17:59 +03:00
klensy
0b44330c38 bump sysinfo 2024-02-22 14:01:13 +03:00